From dd5bad092683e027a1af059b1b51cbf8e30cdb1b Mon Sep 17 00:00:00 2001 From: anovazzi1 Date: Tue, 21 May 2024 19:19:47 -0300 Subject: [PATCH 1/3] Feature: Folders, Logs, Records Output and more (#1938) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add Folder model and related classes * Add Folder model and related classes * Add default folder creation for new users * Add folders_router to APIRouter in router.py * Add FolderReadWithFlows * Added Logs button on MenuBar and Logs modal with tabs * Refactor monitor.py to include response_model for /transactions endpoint * chore: Add getTransactionTable function to API controller * starting folder project * add packages * โœจ (index.tsx): add ConfirmationModal component to allow users to delete selected flows with a confirmation prompt * โฌ†๏ธ (frontend/package.json): upgrade react-hook-form dependency to version 7.51.4 to ensure compatibility with other packages and improve functionality * update tableType and getTransactionTable * Feat: Create Record Output component file * chore: Remove unnecessary comma in AddNewVariableButton component * refactor: Update FormControl and FormField imports in cardComponent * refactor: Update FormControl and FormField imports in cardComponent * feat: Add CustomInputPopover component for inputComponent * refactor: Update headerComponent to use anchor tag instead of Button component for select all functionality * refactor: Update SidebarNav component to handle both link and button items * chore: Add FolderIcon and FolderPlusIcon to nodeIconsLucide * refactor: Create Form component and related UI components for form handling * feat: Add FolderForms component for creating new folders * refactor: Add objectOptions and isObjectOption to InputComponentType * add resolvers * feat: Add flow_id parameter to get_transactions API endpoint * Refactor vertex logging to use shared log_transaction function * ๐Ÿ”„ (utils.py): refactor build_clean_params function to be shared between edge and vertex modules for code reusability and maintainability ๐Ÿ“ (utils.py): add build_clean_params function to vertex module to avoid circular import and improve code organization * โ™ป๏ธ (utils.py): move import of Vertex class to be under TYPE_CHECKING block to improve code readability and maintainability * Feat: Add Record Output into backend * Added Table Output and a mock * Added data that comes from the Backend * Fixed types * mock transaction table * Refactor log_transaction function to include flow_id parameter * ๐Ÿ“ (endpoints.py): import `col` from `sqlmodel` to fix reference error in the code โœจ (endpoints.py): add new endpoint `delete_multiple_flows` to delete multiple flows by their IDs ๐Ÿ“ (endpoints.py): add documentation for the `delete_multiple_flows` endpoint ๐Ÿ“ (folderAccordionComponent/index.tsx): create a new component `FolderAccordionComponent` to display a folder accordion with options ๐Ÿ“ (cardComponent/index.tsx): add conditional rendering for `CardFooter` component to display a form field only if `control` prop is provided ๐Ÿ“ (sidebarComponent/index.tsx): add a new array `folderArray` to store folder data for rendering in the sidebar โœจ (sidebarComponent/index.tsx): add new functionality to handle changing folders in the sidebar โœจ (custom-accordion.tsx): add a custom accordion component to the UI library for better user experience and organization of content โœจ (index.tsx): create a new component called ComponentsComponent to display and manage components or flows in the main page of the application โœจ (emptyComponent/index.tsx): add a new component called EmptyComponent to display a message when there are no flows or components created. It includes a button to create a new flow. โœจ (myCollectionComponent/components/headerTabsSearchComponent/index.tsx): add a new component called HeaderTabsSearchComponent to display tabs for switching between "Flows" and "Components" and a search input. โœจ (myCollectionComponent/components/inputSearchComponent/index.tsx): add a new component called InputSearchComponent to display an input field for searching flows or components. โœจ (myCollectionComponent/components/tabsComponent/index.tsx): add a new component called TabsSearchComponent to display tabs for switching between "Flows" and "Components". โ™ป๏ธ (myCollectionComponent/index.tsx): refactor MyCollectionComponent to include the new HeaderTabsSearchComponent and wrap ComponentsComponent in a div. โœจ (hooks/on-file-drop.tsx): add a new hook called useFileDrop to handle file drop events and upload flows or components. โœจ (MainPage/index.tsx): remove unused imports and sidebarNavItems for "Flows" and "Components" to simplify code and improve maintainability ๐Ÿ“ (MainPage/index.tsx): add handleChangeFolder function to navigate to the selected folder when clicking on a sidebar item โœจ (MainPage/utils/sort-flows.ts): add utility function to sort flows based on updated_at and date_created properties ๐Ÿ“ (routes.tsx): update routes for "flows" and "components" to include sub-routes โ™ป๏ธ (flowsManagerStore.ts): refactor flowsManagerStore to remove unused code, add allFlows state and setAllFlows action, add setSearchFlowsComponents action โœจ (index.ts): add new properties and methods to FlowsManagerStoreType interface to support search functionality for flows components * ๐Ÿ“ (endpoints.py): reformat delete_multiple_flows function definition for better readability and adherence to PEP 8 style guide * feat: Add TableAutoCellRender component for automatic cell rendering in tables * ๐Ÿ“ (index.tsx): Add useEffect import to sidebarComponent/index.tsx to fix missing dependency warning โœจ (index.tsx): Add getFolders import to sidebarComponent/index.tsx to fetch folders data โ™ป๏ธ (index.tsx): Refactor SidebarNav component in sidebarComponent/index.tsx to use useEffect hook for fetching folders data ๐Ÿ“ (index.tsx): Add FolderType entity definition to entities/index.tsx โœจ (index.tsx): Create MainPage component in pages/mainPage/index.tsx to display user projects ๐Ÿ“ (index.tsx): Add imports and types to MainPage component in pages/mainPage/index.tsx โœจ (index.tsx): Add useEffect hook to MainPage component in pages/mainPage/index.tsx to set current flow id to null โœจ (index.tsx): Add navigate function to MainPage component in pages/mainPage/index.tsx to navigate to flow page โœจ (index.tsx): Add openModal and openFolderModal states to MainPage component in pages/mainPage/index.tsx to control modals โœจ (index.tsx): Add dropdownOptions array to MainPage component in pages/mainPage/index.tsx for dropdown button options โœจ (index.tsx): Add sidebarNavItems array to MainPage component in pages/mainPage/index.tsx for sidebar navigation items โ™ป๏ธ (index.tsx): Refactor MainPage component in pages/mainPage/index.tsx to use PageLayout component and render sidebar and outlet โœจ (index.tsx): Add NewFlowModal and FoldersModal components to MainPage component in pages/mainPage/index.tsx ๐Ÿ“ (index.tsx): Add getFolders import to services/index.tsx to fetch folders data โœจ (index.tsx): Add addFolder, updateFolder, deleteFolder, and getFolderById functions to services/index.tsx for CRUD operations on folders โ™ป๏ธ (index.tsx): Refactor routes.tsx to import MainPage component from pages/mainPage/index.tsx * Fixed data gathering, now getting from flowpool * feat: Update get_transactions API endpoint to return TransactionModelResponse objects * refactor(schema.py): remove redundant __str__ method and improve Record class string representation by returning a JSON string of the data attributes fix record table * ๐Ÿ› (langflow/__main__.py): fix create_default_folder_if_it_doesnt_exist function call by passing user.id instead of user object โœจ (endpoints.py): add delete_multiple_flows endpoint to delete multiple flows by their IDs ๐Ÿ“ (flows.py): add download_file endpoint to download all flows as a file ๐Ÿ”ง (folders.py): add read_starter_folders endpoint to read starter folders ๐Ÿ”ง (login.py): fix create_default_folder_if_it_doesnt_exist function call by passing user.id instead of user object ๐Ÿ”ง (users.py): fix create_default_folder_if_it_doesnt_exist function call by passing user.id instead of user object โœจ (setup.py): add folder_id field to Flow model and update create_new_project function to include folder_id parameter ๐Ÿ“ (utils.py): import necessary modules and update function signature to use UUID instead of User object โ™ป๏ธ (utils.py): refactor create_default_folder_if_it_doesnt_exist function to use user_id instead of User object and update SQL query to use UUID ๐Ÿ“ (index.tsx): import useFolderStore from foldersStore โ™ป๏ธ (index.tsx): refactor useEffect to use useFolderStore instead of getFolders function ๐Ÿ“ (index.tsx): import useFolderStore from foldersStore โ™ป๏ธ (index.tsx): refactor useEffect to use useFolderStore instead of getFolders function ๐Ÿ“ (index.tsx): import useFolderStore from foldersStore โ™ป๏ธ (index.tsx): refactor useEffect to use useFolderStore instead of getFolders function ๐Ÿ“ (index.tsx): import useFolderStore from foldersStore โ™ป๏ธ (index.tsx): refactor useEffect to use useFolderStore instead of getFolders function ๐Ÿ“ (index.tsx): import useFolderStore from foldersStore โ™ป๏ธ (index.tsx): refactor useEffect to use useFolderStore instead of getFolders function ๐Ÿ“ (index.tsx): import useFolderStore from foldersStore โ™ป๏ธ (index.tsx): refactor useEffect to use useFolderStore instead of getFolders function ๐Ÿ“ (index.tsx): import useFolderStore from foldersStore โ™ป๏ธ (index.tsx): refactor useEffect to use useFolderStore instead of getFolders function ๐Ÿ“ (index.tsx): import useFolderStore from foldersStore โ™ป๏ธ (index.tsx): refactor useEffect to use useFolderStore instead of getFolders function ๐Ÿ“ (index.tsx): import useFolderStore from foldersStore โ™ป๏ธ (index.tsx): refactor useEffect to use useFolderStore instead of getFolders function ๐Ÿ“ (index.tsx): import useFolderStore from foldersStore โ™ป๏ธ (index.tsx): refactor useEffect to use useFolderStore instead of getFolders function ๐Ÿ“ (index.tsx): import useFolderStore from foldersStore โ™ป๏ธ (index.tsx): refactor useEffect to use useFolderStore instead of getFolders function ๐Ÿ“ (index.tsx): import useFolderStore from foldersStore โ™ป๏ธ (index.tsx): refactor useEffect to use useFolderStore instead of getFolders function ๐Ÿ“ (index.tsx): import useFolderStore from foldersStore โ™ป๏ธ (index.tsx): refactor useEffect to use useFolderStore instead of getFolders function ๐Ÿ“ (index.tsx): import useFolderStore from foldersStore โ™ป๏ธ (index.tsx): refactor useEffect to use useFolderStore instead of getFolders function ๐Ÿ“ (index.tsx): import useFolderStore from foldersStore โ™ป๏ธ (index.tsx): refactor useEffect to use useFolderStore instead of getFolders function ๐Ÿ“ (index.tsx): import useFolderStore from foldersStore โ™ป๏ธ (index.tsx): refactor useEffect to use useFolderStore instead of getFolders function ๐Ÿ“ (index.tsx): import useFolderStore from foldersStore โ™ป๏ธ (index.tsx): refactor useEffect to use useFolderStore instead of getFolders function ๐Ÿ“ (index.tsx): import useFolderStore from foldersStore โ™ป๏ธ (index.tsx): refactor useEffect to use useFolderStore instead of getFolders function ๐Ÿ“ (index.tsx): import useFolderStore from foldersStore โ™ป๏ธ (index.tsx): refactor useEffect to use useFolderStore instead of getFolders function ๐Ÿ“ (index.tsx): import useFolderStore from foldersStore โ™ป๏ธ (index.tsx): refactor useEffect to use useFolderStore instead of getFolders function ๐Ÿ“ (index.tsx): import useFolderStore from foldersStore โ™ป๏ธ (index.tsx): refactor useEffect to use useFolderStore instead of getFolders function ๐Ÿ“ (index.tsx): import useFolderStore from foldersStore โ™ป๏ธ (index.tsx): refactor useEffect to use useFolderStore instead of getFolders function ๐Ÿ“ (index.tsx): import useFolderStore from foldersStore โ™ป๏ธ (index.tsx): refactor useEffect to use useFolderStore instead of getFolders function ๐Ÿ“ (index.tsx): import useFolderStore from foldersStore โ™ป๏ธ (index.tsx): refactor useEffect to use useFolderStore instead of getFolders function ๐Ÿ“ (index.tsx): import useFolderStore from foldersStore โ™ป๏ธ (index.tsx): refactor useEffect to use useFolderStore instead of getFolders function ๐Ÿ“ (index.tsx): import useFolderStore from foldersStore โ™ป๏ธ ( โœจ (services/index.tsx): update API endpoints for getting, adding, and updating folders to match backend routes ๐Ÿš€ (flowsManagerStore.ts): add support for fetching starter projects and filtering them out from the list of flows โ™ป๏ธ (foldersStore.tsx): refactor folder store to use Zustand for state management ๐Ÿ“ (types/zustand/folders/index.ts): add types for the folder store in Zustand * ๐Ÿ“ (App.tsx): Add import statement for useFolderStore from foldersStore to use the getFoldersApi and loadingFolders variables ๐Ÿ“ (App.tsx): Add useEffect hook to call getFoldersApi on component mount ๐Ÿ“ (ComponentsComponent/index.tsx): Add import statement for FlowType from types/flow ๐Ÿ“ (ComponentsComponent/index.tsx): Add import statement for useFolderStore from foldersStore to use the myCollectionFlows variable ๐Ÿ“ (ComponentsComponent/index.tsx): Add const flowsFromFolder to get the flows from the selected folder in useFolderStore ๐Ÿ“ (ComponentsComponent/index.tsx): Add useEffect hook to set the allFlows state to the flowsFromFolder on component mount ๐Ÿ“ (ComponentsComponent/index.tsx): Add useEffect hook to set the allFlows state to the myCollectionFlows.flows on myCollectionFlows change ๐Ÿ“ (ComponentsComponent/index.tsx): Add useEffect hook to filter the flows based on the searchFlowsComponents state ๐Ÿ“ (ComponentsComponent/index.tsx): Add useEffect hook to call getFolderById and setAllFlows on folderId change ๐Ÿ“ (ComponentsComponent/index.tsx): Add isLoadingFolders variable to isLoading in the conditional rendering of the loading page panel ๐Ÿ“ (ComponentsComponent/index.tsx): Add useEffect hook to call getFoldersApi on component mount ๐Ÿ“ (entities/index.tsx): Add import statement for FlowType from types/flow ๐Ÿ“ (sort-flows.ts): Add optional chaining to flows and f in the filter function ๐Ÿ“ (foldersStore.tsx): Add getMyCollectionFolder function to get the My Collection folder and set the myCollectionFlows state ๐Ÿ“ (foldersStore.tsx): Add setMyCollectionFlow function to set the myCollectionFlows state ๐Ÿ“ (foldersStore.tsx): Add myCollectionFlows state to store the My Collection folder and its flows ๐Ÿ“ (foldersStore.tsx): Call getMyCollectionFolder in the getFolders function to get the My Collection folder on folders load ๐Ÿ“ (foldersStore.tsx): Call getMyCollectionFolder in the setFolders function to get the My Collection folder on folders update ๐Ÿ“ (foldersStore.tsx): Call getMyCollectionFolder in the setLoading function to get the My Collection folder on loading change ๐Ÿ“ (foldersStore.tsx): Call getMyCollectionFolder in the setLoadingById function to get the My Collection folder on loadingById change ๐Ÿ“ (foldersStore.tsx): Add myCollectionFlows state to store the My Collection folder and its flows ๐Ÿ“ (foldersStore.tsx): Call getMyCollectionFolder in the getFolders function to get the My Collection folder on folders load ๐Ÿ“ (foldersStore.tsx): Call getMyCollectionFolder in the setFolders function to get the My Collection folder on folders update ๐Ÿ“ (foldersStore.tsx): Call getMyCollectionFolder in the setLoading function to get the My Collection folder on loading change ๐Ÿ“ (foldersStore.tsx): Call getMyCollectionFolder in the setLoadingById function to get the My Collection folder on loadingById change ๐Ÿ“ (foldersStore.tsx): Add myCollectionFlows state to store the My Collection folder and its flows ๐Ÿ“ (foldersStore.tsx): Call getMyCollectionFolder in the getFolders function to get the My Collection folder on folders load ๐Ÿ“ (foldersStore.tsx): Call getMyCollectionFolder in the setFolders function to get the My Collection folder on folders update ๐Ÿ“ (foldersStore.tsx): Call getMyCollectionFolder in the setLoading function to get the My Collection folder on loading change ๐Ÿ“ (foldersStore.tsx): Call getMyCollectionFolder in the setLoadingById function to get the My Collection folder on loadingById change ๐Ÿ“ (foldersStore.tsx): Add myCollectionFlows state to store the My Collection folder and its flows ๐Ÿ“ (foldersStore.tsx): Call getMyCollectionFolder in the getFolders function to get the My Collection folder on folders load ๐Ÿ“ (foldersStore.tsx): Call getMyCollectionFolder in the setFolders function to get the My Collection folder on folders update ๐Ÿ“ (foldersStore.tsx): Call getMyCollectionFolder in the setLoading function to get the My Collection folder on loading change ๐Ÿ“ (foldersStore.tsx): Call getMyCollectionFolder in the setLoadingById function to get the My Collection folder on loadingById change ๐Ÿ“ (foldersStore.tsx): Add myCollectionFlows state to store the My Collection folder and its flows ๐Ÿ“ (foldersStore.tsx): Call getMyCollectionFolder in the getFolders function to get the My * ๐Ÿ› (flows.py): set default folder for flows without a folder_id to "My Collection" folder if it exists โœจ (componentsComponent/index.tsx): add isLoadingFolder state to track loading status of folder data ๐Ÿ“ (componentsComponent/index.tsx): remove console.log statement โ™ป๏ธ (componentsComponent/index.tsx): refactor useEffect to setAllFlows only when folderId changes โ™ป๏ธ (componentsComponent/index.tsx): refactor useEffect to log allFlows when it changes โ™ป๏ธ (foldersStore.tsx): refactor getMyCollectionFolder to set myCollectionId state โ™ป๏ธ (foldersStore.tsx): refactor setMyCollectionId to set myCollectionId state * Feat: create date and string logs components * โœจ (App.tsx): add autoLogin as a dependency to useEffect to trigger the effect when autoLogin changes โœจ (sideBarButtons/index.tsx): create a new component SideBarButtonsComponent to handle rendering of sidebar buttons โœจ (sideBarFolderButtons/index.tsx): create a new component SideBarFoldersButtonsComponent to handle rendering of sidebar folder buttons โ™ป๏ธ (index.tsx): refactor SidebarNav component to use SideBarButtonsComponent and SideBarFoldersButtonsComponent for rendering buttons โœจ (index.tsx): add support for editing existing folders by passing folderToEdit prop to FolderForms component ๐Ÿ“ (index.tsx): add form validation using zod schema and zodResolver โ™ป๏ธ (index.tsx): refactor form handling to use react-hook-form useForm hook and zodResolver for validation โœจ (submit-folder.tsx): create custom hook useFolderSubmit to handle form submission and API calls for adding and updating folders ๐Ÿ“ (entities/index.ts): add zod schema for folder form validation โ™ป๏ธ (component/index.tsx): refactor imports and remove unused imports โ™ป๏ธ (component/index.tsx): refactor FolderForms component to use destructuring for props and remove unused imports โ™ป๏ธ (component/index.tsx): refactor useEffect to handle folderToEdit prop and set form values accordingly โ™ป๏ธ (component/index.tsx): refactor FormField components to use FormItem and FormMessage components for better form structure and error handling โ™ป๏ธ (component/index.tsx): refactor FormField components to use name prop instead of deprecated defaultValue prop โ™ป๏ธ (component/index.tsx): refactor FormField components to use name prop instead of deprecated defaultValue prop ๐Ÿ”ง (component/index.tsx): add missing import for FormMessage component ๐Ÿ”ง (component/index.tsx): add missing import for FormMessage component ๐Ÿ”ง (component/index.tsx): add missing import for FormMessage component ๐Ÿ”ง (component/index.tsx): add missing import for FormMessage component ๐Ÿ”ง (component/index.tsx): add missing import for FormMessage component ๐Ÿ”ง (component/index.tsx): add missing import for FormMessage component ๐Ÿ”ง (component/index.tsx): add missing import for FormMessage component ๐Ÿ”ง (component/index.tsx): add missing import for FormMessage component ๐Ÿ”ง (component/index.tsx): add missing import for FormMessage component ๐Ÿ”ง (component/index.tsx): add missing import for FormMessage component ๐Ÿ”ง (component/index.tsx): add missing import for FormMessage component ๐Ÿ”ง (component/index.tsx): add missing import for FormMessage component ๐Ÿ”ง (component/index.tsx): add missing import for FormMessage component ๐Ÿ”ง (component/index.tsx): add missing import for FormMessage component ๐Ÿ”ง (component/index.tsx): add missing import for FormMessage component ๐Ÿ”ง (component/index.tsx): add missing import for FormMessage component ๐Ÿ”ง (component/index.tsx): add missing import for FormMessage component ๐Ÿ”ง (component/index.tsx): add missing import for FormMessage component ๐Ÿ”ง (component/index.tsx): add missing import for FormMessage component ๐Ÿ”ง (component/index.tsx): add missing import for FormMessage component ๐Ÿ”ง (component/index.tsx): add missing import for FormMessage component ๐Ÿ”ง (component/index.tsx): add missing import for FormMessage component ๐Ÿ”ง (component/index.tsx): add missing import for FormMessage component ๐Ÿ”ง (component/index.tsx): add missing import for FormMessage component ๐Ÿ”ง (component/index.tsx): add missing import for FormMessage component ๐Ÿ”ง (component/index.tsx): add missing import for FormMessage component ๐Ÿ”ง (component/index.tsx): add missing import for FormMessage component ๐Ÿ”ง (component/index.tsx): add missing import for FormMessage component ๐Ÿ”ง (component/index.tsx): add missing import for FormMessage component ๐Ÿ”ง (component/index.tsx): add missing import for FormMessage component ๐Ÿ”ง (component/index.tsx): add missing import for FormMessage component ๐Ÿ”ง (component/index.tsx): add missing import for FormMessage component ๐Ÿ”ง (component/index.tsx): add missing import for FormMessage component ๐Ÿ”ง (component/index.tsx): add missing import for FormMessage component ๐Ÿ”ง (component/index.tsx): add missing import for FormMessage component ๐Ÿ”ง (component/index.tsx): add missing import for FormMessage component ๐Ÿ”ง (component/index.tsx): add missing import for FormMessage component ๐Ÿ”ง (component/index.tsx): add missing import for FormMessage component ๐Ÿ”ง (component/index.tsx): add missing import for FormMessage component ๐Ÿ”ง (component/index.tsx): add missing import for FormMessage component ๐Ÿ”ง (component/index.tsx): add missing import for FormMessage component ๐Ÿ”ง (component/index.tsx): add missing import for FormMessage component ๐Ÿ”ง (component/index.tsx): add missing import for FormMessage component ๐Ÿ”ง (component/index.tsx): add missing import for FormMessage component โœจ (componentsComponent/index.tsx): remove unused isLoadingFolder variable โ™ป๏ธ (componentsComponent/index.tsx): refactor useEffect to handle folderId and myCollectionId logic separately for better readability โ™ป๏ธ (componentsComponent/index.tsx): refactor useEffect to setAllFlows with a delay of 500ms for smoother rendering ๐Ÿ“ (componentsComponent/index.tsx): remove console.log statement โœจ (modalsComponent/index.tsx): add ModalsComponent to handle different modals in ComponentsComponent โœจ (inputSearchComponent/index.tsx): add allFlows dependency to disable search input when there are no flows โœจ (delete-folder.tsx): add useDeleteFolder hook to handle folder deletion logic โœจ (dropdown-options.tsx): add useDropdownOptions hook to handle dropdown options for import from JSON ๐Ÿ“ (index.tsx): refactor MainPage's index.tsx to improve code readability and maintainability โœจ (index.tsx): introduce ModalsComponent to handle modals in MainPage โ™ป๏ธ (foldersStore.tsx): refactor getFoldersApi function in foldersStore to allow refetching of folders โ™ป๏ธ (foldersStore.tsx): refactor setFolderToEdit function in foldersStore to improve semantics โ™ป๏ธ (index.ts): refactor FoldersStoreType in types/zustand/folders/index.ts to improve semantics โ™ป๏ธ (tailwind.config.js): refactor tailwind.config.js to add display variant for group-hover * ๐Ÿ› (flows.py): import `col` from `sqlmodel` to fix reference error ๐Ÿ› (flows.py): change route method from DELETE to POST for deleting multiple flows ๐Ÿ› (flows.py): fix reference error in `delete_multiple_flows` function ๐Ÿ“ (schemas.py): add `FlowListIds` schema to handle flow ids for multiple delete โœจ (index.tsx): remove trailing commas in useState calls โ™ป๏ธ (index.tsx): remove unnecessary ternary operator in className โ™ป๏ธ (index.tsx): remove unnecessary arrow function in onDelete prop โ™ป๏ธ (index.tsx): remove unnecessary props in DeleteConfirmationModal component โ™ป๏ธ (index.tsx): remove unnecessary props in Button component โ™ป๏ธ (index.tsx): remove unnecessary props in Icon component โ™ป๏ธ (index.tsx): remove unnecessary props in Spinner component โ™ป๏ธ (index.tsx): remove unnecessary props in IconButton component โ™ป๏ธ (index.tsx): remove unnecessary props in Tooltip component โ™ป๏ธ (index.tsx): remove unnecessary props in Text component โ™ป๏ธ (index.tsx): remove unnecessary props in Flex component โ™ป๏ธ (index.tsx): remove unnecessary props in Box component โ™ป๏ธ (index.tsx): remove unnecessary props in Avatar component โ™ป๏ธ (index.tsx): remove unnecessary props in Badge component โ™ป๏ธ (index.tsx): remove unnecessary props in Image component โ™ป๏ธ (index.tsx): remove unnecessary props in Heading component โ™ป๏ธ (index.tsx): remove unnecessary props in Divider component โ™ป๏ธ (index.tsx): remove unnecessary props in Spacer component โ™ป๏ธ (index.tsx): remove unnecessary props in Stack component โ™ป๏ธ (index.tsx): remove unnecessary props in Collapse component โ™ป๏ธ (index.tsx): remove unnecessary props in Modal component โ™ป๏ธ (index.tsx): remove unnecessary props in Portal component โ™ป๏ธ (index.tsx): remove unnecessary props in Transition component โ™ป๏ธ (index.tsx): remove unnecessary props in useFlowsManagerStore hook โ™ป๏ธ (index.tsx): remove unnecessary props in useDisclosure hook โ™ป๏ธ (index.tsx): remove unnecessary props in useToast hook โ™ป๏ธ (index.tsx): remove unnecessary props in useColorModeValue hook โ™ป๏ธ (index.tsx): remove unnecessary props in useBreakpointValue hook โ™ป๏ธ (index.tsx): remove unnecessary props in useMediaQuery hook โ™ป๏ธ (index.tsx): remove unnecessary props in useBoolean hook โ™ป๏ธ (index.tsx): remove unnecessary props in useOutsideClick hook โ™ป๏ธ (index.tsx): remove unnecessary props in useClipboard hook โ™ป๏ธ (index.tsx): remove unnecessary props in useMergeRefs hook โ™ป๏ธ (index.tsx): remove unnecessary props in useSafeLayoutEffect hook โ™ป๏ธ (index.tsx): remove unnecessary props in useUpdateEffect hook โ™ป๏ธ (index.tsx): remove unnecessary props in usePrevious hook โ™ป๏ธ (index.tsx): remove unnecessary props in useTimeout hook โ™ป๏ธ (index.tsx): remove unnecessary props in useDebounce hook โ™ป๏ธ (index.tsx): remove unnecessary props in useThrottle hook โ™ป๏ธ (index.tsx): remove unnecessary props in useWindowSize hook โ™ป๏ธ (index.tsx): remove unnecessary props in useHover hook โ™ป๏ธ (index.tsx): remove unnecessary props in useFocusWithin hook โ™ป๏ธ (index.tsx): remove unnecessary props in useIntersect hook โ™ป๏ธ (index.tsx): remove unnecessary props in useInViewport hook โ™ป๏ธ (index.tsx): remove unnecessary props in useMeasure hook โ™ป๏ธ (index.tsx): remove unnecessary props in useMotionValue hook โ™ป๏ธ (index.tsx): remove unnecessary props in useTransform hook โ™ป๏ธ (index.tsx): remove unnecessary props in useSpring hook โ™ป๏ธ (index.tsx): remove unnecessary props in useDragControls hook โ™ป๏ธ (index.tsx): remove unnecessary props in usePanGesture hook โ™ป๏ธ (index.tsx): remove unnecessary props in useScrollControls hook โ™ป๏ธ (index.tsx): remove unnecessary props in useViewportScroll hook โ™ป๏ธ (index.tsx): remove unnecessary props in useAnimation hook โ™ป๏ธ (index.tsx): remove unnecessary props in useCycle hook โ™ป๏ธ (index.tsx): remove unnecessary props in useLottie hook โ™ป๏ธ (index.tsx): remove unnecessary props in useMotionConfig hook โ™ป๏ธ (index.tsx): remove unnecessary props in usePresence hook โ™ป โœจ (componentsComponent/index.tsx): import multipleDeleteFlowsComponents from API controller to enable multiple deletion of flows and components โœจ (componentsComponent/index.tsx): add handleDelete function to handle individual deletion of flows and components โœจ (componentsComponent/index.tsx): add handleDeleteMultiple function to handle multiple deletion of flows and components โœจ (componentsComponent/index.tsx): add description prop to DeleteConfirmationModal to specify the type of item being deleted ๐Ÿ“ (modalsComponent/index.tsx): add description prop to DeleteConfirmationModal to specify the type of item being deleted * feat: Add JSON string representation to Record attributes feat: fix table view for Record * feat(frontend): add ArrayReader, NumberReader, ObjectRender components feat(frontend): add DateReader component to format date strings fix(frontend): fix component naming conventions for consistency feat(frontend): update TableAutoCellRender to use new components for rendering feat(frontend): update FlowLogsModal to use pagination and adjust modal size based on content * refactor(utils): update timestamp regex to handle optional milliseconds * refactor(api): update /monitor/messages endpoint to return MessageModel objects * refactor(api): update /monitor/messages endpoint to return List[MessageModel] * feat(modals): enable fake column editing in FlowLogsModal * update recordsOutput to expect object instead of string * refactor: update RecordsOutput to expect object instead of string * refactor: update RecordsOutputComponent to use extracted columns from rows and get multiple records * โœจ (flows.py): set default folder for newly created flows to "My Collection" if no folder is specified โ™ป๏ธ (sideBarButtons/index.tsx): remove unused import and refactor code to simplify rendering of sidebar buttons โ™ป๏ธ (sideBarFolderButtons/index.tsx): refactor code to simplify rendering of sidebar folder buttons and improve readability โ™ป๏ธ (index.ts): refactor saveFlowToDatabase function to handle null folder_id values correctly โ™ป๏ธ (NewFlowCardComponent/index.tsx): refactor code to set folder URL when creating a new flow โ™ป๏ธ (undrawCards/index.tsx): refactor code to set folder URL when creating a new flow and remove unused import ๐Ÿ“ (newFlowModal/index.tsx): remove commented out code for IconComponent to improve code readability ๐Ÿ“ (newFlowModal/index.tsx): remove commented out code for examples.map to improve code readability ๐Ÿ“ (newFlowModal/index.tsx): change key values for UndrawCardComponent to improve uniqueness ๐Ÿ“ (FlowPage/index.tsx): remove unused import for useDarkStore to improve code cleanliness ๐Ÿ“ (FlowPage/index.tsx): remove extra whitespace to improve code readability ๐Ÿ“ (ComponentsComponent/index.tsx): add setFolderUrl function to set the folderUrl state in the folder store ๐Ÿ“ (ComponentsComponent/index.tsx): remove unnecessary whitespace to improve code readability ๐Ÿ“ (tabsComponent/index.tsx): add folderUrl state to navigate function to maintain folder state when changing tabs ๐Ÿ“ (routes.tsx): add nested route for /flow/:id/ to render FlowPage component ๐Ÿ“ (flowsManagerStore.ts): add folder_id property to newFlow object to store the current folder URL ๐Ÿ“ (foldersStore.tsx): remove unnecessary comma to fix syntax error ๐Ÿ“ (foldersStore.tsx): add folderUrl state and setFolderUrl function to store the current folder URL ๐Ÿ› (reactflowUtils.ts): remove unused parameter 'edges' in isValidConnection function โ™ป๏ธ (reactflowUtils.ts): refactor scapeJSONParse and scapeJSONStringfy functions to remove unnecessary exclamation marks ๐Ÿ› (reactflowUtils.ts): fix bug in updateIds function where selectionIds could be undefined ๐Ÿ› (reactflowUtils.ts): fix bug in updateIds function where edge.sourceHandle could be undefined ๐Ÿ› (reactflowUtils.ts): fix bug in updateIds function where edge.targetHandle could be undefined ๐Ÿ› (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice ๐Ÿ› (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice ๐Ÿ› (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice ๐Ÿ› (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice ๐Ÿ› (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice ๐Ÿ› (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice ๐Ÿ› (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice ๐Ÿ› (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice ๐Ÿ› (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice ๐Ÿ› (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice ๐Ÿ› (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice ๐Ÿ› (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice ๐Ÿ› (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice ๐Ÿ› (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice ๐Ÿ› (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice ๐Ÿ› (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice ๐Ÿ› (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice ๐Ÿ› (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice ๐Ÿ› (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice ๐Ÿ› (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice ๐Ÿ› (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice ๐Ÿ› (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice ๐Ÿ› (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice ๐Ÿ› (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice ๐Ÿ› (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice ๐Ÿ› (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice ๐Ÿ› (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice ๐Ÿ› (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice ๐Ÿ› (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice ๐Ÿ› (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice ๐Ÿ› (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice ๐Ÿ› (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice ๐Ÿ› (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice ๐Ÿ› (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice ๐Ÿ› (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice ๐Ÿ› (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice ๐Ÿ› (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice ๐Ÿ› (reactflowUtils.ts): fix bug in validateNode function where scapeJSONParse was called twice ๐Ÿ› (reactflowUtils.ts): fix bug in ๐Ÿ“ (file): update line 785 to fix a typo or improve code readability โœจ (reactflowUtils.ts): remove unnecessary comma at the end of the line โ™ป๏ธ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code ๐Ÿ“ (reactflowUtils.ts): add missing JSDoc comments to functions โ™ป๏ธ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code โ™ป๏ธ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code โ™ป๏ธ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code โ™ป๏ธ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code โ™ป๏ธ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code โ™ป๏ธ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code โ™ป๏ธ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code โ™ป๏ธ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code โ™ป๏ธ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code โ™ป๏ธ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code โ™ป๏ธ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code โ™ป๏ธ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code โ™ป๏ธ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code โ™ป๏ธ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code โ™ป๏ธ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code โ™ป๏ธ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code โ™ป๏ธ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code โ™ป๏ธ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code โ™ป๏ธ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code โ™ป๏ธ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code โ™ป๏ธ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code โ™ป๏ธ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code โ™ป๏ธ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code โ™ป๏ธ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code โ™ป๏ธ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code โ™ป๏ธ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code โ™ป๏ธ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code โ™ป๏ธ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code โ™ป๏ธ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code โ™ป๏ธ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code โ™ป๏ธ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code โ™ป๏ธ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code โ™ป๏ธ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code โ™ป๏ธ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code โ™ป๏ธ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code โ™ป๏ธ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code โ™ป๏ธ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code โ™ป๏ธ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code โ™ป๏ธ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code โ™ป๏ธ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code โ™ป๏ธ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code โ™ป๏ธ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code โ™ป๏ธ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code โ™ป๏ธ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code โ™ป๏ธ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code โ™ป๏ธ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code โ™ป๏ธ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code โ™ป๏ธ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code โ™ป๏ธ (reactflowUtils.ts): refactor code to improve readability and remove unnecessary code โ™ป๏ธ (reactflowUtils.ts): refactor code to improve readability * refactor: Update FlowLogsModal to fetch and display messages table based on active tab * update package lock * ๐Ÿ› (folders.py): import missing dependencies and update code to handle folder components and flows ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders.py): fix typo in update statement ๐Ÿ› (folders โœจ (componentsComponent/index.tsx): add support for selecting and deselecting multiple flows/components ๐Ÿ”ง (componentsComponent/index.tsx): update import statement for react-hook-form to include useWatch โ™ป๏ธ (componentsComponent/index.tsx): refactor handleSelectAll function to only select flows from folder โ™ป๏ธ (componentsComponent/index.tsx): refactor handleSelectOptionsChange function to check selectedFlowsComponentsCards length โ™ป๏ธ (componentsComponent/index.tsx): refactor handleDeleteMultiple function to use selectedFlowsComponentsCards โœจ (componentsComponent/index.tsx): update selectedFlowsComponentsCards state when form values change โ™ป๏ธ (componentsComponent/index.tsx): refactor getDescriptionModal to use useMemo ๐Ÿ› (inputSearchComponent/index.tsx): disable input search when loading, no flows, or no searchFlowsComponents โ™ป๏ธ (flowsManagerStore.ts): add selectedFlowsComponentsCards state and setSelectedFlowsComponentsCards function ๐Ÿ“ (zustand/flowsManager/index.ts): update FlowsManagerStoreType to include selectedFlowsComponentsCards state and setSelectedFlowsComponentsCards function ๐Ÿ“ (deleteComponentFlows.spec.ts): update confirmation message for deleting a component * ๐Ÿ› (index.tsx): filter out flows without a folder_id to prevent errors when mapping over flows ๐Ÿ› (index.ts): add folder_id property to FlowType to properly handle flows with a folder_id * ๐Ÿ“ (sidebarComponent): remove console.log statement for items variable โ™ป๏ธ (sidebarComponent): refactor sideBarButtons component to fix button width and improve styling โ™ป๏ธ (sidebarComponent): refactor sideBarFolderButtons component to fix folder name truncation and improve styling โ™ป๏ธ (sidebarComponent): refactor sidebarNav component to fix className prop โ™ป๏ธ (mainPage): refactor HomePage component to remove unnecessary parentheses and fix indentation * ๐Ÿ“ (on-file-drop.tsx): import `useLocation` from `react-router-dom` to use location state in the component โ™ป๏ธ (on-file-drop.tsx): refactor `useFlowsManagerStore` to `useFolderStore` to use the correct store for getting folder data โœจ (on-file-drop.tsx): add `location` and `folderId` variables to get the folder id from the location state โœจ (on-file-drop.tsx): call `getFolderById` function instead of `setAllFlows` to update the folder data after successful upload * Implemented Dict modal on Cell Editor for objects * โœจ (sideBarFolderButtons/index.tsx): add support for file drop functionality in the sidebar folder buttons component ๐Ÿ“ (use-on-file-drop.tsx): create a custom hook for handling file drop functionality in the sidebar component ๐Ÿ“ (componentsComponent/index.tsx): update import statement for the useFileDrop hook in the components component ๐Ÿ“ (use-delete-folder.tsx): create a custom hook for handling folder deletion in the MainPage component ๐Ÿ“ (use-dropdown-options.tsx): create a custom hook for generating dropdown options in the MainPage component โœจ (use-on-file-drop.tsx): add a new hook for handling file drop functionality in the MainPage component โœจ (index.tsx): update import paths for hooks in the MainPage component โ™ป๏ธ (flowsManagerStore.ts): refactor the addFlow function to include a new parameter 'fromDragAndDrop' to differentiate between adding a flow from drag and drop or other methods โ™ป๏ธ (foldersStore.tsx): refactor the folder store to include a new state 'folderDragging' to store the folder being dragged โ™ป๏ธ (index.ts): refactor the types in the flowsManager and folders store to include the new 'fromDragAndDrop' parameter * ๐Ÿ“ (App.tsx): Remove unnecessary line breaks and trailing commas for better code readability โ™ป๏ธ (App.tsx): Refactor code to remove unused variables and dependencies โœจ (App.tsx): Add support for fetching folders on login and error handling โ™ป๏ธ (popoverObject/index.tsx): Refactor code to remove unnecessary ternary operators and improve code readability โ™ป๏ธ (foldersModal/component/index.tsx): Refactor code to improve code readability and consistency โ™ป๏ธ (foldersModal/index.tsx): Refactor code to improve code readability and consistency โœจ (actionsMainPage.spec.ts): add end-to-end tests for selecting and deleting all items, and searching flows and components โœจ (folders.spec.ts): add end-to-end tests for CRUD operations on folders and adding a folder by drag and drop * Refactor: Change the no data table screen to a better version * refactor: Update ObjectRender component to display truncated object and provide option to see more * style(objectRender): add hover effect to object render component for better user experience style(tailwind.config.js): add slow-wiggle animation to tailwind config for smoother animation effect * ๐Ÿ“ (inputComponent/index.tsx): remove unnecessary whitespace in className prop to improve code readability ๐Ÿ“ (inputComponent/index.tsx): update id prop value to include object id for better identification ๐Ÿ“ (inputComponent/index.tsx): update id prop value to include object id for better identification ๐Ÿ“ (inputComponent/index.tsx): remove unnecessary whitespace in className prop to improve code readability ๐Ÿ“ (inputComponent/index.tsx): remove unnecessary whitespace in className prop to improve code readability ๐Ÿ“ (inputComponent/index.tsx): remove unnecessary whitespace in className prop to improve code readability ๐Ÿ“ (inputComponent/index.tsx): remove unnecessary whitespace in className prop to improve code readability ๐Ÿ“ (inputComponent/index.tsx): remove unnecessary whitespace in className prop to improve code readability ๐Ÿ“ (inputComponent/index.tsx): remove unnecessary whitespace in className prop to improve code readability ๐Ÿ“ (inputComponent/index.tsx): remove unnecessary whitespace in className prop to improve code readability ๐Ÿ“ (inputComponent/index.tsx): remove unnecessary whitespace in className prop to improve code readability ๐Ÿ“ (inputComponent/index.tsx): remove unnecessary whitespace in className prop to improve code readability ๐Ÿ“ (sidebarComponent/components/sideBarButtons/index.tsx): remove unused item.icon prop ๐Ÿ“ (sidebarComponent/index.tsx): add isFolderPath variable to check if current path is a folder path ๐Ÿ“ (sidebarComponent/index.tsx): add isFolderPath variable to check if current path is a folder path ๐Ÿ“ (foldersModal/component/index.tsx): update id prop value for flow input component ๐Ÿ“ (foldersModal/component/index.tsx): update id prop value for component input component ๐Ÿ“ (end-to-end/actionsMainPage.spec.ts): update getByText assertions to include { exact: true } option for more accurate matching โœจ (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text ๐Ÿ“ (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text โœจ (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text ๐Ÿ“ (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text ๐Ÿ“ (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text ๐Ÿ“ (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text ๐Ÿ“ (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text ๐Ÿ“ (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text ๐Ÿ“ (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text ๐Ÿ“ (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text ๐Ÿ“ (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text ๐Ÿ“ (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text ๐Ÿ“ (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text ๐Ÿ“ (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text ๐Ÿ“ (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text ๐Ÿ“ (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text ๐Ÿ“ (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text ๐Ÿ“ (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text ๐Ÿ“ (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text ๐Ÿ“ (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text ๐Ÿ“ (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text ๐Ÿ“ (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text ๐Ÿ“ (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text ๐Ÿ“ (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text ๐Ÿ“ (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text ๐Ÿ“ (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text ๐Ÿ“ (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text ๐Ÿ“ (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text ๐Ÿ“ (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text ๐Ÿ“ (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text ๐Ÿ“ (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text ๐Ÿ“ (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text ๐Ÿ“ (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text ๐Ÿ“ (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text ๐Ÿ“ (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text ๐Ÿ“ (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text ๐Ÿ“ (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text ๐Ÿ“ (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text ๐Ÿ“ (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text ๐Ÿ“ (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text ๐Ÿ“ (chatInputOutput.spec.ts): update test case to improve readability and remove unnecessary characters in input text ๐Ÿ“ (chatInputOutput.spec.ts): update test case to improve readability and remove โœ… (nestedComponent.spec.ts): remove unnecessary code related to showpinecone_env checkbox โœ… (store.spec.ts): use environment variable STORE_API_KEY instead of hardcoding the API key * ๐Ÿ“ (inputComponent/index.tsx): update id prop value to include "popover-anchor-" prefix for better identification and accessibility โœจ (sidebarComponent/components/sideBarButtons/index.tsx): add react-router-dom Link component to wrap each sidebar button item for navigation functionality โ™ป๏ธ (sidebarComponent/index.tsx): refactor isFolderPath logic to use array of path values and check if any of them is included in the current pathname for better readability and maintainability * Refactor: use shadcn alert when there is no data * Remove unnecessary quotes * Refactor: add border to no data alert * Fix: record output not using table as it should * ๐Ÿ“ (cardComponent/index.tsx): remove redundant "selected" from description prop in DeleteConfirmationModal component ๐Ÿ“ (componentsComponent/index.tsx): remove redundant "selected" from getDescriptionModal function * โœจ (logs.spec.ts): add end-to-end test for viewing and interacting with logs in the frontend ๐Ÿ“ (logs.spec.ts): add documentation comments to improve code readability and maintainability * ๐Ÿ“ (folders.py): add support for downloading all flows from a folder as a file ๐Ÿ“ (folders.py): add support for uploading flows from a file to a folder โœจ (index.tsx): add handleDownloadFolderFn utility function to handle downloading flows from a folder โœจ (index.tsx): add handleUploadFlowsToFolder function to handle uploading flows to a folder ๐Ÿ“ (services/index.ts): add downloadFlowsFromFolders function to make API call for downloading flows from a folder ๐Ÿ“ (services/index.ts): add uploadFlowsFromFolders function to make API call for uploading flows to a folder ๐Ÿ“ (handle-download-folder.ts): create handleDownloadFolderFn utility function to handle downloading flows from a folder โœจ (foldersStore.tsx): add support for uploading flows from folders ๐Ÿ“ (foldersStore.tsx): update types to include uploadFolder function in FoldersStoreType * ๐Ÿ“ (folders.py): remove unnecessary whitespace to improve code readability ๐Ÿ“ (folders.py): remove unnecessary whitespace to improve code readability * style: update CSS in App.css to improve scrollbar appearance feat: add TableComponent to CsvOutputComponent for better table rendering refactor: remove unused code and improve readability in CsvOutputComponent refactor: simplify logic in TableAutoCellRender component feat: add autoHeight property to columns in extractColumnsFromRows utility function * ๐Ÿ› (folders.py): fix issue where components and flows were not being assigned to the new folder ๐Ÿ› (folders.py): fix issue where components and flows were not being assigned to the new folder ๐Ÿ› (sideBarFolderButtons/index.tsx): fix issue where folder buttons were not taking up full width ๐Ÿ› (use-on-file-drop.tsx): fix issue where folder dragging was not being reset on drag leave ๐Ÿ› (use-on-file-drop.tsx): fix issue where folder dragging was not being reset on drag leave ๐Ÿ› (use-on-file-drop.tsx): fix issue where folder dragging was not being reset on drag leave ๐Ÿ› (entities/index.tsx): fix issue where AddFolderType was missing flows and components properties ๐Ÿ› (services/index.ts): fix issue where addFolder function was not correctly sending flows and components data * ๐Ÿ“ (model.py): remove unnecessary whitespace ๐Ÿ“ (index.tsx): remove unused 'pathname' prop ๐Ÿ“ (index.tsx): add 'handleAddFolder' prop to SideBarFoldersButtonsComponent ๐Ÿ“ (index.tsx): remove unused 'handleAddFolder' prop from SideBarButtonsComponent ๐Ÿ“ (index.tsx): remove unused import of DropdownButton in sideBarFolderButtons ๐Ÿ“ (index.tsx): add DropdownButton component to SideBarFoldersButtonsComponent ๐Ÿ“ (index.tsx): add 'handleAddFolder' prop to SideBarFoldersButtonsComponent ๐Ÿ“ (use-on-file-drop.tsx): remove console.log statements ๐Ÿ“ (index.tsx): remove console.log statements ๐Ÿ“ (index.tsx): remove unused import of FolderPlusIcon in mainPage ๐Ÿ“ (index.tsx): remove unused sidebarNavItems array in mainPage * Refactor: make select all look more like a button * feat: Add first step of drag and drop functionality to CollectionCardComponent * ๐Ÿ“ (langflow-pre.db): add new langflow-pre.db file to the backend/base/langflow directory โœจ (index.tsx): improve modal header description by dynamically displaying "Edit a folder" or "Add a new folder" based on the presence of folderToEdit prop * remove api key * remove api key * remove api key * Refactor: Update downloadFlowsFromFolders function to include folder name in response * add type to folder function * Refactor: Update chatComponent and sideBarFolderButtons components This commit refactors the chatComponent and sideBarFolderButtons components. In chatComponent: - Moved the declaration of the 'currentFlow' variable to ensure it is defined before being used. - Removed the unused 'hasIO' and 'hasStore' variables. - Reordered the imports for better organization. In sideBarFolderButtons: - Added imports for 'useStoreStore' and 'ShadTooltip' components. - Removed the unused 'hasStore', 'validApiKey', and 'hasApiKey' variables. - Removed the unused 'handleEditFolder' function. - Added a new button with an icon for sharing as a bundle, with a tooltip indicating the need to review the API key before sharing. These changes improve the code structure and remove unused code, enhancing the overall maintainability and user experience of the application. * copy folder modal structure to start bundle modal * new lock * refactor: Move no data alert rendering logic to a separate function * refactor: Move no data alert rendering logic to a separate function * add truncate to json objects * Refactor: store flow_id in ChatComponent's records in ChatComponent * ๐Ÿ“ (folders.py): add missing import for FolderBase model ๐Ÿ› (folders.py): fix issue where flows were not being fetched for a folder ๐Ÿ› (folders.py): fix issue where flows were not being deleted when a folder is deleted ๐Ÿ› (folders.py): fix issue where folder description was not being returned when downloading flows โœจ (folders.py): add support for uploading flows from a file ๐Ÿ› (schemas.py): fix issue where folder description was not included in FlowListReadWithFolderName schema โ™ป๏ธ (sideBarButtons/index.tsx): refactor handleOpenNewFolderModal prop to be optional โœจ (sideBarFolderButtons/index.tsx): make handleChangeFolder, handleEditFolder, handleDeleteFolder, handleAddFolder optional to improve component reusability โ™ป๏ธ (sideBarFolderButtons/index.tsx): refactor useFileDrop hook to use async/await syntax and separate file upload logic into a separate function โœจ (sideBarFolderButtons/index.tsx): add support for uploading flows from folders using the uploadFlowsFromFolders API โ™ป๏ธ (sideBarFolderButtons/index.tsx): refactor handleFileDrop function to handle multiple files and use FormData to send file data to the server โ™ป๏ธ (sideBarFolderButtons/index.tsx): refactor dragOver, dragEnter, dragLeave, and onDrop functions to remove unnecessary folderId parameter and set folderDragging state to a boolean value instead of an empty string ๐Ÿ“ (sidebarComponent/index.tsx): make handleOpenNewFolderModal, handleChangeFolder, handleEditFolder, handleDeleteFolder optional to allow flexibility in using the component ๐Ÿ“ (foldersModal/component/index.tsx): add allFlows variable to get all flows from the store and use it to filter components and flows on the folder being edited ๐Ÿ“ (foldersModal/hooks/submit-folder.tsx): import useNavigate from react-router-dom and use it to navigate to the folder page after creating or updating a folder ๐Ÿ“ (pages/MainPage/entities/index.tsx): add StarterProjectsType to define the type of starter projects ๐Ÿ“ (pages/MainPage/pages/mainPage/index.tsx): import useAlertStore from stores/alertStore and use it to set error data when trying to download an empty folder ๐Ÿ“ (services/index.ts): add StarterProjectsType import to support the new entity in the code ๐Ÿ“ (services/index.ts): add return type to updateFolder function to improve code clarity ๐Ÿ“ (services/index.ts): add return type to getFolderById function to improve code clarity ๐Ÿ“ (services/index.ts): add return type to getStarterProjects function to improve code clarity ๐Ÿ“ (services/index.ts): add folder_description property to the return type of downloadFlowsFromFolders function to provide additional information about the folder ๐Ÿ“ (services/index.ts): remove folderId parameter from uploadFlowsFromFolders function as it is not needed ๐Ÿ“ (utils/handle-download-folder.ts): add folder_name and folder_description properties to the data object to provide additional information about the folder being downloaded ๐Ÿ“ (SettingsPage/index.tsx): remove commented out code for unused settings options ๐Ÿ“ (stores/flowsManagerStore.ts): add missing comma in setCurrentFlowId function ๐Ÿ“ (stores/flowsManagerStore.ts): add return type to saveFlow function to improve code clarity ๐Ÿ“ (stores/flowsManagerStore.ts): add return type to updateFlow function to improve code clarity ๐Ÿ“ (stores/flowsManagerStore.ts): add return type to addFlow function to improve code clarity ๐Ÿ“ (stores/flowsManagerStore.ts): add return type to deleteFlow function to improve code clarity ๐Ÿ“ (stores/flowsManagerStore.ts): add return type to addFlowComponent function to improve code clarity ๐Ÿ“ (stores/flowsManagerStore.ts): add return type to takeSnapshot function to improve code clarity ๐Ÿ“ (stores/flowsManagerStore.ts): add return type to undo function to improve code clarity ๐Ÿ“ (stores/flowsManagerStore.ts): add return type to redo function to improve code clarity โ™ป๏ธ (foldersStore.tsx): change folderDragging variable type from string to boolean to improve semantics and consistency โ™ป๏ธ (foldersStore.tsx): remove unused folderId parameter from uploadFolder function โ™ป๏ธ (foldersStore.tsx): remove unused setAllFlows function call โ™ป๏ธ (folders/index.ts): change folderDragging variable type from string to boolean to match the updated type in foldersStore.tsx * ๐Ÿ› (folders.py): fix indentation and remove unnecessary whitespace โœจ (folders.py): add logic to handle duplicate folder names by appending a number to the folder name ๐Ÿ“ (folders.py): update comments and documentation * ๐Ÿ› (submit-folder.tsx): remove unnecessary comma after closing curly brace in error handling function ๐Ÿ› (index.tsx): remove unnecessary comma after closing parenthesis in state selectors โ™ป๏ธ (index.tsx): refactor code to simplify logic for getting folder by ID and handling default case * refactor: Update add_row_to_table function to use list comprehension for values * Refactor: Update placeholder text capitalization in headerComponent and inputSearchComponent In headerComponent: - Changed "Select all" to "Select All" for better consistency and readability. In inputSearchComponent: - Changed "Search flows" to "Search Flows" and "Search components" to "Search Components" for better consistency and readability. These changes improve the user experience and maintain consistency in the application. * Modularized scroll fade and added it to folders * refactor(componentsComponent): remove unnecessary switch statement in handleSelectOptionsChange function feat(headerComponent): replace Select component with a Button component for delete action feat(headerComponent): add disableDelete prop to Button component to handle delete button state based on selected items * Made selector not disappear after hover if selected * fixed selector * ๐Ÿ› (folders.py): fix updating folder components and flows logic โœจ (folders.py): add support for moving excluded flows to "My Collection" folder * โ™ป๏ธ (folders.py): remove unnecessary whitespace ๐Ÿ› (folders.py): fix indentation issue in update_folder function * refactor(headerComponent): replace Select component with Button component for delete action * refactor: Handle float conversion errors in validate_id method * Fix adding primary key * Refactor: remove trash from card and make checkbox always visible * Refactor: add padding on card title to avoid bugs * chore: Add h-full class to sideBarFolderButtons component * ๐Ÿ“ (api.tsx): add import statement for useUtilityStore from utilityStore to use the utility store in the API interceptor ๐Ÿ“ (api.tsx): add lastUrlCalled and setLastUrlCalled variables to store and retrieve the last URL called in the API interceptor ๐Ÿ“ (api.tsx): add logic to check for duplicate requests in the API interceptor based on the last URL called ๐Ÿ“ (api.tsx): add localStorage to store the last URL called in the API interceptor ๐Ÿ“ (api.tsx): add logic to add access token to every request in the API interceptor โ™ป๏ธ (index.tsx): refactor selectedFolder?.flows to remove unnecessary parentheses in ComponentsComponent โ™ป๏ธ (index.tsx): refactor state.searchFlowsComponents.toLowerCase() to remove unnecessary parentheses in ComponentsComponent โ™ป๏ธ (index.tsx): refactor state.selectedFlowsComponentsCards to remove unnecessary parentheses in ComponentsComponent โ™ป๏ธ (index.tsx): refactor (f.is_component ?? false) === is_component to remove unnecessary parentheses in ComponentsComponent ๐Ÿ“ (utilityStore.ts): add lastUrlCalled and setLastUrlCalled variables to utility store to store and retrieve the last URL called * ๐Ÿ“ (api.tsx): remove unused import of useUtilityStore from utilityStore โ™ป๏ธ (api.tsx): remove unused variables lastUrlCalled and setLastUrlCalled from useUtilityStore ๐Ÿ“ (utilityStore.ts): remove unused variable lastUrlCalled and setLastUrlCalled from utilityStore * refactor: Add flow_id parameter to log_message function * fix undefined bug * refactor: Update add_row_to_table function to use list comprehension for values * refactor: Add flow_id field to FlowCreate and FlowRead models * refactor: Update FlowCreate and FlowRead models to use folder_id instead of flow_id * Refactor: make drag n drop works in the entire screen * โฌ†๏ธ (frontend/package.json): upgrade "@playwright/test" dependency from version 1.43.1 to 1.44.0 โœจ (frontend/tests/end-to-end/actionsMainPage.spec.ts): replace the usage of XPath locator with text locator for better readability and maintainability โœจ (frontend/tests/end-to-end/actionsMainPage.spec.ts): replace the usage of "Actions" and "Delete" text locators with "icon-Trash2" locator for better specificity โœจ (frontend/tests/end-to-end/actionsMainPage.spec.ts): replace the usage of "Delete" text locator with "Delete" button locator for better specificity โœจ (frontend/tests/end-to-end/actionsMainPage.spec.ts): replace the usage of "Select All" text locator with "Select All" button locator for better specificity โœจ (frontend/tests/end-to-end/actionsMainPage.spec.ts): replace the usage of "Unselect All" text locator with "Unselect All" button locator for better specificity โœจ (frontend/tests/end-to-end/actionsMainPage.spec.ts): replace the usage of "Actions" text locator with "icon-Trash2" locator for better specificity โœจ (frontend/tests/end-to-end/actionsMainPage.spec.ts): replace the usage of "Delete" text locator with "Delete" button locator for better specificity โœจ (frontend/tests/end-to-end/actionsMainPage.spec.ts): replace the usage of "Select All" text locator with "Select All" button locator for better specificity โœจ (frontend/tests/end-to-end/actionsMainPage.spec.ts): replace the usage of "New Project" XPath locator with "New Project" text locator for better readability and maintainability โœจ (frontend/tests/end-to-end/actionsMainPage.spec.ts): replace the usage of "New Project" XPath locator with "New Project" text locator for better readability and maintainability โœจ (frontend/tests/end-to-end/actionsMainPage.spec.ts): replace the usage of "New Project" XPath locator with "New Project" text locator for better readability and maintainability โœจ (frontend/tests/end-to-end/actionsMainPage.spec.ts): replace the usage of "New Project" XPath locator with "New Project" text locator for better readability and maintainability โœจ (frontend/tests/end-to-end/actionsMainPage.spec.ts): replace the usage of "New Project" XPath locator with "New Project" text locator for better readability and maintainability โœจ (frontend/tests/end-to-end/actionsMainPage.spec.ts): replace the usage of "New Project" XPath locator with "New Project" text locator for better readability and maintainability โœจ (frontend/tests/end-to-end/actionsMainPage.spec.ts): replace the usage of "New Project" XPath locator with "New Project" text locator for better readability and maintainability โœจ (frontend/tests/end-to-end/actionsMainPage.spec.ts): replace the usage of "New Project" XPath locator with "New Project" text locator for better readability and maintainability โœจ (frontend/tests/end-to-end/actionsMainPage.spec.ts): replace the usage of "New Project" XPath locator with "New Project" text locator for better readability and maintainability โœจ (frontend/tests/end-to-end/actionsMainPage.spec.ts): replace the usage of "New Project" XPath locator with "New Project" text locator for better readability and maintainability โœจ (frontend/tests/end-to-end/actionsMainPage.spec.ts): replace the usage of "New Project" XPath locator with "New Project" text locator for better readability and maintainability โœจ (frontend/tests/end-to-end/actionsMainPage.spec.ts): replace the usage of "New Project" XPath locator with "New Project" text locator for better readability and maintainability โœจ (frontend/tests/end-to-end/actionsMainPage.spec.ts): replace the usage of "New Project" XPath locator with "New Project" text locator for better readability and maintainability โœจ (frontend/tests/end-to-end/actionsMainPage.spec.ts): replace the usage of "New Project" XPath locator with "New Project" text locator for better readability and maintainability โœจ (frontend/tests/end-to-end/actionsMainPage.spec.ts): replace the usage of "New Project" XPath locator with "New Project" text locator for better readability and maintainability โœจ (frontend/tests/end-to-end/actionsMainPage.spec.ts): replace the usage of "New Project" XPath locator with "New Project" text locator for better readability and maintainability โœจ (frontend/tests/end-to-end/actionsMainPage.spec.ts): replace the usage of "New Project" XPath locator with "New Project" text locator for better readability and maintainability โœจ (frontend/tests/end-to-end/actionsMainPage.spec.ts): replace the usage of "New Project" XPath locator with "New Project" text locator for better readability and maintainability โœจ (frontend/tests/end โœจ (floatComponent.spec.ts): update selector for clicking "New Project" button to improve test reliability โœจ (flowPage.spec.ts): update selector for clicking "New Project" button to improve test reliability โœจ (flowSettings.spec.ts): update selector for clicking "New Project" button to improve test reliability โœจ (folders.spec.ts): update selector for clicking "New Project" button to improve test reliability โœจ (folders.spec.ts): update selector for clicking "New Folder" button to improve test reliability โœจ (folders.spec.ts): update selector for clicking "Edit Folder" button to improve test reliability โœจ (folders.spec.ts): update selector for dispatching drop event to improve test reliability โœจ (globalVariables.spec.ts): update selector for clicking "New Project" button to improve test reliability โœจ (group.spec.ts): update selector for clicking "New Project" button to improve test reliability โœจ (inputComponent.spec.ts): update selector for clicking "New Project" button to improve test reliability โœจ (inputListComponent.spec.ts): update selector for clicking "New Project" button to improve test reliability โœจ (intComponent.spec.ts): update selector for clicking "New Project" button to improve test reliability โœจ (keyPairListComponent.spec.ts): update selector for clicking "New Project" button to improve test reliability โœจ (langflowShortcuts.spec.ts): update selector for clicking "New Project" button to improve test reliability โœจ (nestedComponent.spec.ts): update selector for clicking "New Project" button to improve test reliability โœจ (promptModalComponent.spec.ts): update selector for clicking "New Project" button to improve test reliability โœจ (python_api_generation.spec.ts): update selector for clicking "New Project" button to improve test reliability โœจ (saveComponents.spec.ts): update selector for clicking "New Project" button to improve test reliability and maintainability โœจ (store.spec.ts): update selector for clicking "New Project" button to improve test reliability and maintainability โœจ (textAreaModalComponent.spec.ts): update selector for clicking "New Project" button to improve test reliability and maintainability โœจ (textInputOutput.spec.ts): update selector for clicking "New Project" button to improve test reliability and maintainability โœจ (toggleComponent.spec.ts): update selector for clicking "New Project" button to improve test reliability and maintainability โœจ (tweaks_test.spec.ts): update selector for clicking "New Project" button to improve test reliability and maintainability ๐Ÿ“ (test-results/.last-run.json): add .last-run.json file to track test run status * Refactor: make drag n drop only happen in the folder div * refactor: Fix incorrect variable assignment in memory.py * refactor: Update data retrieval in InterfaceVertex to use record data instead of model_dump * refactor: Update DateReader component to use 12-hour time format * refactor: Update activeTab state variable in FlowLogsModal component * refactor: Update FlowCreate and FlowRead models to use folder_id instead of flow_id * refactor: Update hover animation in ObjectRender component * refactor: Update icon in FlowLogsModal component * add table preview on IO * refactor: Add truncate class to StringReader component * refactor: Add TableAutoCellRender support for displaying badges * refactor: Add filter option to extractColumnsFromRows function * update card width * style(IOFieldView): update className condition to dynamically set height based on 'left' prop value * fix(IOFieldView): update height class value from "h-36" to "h-56" for better UI consistency fix(FlowLogsModal): update BaseModal.Header description based on activeTab value for dynamic content display * Update BaseModal.Header description in FlowLogsModal component * refactor: Update dict_values_to_string function to use deepcopy for dictionary copy * ๐Ÿ“ (sideBarFolderButtons): Remove unused variables and improve code readability ๐Ÿ“ (api): Remove unnecessary error handling and improve code readability ๐Ÿ“ (componentsComponent): Remove unused variables and improve code readability ๐Ÿ“ (foldersStore): Remove unnecessary error handling and improve code readability * ๐Ÿ“ (App.tsx): remove unnecessary call to getFoldersApi() before setting loading state to false โ™ป๏ธ (App.tsx): refactor code to navigate to "/all" instead of "/flows" when window location pathname is "/" * refactor: Update FlowCreate and FlowRead models to use folder_id instead of flow_id * refactor: Update FlowCreate and FlowRead models to use folder_id instead of flow_id * refactor: Update MyCollectionComponent to use "type" prop instead of "is_component" * refactor: Update error handling in API interceptor * refactor: Update StoreGuard component to navigate to "/all" instead of "/flows" when there is no store * chore(constants.ts): add DEFAULT_FOLDER constant for improved code readability refactor(index.tsx): update title and description logic to use constants for consistency feat(foldersStore.tsx): utilize DEFAULT_FOLDER constant for folder name comparison to improve maintainability and readability * lint * reduce navbar size * chore: Update className in mainPage/index.tsx to use relative width for folder button * refactor: Remove unnecessary call to getFoldersApi() and refactor code in App.tsx * refactor: Update default column width in TableComponent * Refactor: Change folders actions buttons to another location * โœจ (cardComponent/index.tsx): refactor useState calls to remove unnecessary commas and improve code readability ๐Ÿ“ (cardComponent/index.tsx): remove unnecessary semicolon and fix indentation โ™ป๏ธ (cardComponent/index.tsx): remove unnecessary semicolon and fix indentation โœจ (cardComponent/index.tsx): refactor onClick handler to remove unnecessary ternary operator โ™ป๏ธ (cardComponent/index.tsx): remove unnecessary semicolon and fix indentation โœจ (cardComponent/index.tsx): refactor onClick handler to remove unnecessary ternary operator โ™ป๏ธ (cardComponent/index.tsx): remove unnecessary semicolon and fix indentation โœจ (cardComponent/index.tsx): refactor onClick handler to remove unnecessary ternary operator โ™ป๏ธ (cardComponent/index.tsx): remove unnecessary semicolon and fix indentation โœจ (cardComponent/index.tsx): refactor onClick handler to remove unnecessary ternary operator โ™ป๏ธ (cardComponent/index.tsx): remove unnecessary semicolon and fix indentation โœจ (cardComponent/index.tsx): refactor onClick handler to remove unnecessary ternary operator โ™ป๏ธ (cardComponent/index.tsx): remove unnecessary semicolon and fix indentation โœจ (cardComponent/index.tsx): refactor onClick handler to remove unnecessary ternary operator โ™ป๏ธ (cardComponent/index.tsx): remove unnecessary semicolon and fix indentation โœจ (cardComponent/index.tsx): refactor onClick handler to remove unnecessary ternary operator โ™ป๏ธ (cardComponent/index.tsx): remove unnecessary semicolon and fix indentation โœจ (cardComponent/index.tsx): refactor onClick handler to remove unnecessary ternary operator โ™ป๏ธ (cardComponent/index.tsx): remove unnecessary semicolon and fix indentation โœจ (cardComponent/index.tsx): refactor onClick handler to remove unnecessary ternary operator โ™ป๏ธ (cardComponent/index.tsx): remove unnecessary semicolon and fix indentation โœจ (cardComponent/index.tsx): refactor onClick handler to remove unnecessary ternary operator โ™ป๏ธ (cardComponent/index.tsx): remove unnecessary semicolon and fix indentation โœจ (cardComponent/index.tsx): refactor onClick handler to remove unnecessary ternary operator โ™ป๏ธ (cardComponent/index.tsx): remove unnecessary semicolon and fix indentation โœจ (cardComponent/index.tsx): refactor onClick handler to remove unnecessary ternary operator โœจ (use-on-file-drop.tsx): refactor handleFileDrop function to use uploadFormData function for better code organization and readability * get error from folder * refactor: Handle error when updating folder in submit-folder.tsx * refactor: Update submit-folder.tsx to handle folder submission and error handling consistently * Refactor: Rename folders buttons and add search input icon * Fixed padding on select * Fix: Store tags displaying as a column * fixed checkbox color on card * Implemented draggable small folder * Refactor: Add padding to search input * fixed flow not dropping * Fixed flow and component dropping bugs * Refactor: Update ComponentsComponent to improve code readability and remove unnecessary code * Fixed deleting issue when it doesnt update on creating new folder * refactor: Update activeTab name in FlowLogsModal component * Removed onDelete of card component * update logs modal postion * Refactor: Make folders buttons the same size * Refactor: Position download folder button in a better parent * Refactor: Update folder_id when moving a flow to a different folder * Refactor: Update folder_id when moving a flow to a different folder * Refactor: Update folder_id when moving a flow to a different folder * chore: Remove unnecessary comma in API interceptor code * Refactor: Remove unused code and improve folder button behavior * Refactor: Improve code readability and remove unnecessary code in ComponentsComponent * Refactor: Update folder_id when moving a flow to a different folder * feat(sidebarComponent): add support for downloading folders with flows fix(constants): change DEFAULT_FOLDER constant value to "My Projects" for clarity refactor(emptyComponent): update text color and alignment for better readability style(headerTabsSearchComponent): remove download button from header tabs search component style(inputSearchComponent): adjust width of input search component for better UI consistency * merge on dev * fixing migration * removing db * ๐Ÿ“ (use-on-file-drop.tsx): add import statement for useFlowsManagerStore to use the refreshFlows function โœจ (use-on-file-drop.tsx): call refreshFlows function after uploading flows to update the flows list ๐Ÿ“ (foldersStore.tsx): remove unnecessary comma and fix indentation โœจ (foldersStore.tsx): call refreshFlows function after uploading flows to update the flows list * feat(modals): update folder modal title and icon * fix(cardsWrapComponent): add useEffect hook to handle visibility change when tab becomes visible to reset hover state and improve user experience * ๐Ÿ› (popover/index.tsx): fix indentation and remove unnecessary ternary operator ๐Ÿ› (popover/index.tsx): fix className prop to prevent it from being undefined ๐Ÿ› (inputComponent/index.tsx): prevent event propagation and default behavior when clicking on the button inside InputComponent * โœจ (index.tsx): add useEffect import to fix missing dependency warning and improve code readability โ™ป๏ธ (index.tsx): remove unused useEffect function implementation to clean up code * โœจ (foldersStore.tsx): add call to refreshFlows() method in useFlowsManagerStore to update flows after loading folders * fix(langflow): add missing index 'ix_flow_folder_id' on 'flow' table to improve database performance * fix: add missing index 'ix_flow_folder_id' on 'flow' table * refactor(foldersModal): improve folder icon naming for better clarity and consistency * feat: add kill command to stop backend server * ๐Ÿ“ (App.tsx): remove unnecessary trailing commas in the useAlertStore and useGlobalVariablesStore hooks ๐Ÿ“ (mainPage/index.tsx): remove unused import and useEffect hook that fetches folders โ™ป๏ธ (temp): delete unused temp folder * โœจ (submit-folder.tsx): update navigate path to use "all" instead of "flows" to improve consistency and clarity โœจ (mainPage/index.tsx): add call to getFoldersApi on page load to ensure folders are up to date ๐Ÿ› (chatInputOutput.spec.ts): fix selector for input-openai_api_key to use popover-anchor-input-openai_api_key ๐Ÿ› (chatInputOutput.spec.ts): fix selector for input-sender_name to use popover-anchor-input-sender_name โ™ป๏ธ (chatInputOutput.spec.ts): refactor code to improve readability and remove unnecessary code โ™ป๏ธ (folders.spec.ts): refactor code to improve readability and remove unnecessary code โœจ (inputComponent.spec.ts): update selectors for input elements to match changes in the frontend code โœจ (inputComponent.spec.ts): update selectors for input elements to match changes in the frontend code โœจ (inputComponent.spec.ts): update selectors for input elements to match changes in the frontend code โœจ (inputComponent.spec.ts): update selectors for input elements to match changes in the frontend code โœจ (inputComponent.spec.ts): update selectors for input elements to match changes in the frontend code โœจ (inputComponent.spec.ts): update selectors for input elements to match changes in the frontend code โœจ (inputComponent.spec.ts): update selectors for input elements to match changes in the frontend code โœจ (inputComponent.spec.ts): update selectors for input elements to match changes in the frontend code โœจ (inputComponent.spec.ts): update selectors for input elements to match changes in the frontend code โœจ (inputComponent.spec.ts): update selectors for input elements to match changes in the frontend code โœจ (inputComponent.spec.ts): update selectors for input elements to match changes in the frontend code โœจ (inputComponent.spec.ts): update selectors for input elements to match changes in the frontend code โœจ (inputComponent.spec.ts): update selectors for input elements to match changes in the frontend code โœจ (inputComponent.spec.ts): update selectors for input elements to match changes in the frontend code โœจ (inputComponent.spec.ts): update selectors for input elements to match changes in the frontend code โœจ (inputComponent.spec.ts): update selectors for input elements to match changes in the frontend code โœจ (inputComponent.spec.ts): update selectors for input elements to match changes in the frontend code โœจ (inputComponent.spec.ts): update selectors for input elements to match changes in the frontend code โœจ (inputComponent.spec.ts): update selectors for input elements to match changes in the frontend code โœจ (inputComponent.spec.ts): update selectors for input elements to match changes in the frontend code โœจ (inputComponent.spec.ts): update selectors for input elements to match changes in the frontend code โœจ (inputComponent.spec.ts): update selectors for input elements to match changes in the frontend code โœจ (inputComponent.spec.ts): update selectors for input elements to match changes in the frontend code โœจ (inputComponent.spec.ts): update selectors for input elements to match changes in the frontend code โœจ (inputComponent.spec.ts): update selectors for input elements to match changes in the frontend code โœจ (inputComponent.spec.ts): update selectors for input elements to match changes in the frontend code โœจ (inputComponent.spec.ts): update selectors for input elements to match changes in the frontend code โœจ (inputComponent.spec.ts): update selectors for input elements to match changes in the frontend code โœจ (inputComponent.spec.ts): update selectors for input elements to match changes in the frontend code โœจ (inputComponent.spec.ts): update selectors for input elements to match changes in the frontend code โœจ (inputComponent.spec.ts): update selectors for input elements to match changes in the frontend code โœจ (inputComponent.spec.ts): update selectors for input elements to match changes in the frontend code โœจ (inputComponent.spec.ts): update selectors for input elements to match changes in the frontend code โœจ (inputComponent.spec.ts): update selectors for input elements to match changes in the frontend code โœจ (inputComponent.spec.ts): update selectors for input elements to match changes in the frontend code โœจ (inputComponent.spec.ts): update selectors for input elements to match changes in the frontend code โœจ (inputComponent.spec.ts): update selectors for input elements to match changes in the frontend code โœจ (inputComponent.spec.ts): update selectors for input elements to match changes in the frontend code โœจ (inputComponent.spec.ts): update selectors for input elements to match changes in the frontend code โœจ (inputComponent.spec.ts): update selectors for input elements to match changes in the frontend code โœจ (inputComponent.spec.ts): update selectors for input elements to match changes in the frontend code โœจ (inputComponent.spec.ts): update selectors for input elements to match changes in the frontend code โœจ (inputComponent.spec.ts): update selectors for input elements to match changes in the frontend code โœจ (inputComponent.spec.ts): update selectors for input elements to match changes in the frontend code โœจ (inputComponent.spec.ts): update selectors for input elements to match changes in the frontend code โœจ (inputComponent.spec.ts): update selectors for input elements to match changes in the frontend code โœจ (inputComponent.spec.ts): update selectors for input elements to match changes in the frontend code โœจ (inputComponent.spec.ts): update selectors for input elements ๐Ÿ› (tweaks_test.spec.ts): fix selectors for input fields to match updated HTML structure * ๐Ÿ› (api.tsx): remove unnecessary comma at the end of the function ๐Ÿ› (api.tsx): remove unnecessary comma at the end of the function ๐Ÿ› (api.tsx): remove unnecessary comma at the end of the function ๐Ÿ› (api.tsx): remove unnecessary comma at the end of the function ๐Ÿ› (api.tsx): remove unnecessary comma at the end of the function ๐Ÿ› (api.tsx): remove unnecessary comma at the end of the function ๐Ÿ› (api.tsx): remove unnecessary comma at the end of the function ๐Ÿ› (api.tsx): remove unnecessary comma at the end of the function ๐Ÿ› (api.tsx): remove unnecessary comma at the end of the function ๐Ÿ› (api.tsx): remove unnecessary comma at the end of the function ๐Ÿ› (api.tsx): remove unnecessary comma at the end of the function ๐Ÿ› (api.tsx): remove unnecessary comma at the end of the function ๐Ÿ› (api.tsx): remove unnecessary comma at the end of the function ๐Ÿ› (api.tsx): remove unnecessary comma at the end of the function ๐Ÿ› (api.tsx): remove unnecessary comma at the end of the function ๐Ÿ› (api.tsx): remove unnecessary comma at the end of the function ๐Ÿ› (api.tsx): remove unnecessary comma at the end of the function ๐Ÿ› (api.tsx): remove unnecessary comma at the end of the function ๐Ÿ› (api.tsx): remove unnecessary comma at the end of the function ๐Ÿ› (api.tsx): remove unnecessary comma at the end of the function ๐Ÿ› (api.tsx): remove unnecessary comma at the end of the function ๐Ÿ› (api.tsx): remove unnecessary comma at the end of the function ๐Ÿ› (api.tsx): remove unnecessary comma at the end of the function ๐Ÿ› (api.tsx): remove unnecessary comma at the end of the function ๐Ÿ› (api.tsx): remove unnecessary comma at the end of the function ๐Ÿ› (api.tsx): remove unnecessary comma at the end of the function ๐Ÿ› (api.tsx): remove unnecessary comma at the end of the function ๐Ÿ› (api.tsx): remove unnecessary comma at the end of the function ๐Ÿ› (api.tsx): remove unnecessary comma at the end of the function ๐Ÿ› (api.tsx): remove unnecessary comma at the end of the function ๐Ÿ› (api.tsx): remove unnecessary comma at the end of the function ๐Ÿ› (api.tsx): remove unnecessary comma at the end of the function ๐Ÿ› (api.tsx): remove unnecessary comma at the end of the function ๐Ÿ› (api.tsx): remove unnecessary comma at the end of the function ๐Ÿ› (api.tsx): remove unnecessary comma at the end of the function ๐Ÿ› (api.tsx): remove unnecessary comma at the end of the function ๐Ÿ› (api.tsx): remove unnecessary comma at the end of the function ๐Ÿ› (api.tsx): remove unnecessary comma at the end of the function ๐Ÿ› (api.tsx): remove unnecessary comma at the end of the function ๐Ÿ› (api.tsx): remove unnecessary comma at the end of the function ๐Ÿ› (api.tsx): remove unnecessary comma at the end of the function ๐Ÿ› (api.tsx): remove unnecessary comma at the end of the function ๐Ÿ› (api.tsx): remove unnecessary comma at the end of the function ๐Ÿ› (api.tsx): remove unnecessary comma at the end of the function ๐Ÿ› (api.tsx): remove unnecessary comma at the end of the function ๐Ÿ› (api.tsx): remove unnecessary comma at the end of the function ๐Ÿ› (api.tsx): remove unnecessary comma at the end of the function ๐Ÿ› (api.tsx): remove unnecessary comma at the end of the function ๐Ÿ› (api.tsx): remove unnecessary comma at the end of the function ๐Ÿ› (api.tsx): remove unnecessary comma at the end of the function ๐Ÿ› (api.tsx): remove unnecessary comma at the end of the function ๐Ÿ› (api.tsx): remove unnecessary comma at the end of the function ๐Ÿ› (api.tsx): remove unnecessary comma at the end of the function ๐Ÿ› (api.tsx): remove unnecessary comma at the end of the function ๐Ÿ› (api.tsx): remove unnecessary comma at the end of the function ๐Ÿ› (api.tsx): remove unnecessary * refactor(modals): remove commented out code in FolderForms component * ๐Ÿ“ (cardComponent/index.tsx): add aria-label to checkbox component for accessibility improvement โœจ (deleteComponentFlows.spec.ts): update delete flow and delete component tests to use checkbox component instead of hovering over card and clicking trash icon for better test stability and reliability โœจ (group.spec.ts): update group node test to use popover anchor input for editing group title instead of directly editing the title for better test stability and reliability โœจ (logs.spec.ts): update logs test to click on "New Project" button by text instead of using locator for better test stability and reliability * โœ… (folders.spec.ts): remove unnecessary code that was clicking on elements and pressing the Escape key โ™ป๏ธ (folders.spec.ts): refactor code to improve readability and remove unused variables โœจ (folders.spec.ts): add test to verify the ability to change the flow folder * fix(folders.py): handle case where no flows are found by setting flows to an empty list instead of raising a 404 error * โ™ป๏ธ (folders.py): rename the function `update_folder` to `move_to_folder` to improve clarity and consistency with the endpoint URL * ๐Ÿ“ (folders.py): remove unused move_to_folder endpoint ๐Ÿ”ง (use-on-file-drop.tsx): update import statements for API controllers and services โ™ป๏ธ (use-on-file-drop.tsx): refactor uploadFromDragCard function to use updateFlowInDatabase function instead of moveFlowToFolder function โ™ป๏ธ (index.ts): refactor updateFlowInDatabase function to handle null folder_id values correctly โ™ป๏ธ (index.tsx): refactor HomePage component to remove unnecessary setTimeout function and reduce delay for getFoldersApi function call * refactor(pyproject.toml): update version to 1.0.0a35 * refactor: remove duplicate logout response in login.py * Bump langflow-base version to 0.0.46 and annotated-types version to 0.7.0 --------- Co-authored-by: Gabriel Luiz Freitas Almeida Co-authored-by: Lucas Oliveira Co-authored-by: cristhianzl Co-authored-by: igorrCarvalho Co-authored-by: ogabrielluiz --- Makefile | 2 +- .../docs/contributing/contribute-component.md | 18 +- example.har | 191 +- poetry.lock | 352 ++-- pyproject.toml | 2 +- scripts/aws/lib/construct/db.ts | 40 +- src/backend/base/langflow/__main__.py | 11 +- .../versions/012fb73ac359_add_folder_table.py | 78 + .../29fe8f1f806b_add_missing_index.py | 43 + src/backend/base/langflow/api/router.py | 2 + src/backend/base/langflow/api/v1/__init__.py | 2 + src/backend/base/langflow/api/v1/chat.py | 4 +- src/backend/base/langflow/api/v1/endpoints.py | 2 +- src/backend/base/langflow/api/v1/flows.py | 45 +- src/backend/base/langflow/api/v1/folders.py | 243 +++ src/backend/base/langflow/api/v1/login.py | 14 +- src/backend/base/langflow/api/v1/monitor.py | 25 +- src/backend/base/langflow/api/v1/schemas.py | 10 + src/backend/base/langflow/api/v1/users.py | 4 + src/backend/base/langflow/base/io/chat.py | 1 + .../base/langflow/base/prompts/utils.py | 16 +- .../components/outputs/RecordsOutput.py | 10 + src/backend/base/langflow/graph/edge/base.py | 22 +- src/backend/base/langflow/graph/edge/utils.py | 19 - src/backend/base/langflow/graph/graph/base.py | 6 +- .../base/langflow/graph/graph/constants.py | 5 +- src/backend/base/langflow/graph/schema.py | 3 + .../base/langflow/graph/vertex/base.py | 28 +- .../base/langflow/graph/vertex/types.py | 167 +- .../base/langflow/graph/vertex/utils.py | 52 +- .../base/langflow/initial_setup/setup.py | 46 +- src/backend/base/langflow/memory.py | 28 +- src/backend/base/langflow/schema/schema.py | 19 +- .../services/database/models/__init__.py | 3 +- .../services/database/models/flow/model.py | 8 +- .../database/models/folder/__init__.py | 3 + .../database/models/folder/constants.py | 2 + .../services/database/models/folder/model.py | 55 + .../services/database/models/folder/utils.py | 26 + .../services/database/models/user/model.py | 5 + .../base/langflow/services/monitor/schema.py | 82 +- .../base/langflow/services/monitor/service.py | 12 +- .../base/langflow/services/monitor/utils.py | 8 +- src/backend/base/langflow/utils/schemas.py | 6 + src/backend/base/poetry.lock | 39 +- src/backend/base/pyproject.toml | 2 +- src/frontend/package-lock.json | 1735 ++++------------- src/frontend/package.json | 5 +- src/frontend/src/App.css | 53 + src/frontend/src/App.tsx | 26 +- .../folderAccordionComponent/index.tsx | 72 + .../addNewVariableButton.tsx | 2 +- .../components/arrayReaderComponent/index.tsx | 12 + .../components/dragCardComponent/index.tsx | 39 + .../src/components/cardComponent/index.tsx | 80 +- .../components/cardsWrapComponent/index.tsx | 32 +- .../src/components/chatComponent/index.tsx | 2 +- .../components/codeAreaComponent/index.tsx | 2 +- .../components/csvOutputComponent/index.tsx | 54 +- .../components/dateReaderComponent/index.tsx | 21 + .../components/dropdownComponent/index.tsx | 4 +- .../components/genericIconComponent/index.tsx | 8 +- .../components/menuBar/index.tsx | 19 +- .../src/components/headerComponent/index.tsx | 15 +- .../horizontalScrollFadeComponent/index.tsx | 61 + .../components/popover/index.tsx | 192 ++ .../components/popoverObject/index.tsx | 167 ++ .../src/components/inputComponent/index.tsx | 251 +-- .../components/inputFileComponent/index.tsx | 4 +- .../components/inputGlobalComponent/index.tsx | 8 +- .../src/components/numberReader/index.tsx | 7 + .../src/components/objectRender/index.tsx | 13 + .../recordsOutputComponent/index.tsx | 34 + .../components/sideBarButtons/index.tsx | 38 + .../components/sideBarFolderButtons/index.tsx | 170 ++ .../hooks/use-on-file-drop.tsx | 134 ++ .../src/components/sidebarComponent/index.tsx | 71 +- .../src/components/storeGuard/index.tsx | 2 +- .../stringReaderComponent/index.tsx | 7 + .../components/tableAutoCellRender/index.tsx | 60 + .../src/components/tableComponent/index.tsx | 124 +- .../tagsSelectorComponent/index.tsx | 110 +- src/frontend/src/components/ui/alert.tsx | 58 + src/frontend/src/components/ui/checkbox.tsx | 6 +- .../src/components/ui/custom-accordion.tsx | 55 + src/frontend/src/components/ui/form.tsx | 176 ++ src/frontend/src/constants/constants.ts | 19 +- src/frontend/src/controllers/API/api.tsx | 27 +- src/frontend/src/controllers/API/index.ts | 43 + .../src/customNodes/genericNode/index.tsx | 32 +- .../modals/BundleModal/component/index.tsx | 140 ++ .../src/modals/BundleModal/entities/index.ts | 10 + .../BundleModal/hooks/submit-folder.tsx | 53 + src/frontend/src/modals/BundleModal/index.tsx | 79 + .../IOModal/components/IOFieldView/index.tsx | 13 +- .../components/chatView/chatMessage/index.tsx | 16 +- src/frontend/src/modals/baseModal/index.tsx | 20 +- .../modals/deleteConfirmationModal/index.tsx | 11 +- .../src/modals/dictAreaModal/index.tsx | 44 +- .../src/modals/flowLogsModal/index.tsx | 104 + .../modals/foldersModal/component/index.tsx | 148 ++ .../src/modals/foldersModal/entities/index.ts | 10 + .../foldersModal/hooks/submit-folder.tsx | 60 + .../src/modals/foldersModal/index.tsx | 79 + .../components/NewFlowCardComponent/index.tsx | 10 +- .../components/undrawCards/index.tsx | 9 +- .../src/modals/newFlowModal/index.tsx | 19 +- src/frontend/src/pages/FlowPage/index.tsx | 2 +- .../MainPage/components/components/index.tsx | 207 -- .../components/componentsComponent/index.tsx | 303 +++ .../components/emptyComponent/index.tsx | 41 + .../components/headerComponent/index.tsx | 85 + .../components/modalsComponent/index.tsx | 58 + .../headerTabsSearchComponent/index.tsx | 49 + .../components/inputSearchComponent/index.tsx | 72 + .../components/tabsComponent/index.tsx | 77 + .../myCollectionComponent/index.tsx | 19 + .../src/pages/MainPage/entities/index.tsx | 26 + .../MainPage/hooks/use-delete-folder.tsx | 32 + .../MainPage/hooks/use-dropdown-options.tsx | 36 + .../pages/MainPage/hooks/use-on-file-drop.tsx | 64 + src/frontend/src/pages/MainPage/index.tsx | 121 -- .../pages/MainPage/pages/mainPage/index.tsx | 105 + .../src/pages/MainPage/services/index.ts | 121 ++ .../pages/MainPage/utils/get-name-by-type.ts | 10 + .../MainPage/utils/handle-download-folder.ts | 23 + .../src/pages/MainPage/utils/sort-flows.ts | 25 + src/frontend/src/pages/SettingsPage/index.tsx | 33 +- .../SettingsPage/pages/GeneralPage/index.tsx | 4 +- .../pages/GlobalVariablesPage/index.tsx | 2 +- src/frontend/src/routes.tsx | 26 +- src/frontend/src/stores/flowsManagerStore.ts | 160 +- src/frontend/src/stores/foldersStore.tsx | 104 + src/frontend/src/stores/utilityStore.ts | 14 + src/frontend/src/style/index.css | 9 +- src/frontend/src/types/components/index.ts | 3 + src/frontend/src/types/flow/index.ts | 1 + .../src/types/zustand/flowsManager/index.ts | 19 +- .../src/types/zustand/folders/index.ts | 26 + .../types/zustand/globalVariables/index.ts | 2 +- src/frontend/src/utils/reactflowUtils.ts | 1 + src/frontend/src/utils/styleUtils.ts | 9 +- src/frontend/src/utils/utils.ts | 54 + src/frontend/tailwind.config.js | 7 + .../tests/end-to-end/actionsMainPage.spec.ts | 124 ++ .../tests/end-to-end/auto_login.spec.ts | 10 +- .../tests/end-to-end/chatInputOutput.spec.ts | 16 +- .../end-to-end/codeAreaModalComponent.spec.ts | 2 +- .../end-to-end/curl_api_generation.spec.ts | 4 +- .../end-to-end/deleteComponentFlows.spec.ts | 20 +- .../tests/end-to-end/dragAndDrop.spec.ts | 5 +- .../end-to-end/dropdownComponent.spec.ts | 30 +- .../end-to-end/fileUploadComponent.spec.ts | 6 +- .../tests/end-to-end/filterEdge.spec.ts | 32 +- .../tests/end-to-end/floatComponent.spec.ts | 22 +- .../tests/end-to-end/flowPage.spec.ts | 2 +- .../tests/end-to-end/flowSettings.spec.ts | 6 +- src/frontend/tests/end-to-end/folders.spec.ts | 152 ++ .../tests/end-to-end/globalVariables.spec.ts | 2 +- src/frontend/tests/end-to-end/group.spec.ts | 7 +- .../tests/end-to-end/inputComponent.spec.ts | 48 +- .../end-to-end/inputListComponent.spec.ts | 20 +- .../tests/end-to-end/intComponent.spec.ts | 34 +- .../end-to-end/keyPairListComponent.spec.ts | 6 +- .../end-to-end/langflowShortcuts.spec.ts | 6 +- src/frontend/tests/end-to-end/logs.spec.ts | 60 + .../end-to-end/promptModalComponent.spec.ts | 6 +- .../end-to-end/python_api_generation.spec.ts | 4 +- .../tests/end-to-end/saveComponents.spec.ts | 4 +- src/frontend/tests/end-to-end/store.spec.ts | 2 +- .../end-to-end/textAreaModalComponent.spec.ts | 4 +- .../tests/end-to-end/textInputOutput.spec.ts | 19 +- .../tests/end-to-end/toggleComponent.spec.ts | 36 +- .../tests/end-to-end/tweaks_test.spec.ts | 12 +- test-results/.last-run.json | 4 + 175 files changed, 6388 insertions(+), 2903 deletions(-) create mode 100644 src/backend/base/langflow/alembic/versions/012fb73ac359_add_folder_table.py create mode 100644 src/backend/base/langflow/alembic/versions/29fe8f1f806b_add_missing_index.py create mode 100644 src/backend/base/langflow/api/v1/folders.py create mode 100644 src/backend/base/langflow/components/outputs/RecordsOutput.py create mode 100644 src/backend/base/langflow/services/database/models/folder/__init__.py create mode 100644 src/backend/base/langflow/services/database/models/folder/constants.py create mode 100644 src/backend/base/langflow/services/database/models/folder/model.py create mode 100644 src/backend/base/langflow/services/database/models/folder/utils.py create mode 100644 src/frontend/src/components/accordionComponent/composite/folderAccordionComponent/index.tsx create mode 100644 src/frontend/src/components/arrayReaderComponent/index.tsx create mode 100644 src/frontend/src/components/cardComponent/components/dragCardComponent/index.tsx create mode 100644 src/frontend/src/components/dateReaderComponent/index.tsx create mode 100644 src/frontend/src/components/horizontalScrollFadeComponent/index.tsx create mode 100644 src/frontend/src/components/inputComponent/components/popover/index.tsx create mode 100644 src/frontend/src/components/inputComponent/components/popoverObject/index.tsx create mode 100644 src/frontend/src/components/numberReader/index.tsx create mode 100644 src/frontend/src/components/objectRender/index.tsx create mode 100644 src/frontend/src/components/recordsOutputComponent/index.tsx create mode 100644 src/frontend/src/components/sidebarComponent/components/sideBarButtons/index.tsx create mode 100644 src/frontend/src/components/sidebarComponent/components/sideBarFolderButtons/index.tsx create mode 100644 src/frontend/src/components/sidebarComponent/hooks/use-on-file-drop.tsx create mode 100644 src/frontend/src/components/stringReaderComponent/index.tsx create mode 100644 src/frontend/src/components/tableAutoCellRender/index.tsx create mode 100644 src/frontend/src/components/ui/alert.tsx create mode 100644 src/frontend/src/components/ui/custom-accordion.tsx create mode 100644 src/frontend/src/components/ui/form.tsx create mode 100644 src/frontend/src/modals/BundleModal/component/index.tsx create mode 100644 src/frontend/src/modals/BundleModal/entities/index.ts create mode 100644 src/frontend/src/modals/BundleModal/hooks/submit-folder.tsx create mode 100644 src/frontend/src/modals/BundleModal/index.tsx create mode 100644 src/frontend/src/modals/flowLogsModal/index.tsx create mode 100644 src/frontend/src/modals/foldersModal/component/index.tsx create mode 100644 src/frontend/src/modals/foldersModal/entities/index.ts create mode 100644 src/frontend/src/modals/foldersModal/hooks/submit-folder.tsx create mode 100644 src/frontend/src/modals/foldersModal/index.tsx delete mode 100644 src/frontend/src/pages/MainPage/components/components/index.tsx create mode 100644 src/frontend/src/pages/MainPage/components/componentsComponent/index.tsx create mode 100644 src/frontend/src/pages/MainPage/components/emptyComponent/index.tsx create mode 100644 src/frontend/src/pages/MainPage/components/headerComponent/index.tsx create mode 100644 src/frontend/src/pages/MainPage/components/modalsComponent/index.tsx create mode 100644 src/frontend/src/pages/MainPage/components/myCollectionComponent/components/headerTabsSearchComponent/index.tsx create mode 100644 src/frontend/src/pages/MainPage/components/myCollectionComponent/components/inputSearchComponent/index.tsx create mode 100644 src/frontend/src/pages/MainPage/components/myCollectionComponent/components/tabsComponent/index.tsx create mode 100644 src/frontend/src/pages/MainPage/components/myCollectionComponent/index.tsx create mode 100644 src/frontend/src/pages/MainPage/entities/index.tsx create mode 100644 src/frontend/src/pages/MainPage/hooks/use-delete-folder.tsx create mode 100644 src/frontend/src/pages/MainPage/hooks/use-dropdown-options.tsx create mode 100644 src/frontend/src/pages/MainPage/hooks/use-on-file-drop.tsx delete mode 100644 src/frontend/src/pages/MainPage/index.tsx create mode 100644 src/frontend/src/pages/MainPage/pages/mainPage/index.tsx create mode 100644 src/frontend/src/pages/MainPage/services/index.ts create mode 100644 src/frontend/src/pages/MainPage/utils/get-name-by-type.ts create mode 100644 src/frontend/src/pages/MainPage/utils/handle-download-folder.ts create mode 100644 src/frontend/src/pages/MainPage/utils/sort-flows.ts create mode 100644 src/frontend/src/stores/foldersStore.tsx create mode 100644 src/frontend/src/stores/utilityStore.ts create mode 100644 src/frontend/src/types/zustand/folders/index.ts create mode 100644 src/frontend/tests/end-to-end/actionsMainPage.spec.ts create mode 100644 src/frontend/tests/end-to-end/folders.spec.ts create mode 100644 src/frontend/tests/end-to-end/logs.spec.ts create mode 100644 test-results/.last-run.json diff --git a/Makefile b/Makefile index 7053ef8cb..d056654f9 100644 --- a/Makefile +++ b/Makefile @@ -141,7 +141,7 @@ backend: @echo 'Setting up the environment' @make setup_env make install_backend - @-kill -9 `lsof -t -i:7860` + @-kill -9 $(lsof -t -i:7860) ifdef login @echo "Running backend autologin is $(login)"; LANGFLOW_AUTO_LOGIN=$(login) poetry run uvicorn --factory langflow.main:create_app --host 0.0.0.0 --port 7860 --reload --env-file .env --loop asyncio diff --git a/docs/docs/contributing/contribute-component.md b/docs/docs/contributing/contribute-component.md index 398fc3b9c..b178a5882 100644 --- a/docs/docs/contributing/contribute-component.md +++ b/docs/docs/contributing/contribute-component.md @@ -16,7 +16,7 @@ You have a new document loader called **MyCustomDocumentLoader** and it would lo 6. Add the dependency to [/documentloaders/\_\_init\_\_.py](https://github.com/langflow-ai/langflow/blob/dev/src/backend/base/langflow/components/documentloaders/__init__.py) as `from .MyCustomDocumentLoader import MyCustomDocumentLoader`. 7. Add any new dependencies to the outer [pyproject.toml](https://github.com/langflow-ai/langflow/blob/dev/pyproject.toml#L27) file. 8. Submit documentation for your component. For this example, you'd submit documentation to the [loaders page](https://github.com/langflow-ai/langflow/blob/dev/docs/docs/components/loaders.mdx). -8. Submit your changes as a pull request. The Langflow team will have a look, suggest changes, and add your component to Langflow. +9. Submit your changes as a pull request. The Langflow team will have a look, suggest changes, and add your component to Langflow. ## User Sharing @@ -27,21 +27,19 @@ If so, you can share your component on the Langflow store. 1. [Register at the Langflow store](https://www.langflow.store/login/). 2. Undergo pre-validation before receiving an API key. 3. To deploy your amazing component directly to the Langflow store, without it being merged into the main source code, navigate to your flow, and then click **Share**. -The share window appears: + The share window appears: 5. Choose whether you want to flow to be public or private. -You can also **Export** your flow as a JSON file from this window. -When you're ready to share the flow, click **Share Flow**. -You should see a **Flow shared successfully** popup. + You can also **Export** your flow as a JSON file from this window. + When you're ready to share the flow, click **Share Flow**. + You should see a **Flow shared successfully** popup. 6. To confirm, navigate to the **Langflow Store** and filter results by **Created By Me**. You should see your new flow on the **Langflow Store**. - - diff --git a/example.har b/example.har index 5021c7da5..a4c59bf31 100644 --- a/example.har +++ b/example.har @@ -28,8 +28,14 @@ { "name": "Sec-Fetch-Dest", "value": "empty" }, { "name": "Sec-Fetch-Mode", "value": "cors" }, { "name": "Sec-Fetch-Site", "value": "same-origin" }, - { "name": "User-Agent", "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36" }, - { "name": "sec-ch-ua", "value": "\"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"" }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36" + }, + { + "name": "sec-ch-ua", + "value": "\"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"" + }, { "name": "sec-ch-ua-mobile", "value": "?0" }, { "name": "sec-ch-ua-platform", "value": "\"Linux\"" } ], @@ -80,8 +86,14 @@ { "name": "Sec-Fetch-Dest", "value": "empty" }, { "name": "Sec-Fetch-Mode", "value": "cors" }, { "name": "Sec-Fetch-Site", "value": "same-origin" }, - { "name": "User-Agent", "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36" }, - { "name": "sec-ch-ua", "value": "\"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"" }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36" + }, + { + "name": "sec-ch-ua", + "value": "\"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"" + }, { "name": "sec-ch-ua-mobile", "value": "?0" }, { "name": "sec-ch-ua-platform", "value": "\"Linux\"" } ], @@ -132,8 +144,14 @@ { "name": "Sec-Fetch-Dest", "value": "empty" }, { "name": "Sec-Fetch-Mode", "value": "cors" }, { "name": "Sec-Fetch-Site", "value": "same-origin" }, - { "name": "User-Agent", "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36" }, - { "name": "sec-ch-ua", "value": "\"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"" }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36" + }, + { + "name": "sec-ch-ua", + "value": "\"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"" + }, { "name": "sec-ch-ua-mobile", "value": "?0" }, { "name": "sec-ch-ua-platform", "value": "\"Linux\"" } ], @@ -184,8 +202,14 @@ { "name": "Sec-Fetch-Dest", "value": "empty" }, { "name": "Sec-Fetch-Mode", "value": "cors" }, { "name": "Sec-Fetch-Site", "value": "same-origin" }, - { "name": "User-Agent", "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36" }, - { "name": "sec-ch-ua", "value": "\"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"" }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36" + }, + { + "name": "sec-ch-ua", + "value": "\"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"" + }, { "name": "sec-ch-ua-mobile", "value": "?0" }, { "name": "sec-ch-ua-platform", "value": "\"Linux\"" } ], @@ -236,8 +260,14 @@ { "name": "Sec-Fetch-Dest", "value": "empty" }, { "name": "Sec-Fetch-Mode", "value": "cors" }, { "name": "Sec-Fetch-Site", "value": "same-origin" }, - { "name": "User-Agent", "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36" }, - { "name": "sec-ch-ua", "value": "\"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"" }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36" + }, + { + "name": "sec-ch-ua", + "value": "\"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"" + }, { "name": "sec-ch-ua-mobile", "value": "?0" }, { "name": "sec-ch-ua-platform", "value": "\"Linux\"" } ], @@ -282,16 +312,28 @@ { "name": "Accept", "value": "application/json, text/plain, */*" }, { "name": "Accept-Encoding", "value": "gzip, deflate, br" }, { "name": "Accept-Language", "value": "en-US,en;q=0.9" }, - { "name": "Authorization", "value": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkMjUzYmZiYS02MzY4LTQ0ZGMtODVmNy0wZDZkYTllNDU5NjgiLCJleHAiOjE3MzM4NTY4OTh9.5MFFb0JCck3ITSKXbxhwO9yAscnXcwXNTV70ZYBRB20" }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkMjUzYmZiYS02MzY4LTQ0ZGMtODVmNy0wZDZkYTllNDU5NjgiLCJleHAiOjE3MzM4NTY4OTh9.5MFFb0JCck3ITSKXbxhwO9yAscnXcwXNTV70ZYBRB20" + }, { "name": "Connection", "value": "keep-alive" }, - { "name": "Cookie", "value": "access_tkn_lflw=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkMjUzYmZiYS02MzY4LTQ0ZGMtODVmNy0wZDZkYTllNDU5NjgiLCJleHAiOjE3MzM4NTY4OTh9.5MFFb0JCck3ITSKXbxhwO9yAscnXcwXNTV70ZYBRB20; refresh_tkn_lflw=auto" }, + { + "name": "Cookie", + "value": "access_tkn_lflw=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkMjUzYmZiYS02MzY4LTQ0ZGMtODVmNy0wZDZkYTllNDU5NjgiLCJleHAiOjE3MzM4NTY4OTh9.5MFFb0JCck3ITSKXbxhwO9yAscnXcwXNTV70ZYBRB20; refresh_tkn_lflw=auto" + }, { "name": "Host", "value": "localhost:3000" }, { "name": "Referer", "value": "http://localhost:3000/flows" }, { "name": "Sec-Fetch-Dest", "value": "empty" }, { "name": "Sec-Fetch-Mode", "value": "cors" }, { "name": "Sec-Fetch-Site", "value": "same-origin" }, - { "name": "User-Agent", "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36" }, - { "name": "sec-ch-ua", "value": "\"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"" }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36" + }, + { + "name": "sec-ch-ua", + "value": "\"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"" + }, { "name": "sec-ch-ua-mobile", "value": "?0" }, { "name": "sec-ch-ua-platform", "value": "\"Linux\"" } ], @@ -315,7 +357,7 @@ "content": { "size": -1, "mimeType": "application/json", - "text": "[{\"name\":\"Awesome Euclid\",\"description\":\"Language Models, Mapped and Mastered.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":374,\"id\":\"PromptTemplate-m2yFu\",\"type\":\"genericNode\",\"position\":{\"x\":462.6456058272081,\"y\":1033.9314297130313},\"data\":{\"type\":\"PromptTemplate\",\"node\":{\"template\":{\"output_parser\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false},\"input_types\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"input_variables\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"transcription\"]},\"partial_variables\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"template\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"prompt\",\"list\":false,\"value\":\"create an image prompt based on the song's lyrics to be used as the album cover of this song:\\n\\nlyrics:\\n{transcription}\"},\"template_format\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"f-string\",\"password\":false,\"name\":\"template_format\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":false},\"validate_template\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"PromptTemplate\",\"transcription\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"transcription\",\"display_name\":\"transcription\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"A prompt template for a language model.\",\"base_classes\":[\"PromptTemplate\",\"StringPromptTemplate\",\"BasePromptTemplate\"],\"name\":\"\",\"display_name\":\"PromptTemplate\",\"documentation\":\"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\"custom_fields\":{\"\":[\"transcription\"],\"template\":[\"transcription\",\"question\"]},\"output_types\":[],\"full_path\":null,\"field_formatters\":{},\"beta\":false,\"error\":null},\"id\":\"PromptTemplate-m2yFu\"},\"selected\":false,\"positionAbsolute\":{\"x\":462.6456058272081,\"y\":1033.9314297130313},\"dragging\":false},{\"width\":384,\"height\":626,\"id\":\"ChatOpenAI-urapv\",\"type\":\"genericNode\",\"position\":{\"x\":189.94856095084924,\"y\":-85.06556385338186},\"data\":{\"type\":\"ChatOpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain_core.callbacks.base.BaseCallbackHandler\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false,\"value\":\"\"},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"gpt-4-1106-preview\",\"password\":false,\"options\":[\"gpt-4-1106-preview\",\"gpt-4\",\"gpt-4-32k\",\"gpt-3.5-turbo\",\"gpt-3.5-turbo-16k\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":0.7,\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ChatOpenAI\"},\"description\":\"`OpenAI` Chat large language models API.\",\"base_classes\":[\"ChatOpenAI\",\"BaseChatModel\",\"BaseLanguageModel\",\"BaseLLM\"],\"display_name\":\"ChatOpenAI\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"ChatOpenAI-urapv\"},\"selected\":false,\"positionAbsolute\":{\"x\":189.94856095084924,\"y\":-85.06556385338186},\"dragging\":false},{\"width\":384,\"height\":806,\"id\":\"CustomComponent-IEIUl\",\"type\":\"genericNode\",\"position\":{\"x\":2364.865919667005,\"y\":88.43094097025096},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nfrom platformdirs import user_cache_dir\\nimport base64\\nfrom PIL import Image\\nfrom io import BytesIO\\nfrom openai import OpenAI\\nfrom pathlib import Path\\n\\nclass Component(CustomComponent):\\n display_name: str = \\\"Image generator\\\"\\n description: str = \\\"generate images using Dall-E\\\"\\n documentation: str = \\\"http://docs.langflow.org/components/custom\\\"\\n\\n def build_config(self):\\n return {\\\"prompt\\\": {\\\"display_name\\\": \\\"Prompt\\\",\\\"input_types\\\":[\\\"str\\\"]},\\n \\\"api_key\\\":{\\\"display_name\\\":\\\"OpenAI API key\\\",\\\"password\\\":True},\\n \\\"model\\\":{\\\"display_name\\\":\\\"Model name\\\",\\\"advanced\\\":True,\\\"options\\\":[\\\"dall-e-2\\\",\\\"dall-e-3\\\"], \\\"value\\\":\\\"dall-e-3\\\"},\\n \\\"file_name\\\":{\\\"display_name\\\":\\\"File Name\\\"},\\n \\\"output_format\\\":{\\\"display_name\\\":\\\"Output format\\\",\\\"options\\\":[\\\"jpeg\\\",\\\"png\\\"],\\\"value\\\":\\\"jpeg\\\"},\\n \\\"width\\\":{\\\"display_name\\\":\\\"Width\\\" ,\\\"value\\\":1024},\\n \\\"height\\\":{\\\"display_name\\\":\\\"Height\\\", \\\"value\\\":1024}\\n }\\n\\n def build(self, prompt:str,api_key:str,model:str,file_name:str,output_format:str,width:int,height:int):\\n client = OpenAI(api_key=api_key)\\n cache_dir = Path(user_cache_dir(\\\"langflow\\\"))\\n images_dir = cache_dir / \\\"images\\\"\\n images_dir.mkdir(parents=True, exist_ok=True)\\n image_path = images_dir / f\\\"{file_name}.{output_format}\\\"\\n response = client.images.generate(\\n model=model,\\n prompt=prompt,\\n size=f\\\"{height}x{width}\\\",\\n response_format=\\\"b64_json\\\",\\n n=1,\\n )\\n # Decode base64-encoded image string\\n binary_data = base64.b64decode(response.data[0].b64_json)\\n # Create PIL Image object from binary image data\\n image_pil = Image.open(BytesIO(binary_data))\\n image_pil.save(image_path, format=output_format.upper())\\n return \\\"\\\"\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"api_key\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"api_key\",\"display_name\":\"OpenAI API key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"file_name\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"file_name\",\"display_name\":\"File Name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"album\"},\"height\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":1024,\"password\":false,\"name\":\"height\",\"display_name\":\"Height\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"model\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"dall-e-3\",\"password\":false,\"options\":[\"dall-e-2\",\"dall-e-3\"],\"name\":\"model\",\"display_name\":\"Model name\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"output_format\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"jpeg\",\"password\":false,\"options\":[\"jpeg\",\"png\"],\"name\":\"output_format\",\"display_name\":\"Output format\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"prompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"prompt\",\"display_name\":\"Prompt\",\"advanced\":false,\"input_types\":[\"str\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"width\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":1024,\"password\":false,\"name\":\"width\",\"display_name\":\"Width\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false}},\"description\":\"generate images using Dall-E\",\"base_classes\":[\"Data\"],\"display_name\":\"Image generator\",\"custom_fields\":{\"api_key\":null,\"file_name\":null,\"height\":null,\"model\":null,\"output_format\":null,\"prompt\":null,\"width\":null},\"output_types\":[\"Data\"],\"documentation\":\"http://docs.langflow.org/components/custom\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-IEIUl\"},\"selected\":false,\"positionAbsolute\":{\"x\":2364.865919667005,\"y\":88.43094097025096}},{\"width\":384,\"height\":338,\"id\":\"LLMChain-KlJb3\",\"type\":\"genericNode\",\"position\":{\"x\":1242.9851164540805,\"y\":-139.74634696823108},\"data\":{\"type\":\"LLMChain\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Callable, Optional, Union\\n\\nfrom langchain.chains import LLMChain\\n\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import (\\n BaseLanguageModel,\\n BaseMemory,\\n BasePromptTemplate,\\n Chain,\\n)\\n\\n\\nclass LLMChainComponent(CustomComponent):\\n display_name = \\\"LLMChain\\\"\\n description = \\\"Chain to run queries against LLMs\\\"\\n\\n def build_config(self):\\n return {\\n \\\"prompt\\\": {\\\"display_name\\\": \\\"Prompt\\\"},\\n \\\"llm\\\": {\\\"display_name\\\": \\\"LLM\\\"},\\n \\\"memory\\\": {\\\"display_name\\\": \\\"Memory\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n prompt: BasePromptTemplate,\\n llm: BaseLanguageModel,\\n memory: Optional[BaseMemory] = None,\\n ) -> Union[Chain, Callable]:\\n return LLMChain(prompt=prompt, llm=llm, memory=memory)\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"display_name\":\"code\"},\"_type\":\"CustomComponent\",\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"display_name\":\"Memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseMemory\",\"list\":false},\"prompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"prompt\",\"display_name\":\"Prompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BasePromptTemplate\",\"list\":false}},\"description\":\"Chain to run queries against LLMs\",\"base_classes\":[\"Chain\",\"Callable\"],\"display_name\":\"LLMChain\",\"custom_fields\":{\"llm\":null,\"memory\":null,\"prompt\":null},\"output_types\":[\"LLMChain\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"LLMChain-KlJb3\"},\"selected\":false,\"positionAbsolute\":{\"x\":1242.9851164540805,\"y\":-139.74634696823108},\"dragging\":false},{\"width\":384,\"height\":328,\"id\":\"CustomComponent-bCuc0\",\"type\":\"genericNode\",\"position\":{\"x\":1747.8107777342625,\"y\":319.13729017446667},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\n\\nclass Component(CustomComponent):\\n display_name: str = \\\"Custom Component\\\"\\n description: str = \\\"Create any custom component you want!\\\"\\n documentation: str = \\\"http://docs.langflow.org/components/custom\\\"\\n\\n def build_config(self):\\n return {\\\"param\\\": {\\\"display_name\\\": \\\"Parameter\\\"}}\\n\\n def build(self, param: Chain) -> str:\\n result = param.run({})\\n self.status = result\\n return result\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"param\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"param\",\"display_name\":\"Parameter\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Chain\",\"list\":false}},\"description\":\"Create any custom component you want!\",\"base_classes\":[\"str\"],\"display_name\":\"Custom Component\",\"custom_fields\":{\"param\":null},\"output_types\":[\"str\"],\"documentation\":\"http://docs.langflow.org/components/custom\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-bCuc0\"},\"selected\":false,\"positionAbsolute\":{\"x\":1747.8107777342625,\"y\":319.13729017446667}}],\"edges\":[{\"source\":\"LLMChain-KlJb3\",\"target\":\"CustomComponent-bCuc0\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“Chainล“,ล“Callableล“],ล“dataTypeล“:ล“LLMChainล“,ล“idล“:ล“LLMChain-KlJb3ล“}\",\"targetHandle\":\"{ล“fieldNameล“:ล“paramล“,ล“idล“:ล“CustomComponent-bCuc0ล“,ล“inputTypesล“:null,ล“typeล“:ล“Chainล“}\",\"id\":\"reactflow__edge-LLMChain-KlJb3{ล“baseClassesล“:[ล“Chainล“,ล“Callableล“],ล“dataTypeล“:ล“LLMChainล“,ล“idล“:ล“LLMChain-KlJb3ล“}-CustomComponent-bCuc0{ล“fieldNameล“:ล“paramล“,ล“idล“:ล“CustomComponent-bCuc0ล“,ล“inputTypesล“:null,ล“typeล“:ล“Chainล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"param\",\"id\":\"CustomComponent-bCuc0\",\"inputTypes\":null,\"type\":\"Chain\"},\"sourceHandle\":{\"baseClasses\":[\"Chain\",\"Callable\"],\"dataType\":\"LLMChain\",\"id\":\"LLMChain-KlJb3\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"selected\":false},{\"source\":\"ChatOpenAI-urapv\",\"target\":\"LLMChain-KlJb3\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“ChatOpenAIล“,ล“BaseChatModelล“,ล“BaseLanguageModelล“,ล“BaseLLMล“],ล“dataTypeล“:ล“ChatOpenAIล“,ล“idล“:ล“ChatOpenAI-urapvล“}\",\"targetHandle\":\"{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“LLMChain-KlJb3ล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLanguageModelล“}\",\"id\":\"reactflow__edge-ChatOpenAI-urapv{ล“baseClassesล“:[ล“ChatOpenAIล“,ล“BaseChatModelล“,ล“BaseLanguageModelล“,ล“BaseLLMล“],ล“dataTypeล“:ล“ChatOpenAIล“,ล“idล“:ล“ChatOpenAI-urapvล“}-LLMChain-KlJb3{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“LLMChain-KlJb3ล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLanguageModelล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"LLMChain-KlJb3\",\"inputTypes\":null,\"type\":\"BaseLanguageModel\"},\"sourceHandle\":{\"baseClasses\":[\"ChatOpenAI\",\"BaseChatModel\",\"BaseLanguageModel\",\"BaseLLM\"],\"dataType\":\"ChatOpenAI\",\"id\":\"ChatOpenAI-urapv\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"selected\":false},{\"source\":\"PromptTemplate-m2yFu\",\"target\":\"LLMChain-KlJb3\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“PromptTemplateล“,ล“StringPromptTemplateล“,ล“BasePromptTemplateล“],ล“dataTypeล“:ล“PromptTemplateล“,ล“idล“:ล“PromptTemplate-m2yFuล“}\",\"targetHandle\":\"{ล“fieldNameล“:ล“promptล“,ล“idล“:ล“LLMChain-KlJb3ล“,ล“inputTypesล“:null,ล“typeล“:ล“BasePromptTemplateล“}\",\"id\":\"reactflow__edge-PromptTemplate-m2yFu{ล“baseClassesล“:[ล“PromptTemplateล“,ล“StringPromptTemplateล“,ล“BasePromptTemplateล“],ล“dataTypeล“:ล“PromptTemplateล“,ล“idล“:ล“PromptTemplate-m2yFuล“}-LLMChain-KlJb3{ล“fieldNameล“:ล“promptล“,ล“idล“:ล“LLMChain-KlJb3ล“,ล“inputTypesล“:null,ล“typeล“:ล“BasePromptTemplateล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"prompt\",\"id\":\"LLMChain-KlJb3\",\"inputTypes\":null,\"type\":\"BasePromptTemplate\"},\"sourceHandle\":{\"baseClasses\":[\"PromptTemplate\",\"StringPromptTemplate\",\"BasePromptTemplate\"],\"dataType\":\"PromptTemplate\",\"id\":\"PromptTemplate-m2yFu\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"selected\":false},{\"source\":\"CustomComponent-bCuc0\",\"target\":\"CustomComponent-IEIUl\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-bCuc0ล“}\",\"targetHandle\":\"{ล“fieldNameล“:ล“promptล“,ล“idล“:ล“CustomComponent-IEIUlล“,ล“inputTypesล“:[ล“strล“],ล“typeล“:ล“strล“}\",\"id\":\"reactflow__edge-CustomComponent-bCuc0{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-bCuc0ล“}-CustomComponent-IEIUl{ล“fieldNameล“:ล“promptล“,ล“idล“:ล“CustomComponent-IEIUlล“,ล“inputTypesล“:[ล“strล“],ล“typeล“:ล“strล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"prompt\",\"id\":\"CustomComponent-IEIUl\",\"inputTypes\":[\"str\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-bCuc0\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"selected\":false}],\"viewport\":{\"x\":92.23454077990459,\"y\":183.8125619056221,\"zoom\":0.6070974421975234}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:33:18.503954\",\"folder\":null,\"id\":\"fe142ce5-32dc-4955-b186-672ced662f13\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Goofy Darwin\",\"description\":\"Conversation Catalyst Engine.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":626,\"id\":\"OpenAI-3ZVDh\",\"type\":\"genericNode\",\"position\":{\"x\":-4.0041891741949485,\"y\":-114.02615182719649},\"data\":{\"type\":\"OpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain_core.callbacks.base.BaseCallbackHandler\",\"list\":true},\"allowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":[],\"password\":false,\"name\":\"allowed_special\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"batch_size\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":20,\"password\":false,\"name\":\"batch_size\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"best_of\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"best_of\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"disallowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"all\",\"password\":false,\"name\":\"disallowed_special\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"frequency_penalty\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":0,\"password\":false,\"name\":\"frequency_penalty\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"logit_bias\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"logit_bias\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":256,\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"text-davinci-003\",\"password\":false,\"options\":[\"text-davinci-003\",\"text-davinci-002\",\"text-curie-001\",\"text-babbage-001\",\"text-ada-001\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"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\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"presence_penalty\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":0,\"password\":false,\"name\":\"presence_penalty\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":0.7,\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"top_p\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"top_p\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"OpenAI\"},\"description\":\"OpenAI large language models.\",\"base_classes\":[\"OpenAI\",\"BaseLLM\",\"BaseOpenAI\",\"BaseLanguageModel\"],\"display_name\":\"OpenAI\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/llms/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"OpenAI-3ZVDh\"},\"selected\":true,\"positionAbsolute\":{\"x\":-4.0041891741949485,\"y\":-114.02615182719649},\"dragging\":false},{\"width\":384,\"height\":338,\"id\":\"LLMChain-RFYXY\",\"type\":\"genericNode\",\"position\":{\"x\":586.672100458868,\"y\":10.967049167706678},\"data\":{\"type\":\"LLMChain\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Callable, Optional, Union\\n\\nfrom langchain.chains import LLMChain\\n\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import (\\n BaseLanguageModel,\\n BaseMemory,\\n BasePromptTemplate,\\n Chain,\\n)\\n\\n\\nclass LLMChainComponent(CustomComponent):\\n display_name = \\\"LLMChain\\\"\\n description = \\\"Chain to run queries against LLMs\\\"\\n\\n def build_config(self):\\n return {\\n \\\"prompt\\\": {\\\"display_name\\\": \\\"Prompt\\\"},\\n \\\"llm\\\": {\\\"display_name\\\": \\\"LLM\\\"},\\n \\\"memory\\\": {\\\"display_name\\\": \\\"Memory\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n prompt: BasePromptTemplate,\\n llm: BaseLanguageModel,\\n memory: Optional[BaseMemory] = None,\\n ) -> Union[Chain, Callable]:\\n return LLMChain(prompt=prompt, llm=llm, memory=memory)\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"display_name\":\"Memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseMemory\",\"list\":false},\"prompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"prompt\",\"display_name\":\"Prompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BasePromptTemplate\",\"list\":false}},\"description\":\"Chain to run queries against LLMs\",\"base_classes\":[\"Chain\",\"Callable\"],\"display_name\":\"LLMChain\",\"custom_fields\":{\"llm\":null,\"memory\":null,\"prompt\":null},\"output_types\":[\"LLMChain\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"LLMChain-RFYXY\"},\"positionAbsolute\":{\"x\":586.672100458868,\"y\":10.967049167706678}},{\"width\":384,\"height\":242,\"id\":\"ChatPromptTemplate-ce1sg\",\"type\":\"genericNode\",\"position\":{\"x\":395.598984452791,\"y\":612.188491773035},\"data\":{\"type\":\"ChatPromptTemplate\",\"node\":{\"template\":{\"messages\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"messages\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseMessagePromptTemplate\",\"list\":true},\"output_parser\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false},\"input_types\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"input_variables\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true},\"partial_variables\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"validate_template\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ChatPromptTemplate\"},\"description\":\"A prompt template for chat models.\",\"base_classes\":[\"ChatPromptTemplate\",\"BaseChatPromptTemplate\",\"BasePromptTemplate\"],\"display_name\":\"ChatPromptTemplate\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/chat/how_to/prompts\",\"beta\":false,\"error\":null},\"id\":\"ChatPromptTemplate-ce1sg\"},\"selected\":false,\"positionAbsolute\":{\"x\":395.598984452791,\"y\":612.188491773035},\"dragging\":false}],\"edges\":[{\"source\":\"OpenAI-3ZVDh\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“OpenAIล“,ล“BaseLLMล“,ล“BaseOpenAIล“,ล“BaseLanguageModelล“],ล“dataTypeล“:ล“OpenAIล“,ล“idล“:ล“OpenAI-3ZVDhล“}\",\"target\":\"LLMChain-RFYXY\",\"targetHandle\":\"{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“LLMChain-RFYXYล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLanguageModelล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"LLMChain-RFYXY\",\"inputTypes\":null,\"type\":\"BaseLanguageModel\"},\"sourceHandle\":{\"baseClasses\":[\"OpenAI\",\"BaseLLM\",\"BaseOpenAI\",\"BaseLanguageModel\"],\"dataType\":\"OpenAI\",\"id\":\"OpenAI-3ZVDh\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-OpenAI-3ZVDh{ล“baseClassesล“:[ล“OpenAIล“,ล“BaseLLMล“,ล“BaseOpenAIล“,ล“BaseLanguageModelล“],ล“dataTypeล“:ล“OpenAIล“,ล“idล“:ล“OpenAI-3ZVDhล“}-LLMChain-RFYXY{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“LLMChain-RFYXYล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLanguageModelล“}\"},{\"source\":\"ChatPromptTemplate-ce1sg\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“ChatPromptTemplateล“,ล“BaseChatPromptTemplateล“,ล“BasePromptTemplateล“],ล“dataTypeล“:ล“ChatPromptTemplateล“,ล“idล“:ล“ChatPromptTemplate-ce1sgล“}\",\"target\":\"LLMChain-RFYXY\",\"targetHandle\":\"{ล“fieldNameล“:ล“promptล“,ล“idล“:ล“LLMChain-RFYXYล“,ล“inputTypesล“:null,ล“typeล“:ล“BasePromptTemplateล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"prompt\",\"id\":\"LLMChain-RFYXY\",\"inputTypes\":null,\"type\":\"BasePromptTemplate\"},\"sourceHandle\":{\"baseClasses\":[\"ChatPromptTemplate\",\"BaseChatPromptTemplate\",\"BasePromptTemplate\"],\"dataType\":\"ChatPromptTemplate\",\"id\":\"ChatPromptTemplate-ce1sg\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-ChatPromptTemplate-ce1sg{ล“baseClassesล“:[ล“ChatPromptTemplateล“,ล“BaseChatPromptTemplateล“,ล“BasePromptTemplateล“],ล“dataTypeล“:ล“ChatPromptTemplateล“,ล“idล“:ล“ChatPromptTemplate-ce1sgล“}-LLMChain-RFYXY{ล“fieldNameล“:ล“promptล“,ล“idล“:ล“LLMChain-RFYXYล“,ล“inputTypesล“:null,ล“typeล“:ล“BasePromptTemplateล“}\"}],\"viewport\":{\"x\":8.832868402772647,\"y\":189.85443326477025,\"zoom\":0.6070974421975235}},\"is_component\":false,\"updated_at\":\"2023-12-04T22:50:19.584160\",\"folder\":null,\"id\":\"103766f0-1f50-427a-9ba7-2ab73343c524\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Perky Easley\",\"description\":\"Your Toolkit for Text Generation.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":626,\"id\":\"ChatOpenAI-VPh47\",\"type\":\"genericNode\",\"position\":{\"x\":-328.5742193020408,\"y\":-420.1025929438987},\"data\":{\"type\":\"ChatOpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain_core.callbacks.base.BaseCallbackHandler\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"gpt-3.5-turbo\",\"password\":false,\"options\":[\"gpt-4-1106-preview\",\"gpt-4\",\"gpt-4-32k\",\"gpt-3.5-turbo\",\"gpt-3.5-turbo-16k\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"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\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":0.7,\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ChatOpenAI\"},\"description\":\"`OpenAI` Chat large language models API.\",\"base_classes\":[\"BaseChatModel\",\"ChatOpenAI\",\"BaseLanguageModel\",\"BaseLLM\"],\"display_name\":\"ChatOpenAI\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"ChatOpenAI-VPh47\"},\"selected\":false,\"positionAbsolute\":{\"x\":-328.5742193020408,\"y\":-420.1025929438987},\"dragging\":false},{\"width\":384,\"height\":338,\"id\":\"LLMChain-NgFyo\",\"type\":\"genericNode\",\"position\":{\"x\":225.3113389084088,\"y\":-193.3520019494289},\"data\":{\"type\":\"LLMChain\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Callable, Optional, Union\\n\\nfrom langchain.chains import LLMChain\\n\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import (\\n BaseLanguageModel,\\n BaseMemory,\\n BasePromptTemplate,\\n Chain,\\n)\\n\\n\\nclass LLMChainComponent(CustomComponent):\\n display_name = \\\"LLMChain\\\"\\n description = \\\"Chain to run queries against LLMs\\\"\\n\\n def build_config(self):\\n return {\\n \\\"prompt\\\": {\\\"display_name\\\": \\\"Prompt\\\"},\\n \\\"llm\\\": {\\\"display_name\\\": \\\"LLM\\\"},\\n \\\"memory\\\": {\\\"display_name\\\": \\\"Memory\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n prompt: BasePromptTemplate,\\n llm: BaseLanguageModel,\\n memory: Optional[BaseMemory] = None,\\n ) -> Union[Chain, Callable]:\\n return LLMChain(prompt=prompt, llm=llm, memory=memory)\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"display_name\":\"Memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseMemory\",\"list\":false},\"prompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"prompt\",\"display_name\":\"Prompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BasePromptTemplate\",\"list\":false}},\"description\":\"Chain to run queries against LLMs\",\"base_classes\":[\"Chain\",\"Callable\"],\"display_name\":\"LLMChain\",\"custom_fields\":{\"llm\":null,\"memory\":null,\"prompt\":null},\"output_types\":[\"LLMChain\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"LLMChain-NgFyo\"},\"selected\":false,\"positionAbsolute\":{\"x\":225.3113389084088,\"y\":-193.3520019494289},\"dragging\":false},{\"width\":384,\"height\":374,\"id\":\"PromptTemplate-oAFjh\",\"type\":\"genericNode\",\"position\":{\"x\":-342.62522294052764,\"y\":391.20629510686103},\"data\":{\"type\":\"PromptTemplate\",\"node\":{\"template\":{\"output_parser\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false},\"input_types\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"input_variables\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"links\"]},\"partial_variables\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"template\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"prompt\",\"list\":false,\"value\":\"Answer everything with links\\n{links}\"},\"template_format\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"f-string\",\"password\":false,\"name\":\"template_format\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":false},\"validate_template\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"PromptTemplate\",\"links\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"links\",\"display_name\":\"links\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"A prompt template for a language model.\",\"base_classes\":[\"BasePromptTemplate\",\"StringPromptTemplate\",\"PromptTemplate\"],\"name\":\"\",\"display_name\":\"PromptTemplate\",\"documentation\":\"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\"custom_fields\":{\"\":[\"links\"]},\"output_types\":[],\"full_path\":null,\"field_formatters\":{},\"beta\":false,\"error\":null},\"id\":\"PromptTemplate-oAFjh\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":-342.62522294052764,\"y\":391.20629510686103}}],\"edges\":[{\"source\":\"ChatOpenAI-VPh47\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“BaseChatModelล“,ล“ChatOpenAIล“,ล“BaseLanguageModelล“,ล“BaseLLMล“],ล“dataTypeล“:ล“ChatOpenAIล“,ล“idล“:ล“ChatOpenAI-VPh47ล“}\",\"target\":\"LLMChain-NgFyo\",\"targetHandle\":\"{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“LLMChain-NgFyoล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLanguageModelล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"LLMChain-NgFyo\",\"inputTypes\":null,\"type\":\"BaseLanguageModel\"},\"sourceHandle\":{\"baseClasses\":[\"BaseChatModel\",\"ChatOpenAI\",\"BaseLanguageModel\",\"BaseLLM\"],\"dataType\":\"ChatOpenAI\",\"id\":\"ChatOpenAI-VPh47\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-ChatOpenAI-VPh47{ล“baseClassesล“:[ล“BaseChatModelล“,ล“ChatOpenAIล“,ล“BaseLanguageModelล“,ล“BaseLLMล“],ล“dataTypeล“:ล“ChatOpenAIล“,ล“idล“:ล“ChatOpenAI-VPh47ล“}-LLMChain-NgFyo{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“LLMChain-NgFyoล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLanguageModelล“}\"},{\"source\":\"PromptTemplate-oAFjh\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“BasePromptTemplateล“,ล“StringPromptTemplateล“,ล“PromptTemplateล“],ล“dataTypeล“:ล“PromptTemplateล“,ล“idล“:ล“PromptTemplate-oAFjhล“}\",\"target\":\"LLMChain-NgFyo\",\"targetHandle\":\"{ล“fieldNameล“:ล“promptล“,ล“idล“:ล“LLMChain-NgFyoล“,ล“inputTypesล“:null,ล“typeล“:ล“BasePromptTemplateล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"prompt\",\"id\":\"LLMChain-NgFyo\",\"inputTypes\":null,\"type\":\"BasePromptTemplate\"},\"sourceHandle\":{\"baseClasses\":[\"BasePromptTemplate\",\"StringPromptTemplate\",\"PromptTemplate\"],\"dataType\":\"PromptTemplate\",\"id\":\"PromptTemplate-oAFjh\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-PromptTemplate-oAFjh{ล“baseClassesล“:[ล“BasePromptTemplateล“,ล“StringPromptTemplateล“,ล“PromptTemplateล“],ล“dataTypeล“:ล“PromptTemplateล“,ล“idล“:ล“PromptTemplate-oAFjhล“}-LLMChain-NgFyo{ล“fieldNameล“:ล“promptล“,ล“idล“:ล“LLMChain-NgFyoล“,ล“inputTypesล“:null,ล“typeล“:ล“BasePromptTemplateล“}\"}],\"viewport\":{\"x\":338.6546182690814,\"y\":53.026340800283265,\"zoom\":0.7169776240079143}},\"is_component\":false,\"updated_at\":\"2023-12-04T22:53:25.148460\",\"folder\":null,\"id\":\"a794fc48-5e9b-42a3-924f-7fe610500035\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"(D) Basic Chat (1) (4)\",\"description\":\"Simplest possible chat model\",\"data\":{\"nodes\":[{\"width\":384,\"height\":626,\"id\":\"ChatOpenAI-fBcfh\",\"type\":\"genericNode\",\"position\":{\"x\":228.87326389541306,\"y\":465.8628482073749},\"data\":{\"type\":\"ChatOpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain.callbacks.base.BaseCallbackHandler\",\"list\":true},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":6,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"gpt-3.5-turbo\",\"password\":false,\"options\":[\"gpt-3.5-turbo-0613\",\"gpt-3.5-turbo\",\"gpt-3.5-turbo-16k-0613\",\"gpt-3.5-turbo-16k\",\"gpt-4-0613\",\"gpt-4-32k-0613\",\"gpt-4\",\"gpt-4-32k\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"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\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false,\"value\":60},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":0.7,\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ChatOpenAI\"},\"description\":\"`OpenAI` Chat large language models API.\",\"base_classes\":[\"BaseChatModel\",\"BaseLanguageModel\",\"ChatOpenAI\",\"BaseLLM\"],\"display_name\":\"ChatOpenAI\",\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai\"},\"id\":\"ChatOpenAI-fBcfh\",\"value\":null},\"selected\":false,\"dragging\":false,\"positionAbsolute\":{\"x\":228.87326389541306,\"y\":465.8628482073749}},{\"width\":384,\"height\":310,\"id\":\"ConversationChain-bVNex\",\"type\":\"genericNode\",\"position\":{\"x\":806,\"y\":554},\"data\":{\"type\":\"ConversationChain\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain.callbacks.base.BaseCallbackHandler\",\"list\":true},\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseMemory\",\"list\":false},\"output_parser\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":{\"_type\":\"default\"},\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLLMOutputParser\",\"list\":false},\"prompt\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":{\"input_variables\":[\"history\",\"input\"],\"output_parser\":null,\"partial_variables\":{},\"template\":\"The following is a friendly conversation between a human and an AI. The AI is talkative and provides lots of specific details from its context. If the AI does not know the answer to a question, it truthfully says it does not know.\\n\\nCurrent conversation:\\n{history}\\nHuman: {input}\\nAI:\",\"template_format\":\"f-string\",\"validate_template\":true,\"_type\":\"prompt\"},\"password\":false,\"name\":\"prompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BasePromptTemplate\",\"list\":false},\"input_key\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"input\",\"password\":false,\"name\":\"input_key\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"llm_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"llm_kwargs\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"output_key\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"response\",\"password\":false,\"name\":\"output_key\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"return_final_only\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":true,\"password\":false,\"name\":\"return_final_only\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ConversationChain\"},\"description\":\"Chain to have a conversation and load context from memory.\",\"base_classes\":[\"ConversationChain\",\"Chain\",\"LLMChain\",\"function\"],\"display_name\":\"ConversationChain\",\"documentation\":\"\"},\"id\":\"ConversationChain-bVNex\",\"value\":null},\"selected\":false,\"dragging\":false,\"positionAbsolute\":{\"x\":806,\"y\":554}}],\"edges\":[{\"source\":\"ChatOpenAI-fBcfh\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“BaseChatModelล“,ล“BaseLanguageModelล“,ล“ChatOpenAIล“,ล“BaseLLMล“],ล“dataTypeล“:ล“ChatOpenAIล“,ล“idล“:ล“ChatOpenAI-fBcfhล“}\",\"target\":\"ConversationChain-bVNex\",\"targetHandle\":\"{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“ConversationChain-bVNexล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLanguageModelล“}\",\"className\":\"stroke-gray-900 stroke-connection\",\"id\":\"reactflow__edge-ChatOpenAI-fBcfh{ล“baseClassesล“:[ล“BaseChatModelล“,ล“BaseLanguageModelล“,ล“ChatOpenAIล“,ล“BaseLLMล“],ล“dataTypeล“:ล“ChatOpenAIล“,ล“idล“:ล“ChatOpenAI-fBcfhล“}-ConversationChain-bVNex{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“ConversationChain-bVNexล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLanguageModelล“}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"BaseChatModel\",\"BaseLanguageModel\",\"ChatOpenAI\",\"BaseLLM\"],\"dataType\":\"ChatOpenAI\",\"id\":\"ChatOpenAI-fBcfh\"},\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"ConversationChain-bVNex\",\"inputTypes\":null,\"type\":\"BaseLanguageModel\"}},\"style\":{\"stroke\":\"#555\"},\"animated\":false}],\"viewport\":{\"x\":-118.21416568593895,\"y\":-240.64815770363373,\"zoom\":0.7642485855675408}},\"is_component\":false,\"updated_at\":\"2023-12-04T22:57:55.879806\",\"folder\":null,\"id\":\"bddebeea-b80a-4b28-8895-c4425687dcce\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Directory Loader\",\"description\":\"Generic File Loader\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"import os\\n\\nfrom langchain.schema import Document\\nfrom langflow import CustomComponent\\nimport glob\\n\\nclass DirectoryLoaderComponent(CustomComponent):\\n display_name: str = \\\"Directory Loader\\\"\\n description: str = \\\"Generic File Loader\\\"\\n beta = True\\n loaders_info = [\\n {\\n \\\"loader\\\": \\\"AirbyteJSONLoader\\\",\\n \\\"name\\\": \\\"Airbyte JSON (.jsonl)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.AirbyteJSONLoader\\\",\\n \\\"defaultFor\\\": [\\\"jsonl\\\"],\\n \\\"allowdTypes\\\": [\\\"jsonl\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"JSONLoader\\\",\\n \\\"name\\\": \\\"JSON (.json)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.JSONLoader\\\",\\n \\\"defaultFor\\\": [\\\"json\\\"],\\n \\\"allowdTypes\\\": [\\\"json\\\"],\\n \\\"kwargs\\\": {\\\"jq_schema\\\": \\\".\\\", \\\"text_content\\\": False}\\n },\\n {\\n \\\"loader\\\": \\\"BSHTMLLoader\\\",\\n \\\"name\\\": \\\"BeautifulSoup4 HTML (.html, .htm)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.BSHTMLLoader\\\",\\n \\\"allowdTypes\\\": [\\\"html\\\", \\\"htm\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"CSVLoader\\\",\\n \\\"name\\\": \\\"CSV (.csv)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.CSVLoader\\\",\\n \\\"defaultFor\\\": [\\\"csv\\\"],\\n \\\"allowdTypes\\\": [\\\"csv\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"CoNLLULoader\\\",\\n \\\"name\\\": \\\"CoNLL-U (.conllu)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.CoNLLULoader\\\",\\n \\\"defaultFor\\\": [\\\"conllu\\\"],\\n \\\"allowdTypes\\\": [\\\"conllu\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"EverNoteLoader\\\",\\n \\\"name\\\": \\\"EverNote (.enex)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.EverNoteLoader\\\",\\n \\\"defaultFor\\\": [\\\"enex\\\"],\\n \\\"allowdTypes\\\": [\\\"enex\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"FacebookChatLoader\\\",\\n \\\"name\\\": \\\"Facebook Chat (.json)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.FacebookChatLoader\\\",\\n \\\"allowdTypes\\\": [\\\"json\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"OutlookMessageLoader\\\",\\n \\\"name\\\": \\\"Outlook Message (.msg)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.OutlookMessageLoader\\\",\\n \\\"defaultFor\\\": [\\\"msg\\\"],\\n \\\"allowdTypes\\\": [\\\"msg\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"PyPDFLoader\\\",\\n \\\"name\\\": \\\"PyPDF (.pdf)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.PyPDFLoader\\\",\\n \\\"defaultFor\\\": [\\\"pdf\\\"],\\n \\\"allowdTypes\\\": [\\\"pdf\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"STRLoader\\\",\\n \\\"name\\\": \\\"Subtitle (.str)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.STRLoader\\\",\\n \\\"defaultFor\\\": [\\\"str\\\"],\\n \\\"allowdTypes\\\": [\\\"str\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"TextLoader\\\",\\n \\\"name\\\": \\\"Text (.txt)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.TextLoader\\\",\\n \\\"defaultFor\\\": [\\\"txt\\\"],\\n \\\"allowdTypes\\\": [\\\"txt\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"UnstructuredEmailLoader\\\",\\n \\\"name\\\": \\\"Unstructured Email (.eml)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.UnstructuredEmailLoader\\\",\\n \\\"defaultFor\\\": [\\\"eml\\\"],\\n \\\"allowdTypes\\\": [\\\"eml\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"UnstructuredHTMLLoader\\\",\\n \\\"name\\\": \\\"Unstructured HTML (.html, .htm)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.UnstructuredHTMLLoader\\\",\\n \\\"defaultFor\\\": [\\\"html\\\", \\\"htm\\\"],\\n \\\"allowdTypes\\\": [\\\"html\\\", \\\"htm\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"UnstructuredMarkdownLoader\\\",\\n \\\"name\\\": \\\"Unstructured Markdown (.md)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.UnstructuredMarkdownLoader\\\",\\n \\\"defaultFor\\\": [\\\"md\\\"],\\n \\\"allowdTypes\\\": [\\\"md\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"UnstructuredPowerPointLoader\\\",\\n \\\"name\\\": \\\"Unstructured PowerPoint (.pptx)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.UnstructuredPowerPointLoader\\\",\\n \\\"defaultFor\\\": [\\\"pptx\\\"],\\n \\\"allowdTypes\\\": [\\\"pptx\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"UnstructuredWordLoader\\\",\\n \\\"name\\\": \\\"Unstructured Word (.docx)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.UnstructuredWordLoader\\\",\\n \\\"defaultFor\\\": [\\\"docx\\\"],\\n \\\"allowdTypes\\\": [\\\"docx\\\"],\\n },\\n]\\n\\n\\n def build_config(self):\\n loader_options = [\\\"Automatic\\\"] + [\\n loader_info[\\\"name\\\"] for loader_info in self.loaders_info\\n ]\\n\\n file_types = []\\n suffixes = []\\n\\n for loader_info in self.loaders_info:\\n if \\\"allowedTypes\\\" in loader_info:\\n file_types.extend(loader_info[\\\"allowedTypes\\\"])\\n suffixes.extend([f\\\".{ext}\\\" for ext in loader_info[\\\"allowedTypes\\\"]])\\n\\n return {\\n \\\"directory_path\\\": {\\n \\\"display_name\\\": \\\"Directory Path\\\",\\n \\\"required\\\": True,\\n },\\n \\\"loader\\\": {\\n \\\"display_name\\\": \\\"Loader\\\",\\n \\\"is_list\\\": True,\\n \\\"required\\\": True,\\n \\\"options\\\": loader_options,\\n \\\"value\\\": \\\"Automatic\\\",\\n },\\n }\\n\\n def build(self, directory_path: str, loader: str) -> Document:\\n # Verifique se o diretรณrio existe\\n if not os.path.exists(directory_path):\\n raise ValueError(f\\\"Directory not found: {directory_path}\\\")\\n\\n files = glob.glob(directory_path + \\\"/*.*\\\")\\n\\n\\n loader_info = None\\n if loader == \\\"Automatic\\\":\\n for file in files:\\n file_type = file.split(\\\".\\\")[-1]\\n\\n\\n for info in self.loaders_info:\\n if \\\"defaultFor\\\" in info:\\n if file_type in info[\\\"defaultFor\\\"]:\\n loader_info = info\\n break\\n if loader_info:\\n break\\n\\n if not loader_info:\\n raise ValueError(\\n \\\"No default loader found for any file in the directory\\\"\\n )\\n\\n else:\\n for info in self.loaders_info:\\n if info[\\\"name\\\"] == loader:\\n loader_info = info\\n break\\n\\n if not loader_info:\\n raise ValueError(f\\\"Loader {loader} not found in the loader info list\\\")\\n\\n loader_import = loader_info[\\\"import\\\"]\\n module_name, class_name = loader_import.rsplit(\\\".\\\", 1)\\n\\n try:\\n # Importe o loader dinamicamente\\n loader_module = __import__(module_name, fromlist=[class_name])\\n loader_instance = getattr(loader_module, class_name)\\n except ImportError as e:\\n raise ValueError(\\n f\\\"Loader {loader} could not be imported\\\\nLoader info:\\\\n{loader_info}\\\"\\n ) from e\\n\\n results = []\\n for file in files:\\n file_path = os.path.join(directory_path, file)\\n kwargs = loader_info.get(\\\"kwargs\\\", {})\\n result = loader_instance(file_path=file_path, **kwargs).load()\\n results.append(result)\\n self.status = results\\n return results\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"directory_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"directory_path\",\"display_name\":\"Directory Path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"/Users/ogabrielluiz/Projects/langflow2/docs\"},\"loader\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"Automatic\",\"password\":false,\"options\":[\"Automatic\",\"Airbyte JSON (.jsonl)\",\"JSON (.json)\",\"BeautifulSoup4 HTML (.html, .htm)\",\"CSV (.csv)\",\"CoNLL-U (.conllu)\",\"EverNote (.enex)\",\"Facebook Chat (.json)\",\"Outlook Message (.msg)\",\"PyPDF (.pdf)\",\"Subtitle (.str)\",\"Text (.txt)\",\"Unstructured Email (.eml)\",\"Unstructured HTML (.html, .htm)\",\"Unstructured Markdown (.md)\",\"Unstructured PowerPoint (.pptx)\",\"Unstructured Word (.docx)\"],\"name\":\"loader\",\"display_name\":\"Loader\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true}},\"description\":\"Generic File Loader\",\"base_classes\":[\"Document\"],\"display_name\":\"Directory Loader\",\"custom_fields\":{\"directory_path\":null,\"loader\":null},\"output_types\":[\"Document\"],\"documentation\":\"\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"CustomComponent-Ip6tG\"},\"id\":\"CustomComponent-Ip6tG\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-04T22:58:38.570303\",\"folder\":null,\"id\":\"5fe4debc-b6a7-45d4-a694-c02d8aa93b08\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Whisper Transcriber\",\"description\":\"Converts audio to text using OpenAI's Whisper.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom typing import Optional, List, Dict, Union\\nfrom langflow.field_typing import (\\n AgentExecutor,\\n BaseChatMemory,\\n BaseLanguageModel,\\n BaseLLM,\\n BaseLoader,\\n BaseMemory,\\n BaseOutputParser,\\n BasePromptTemplate,\\n BaseRetriever,\\n Callable,\\n Chain,\\n ChatPromptTemplate,\\n Data,\\n Document,\\n Embeddings,\\n NestedDict,\\n Object,\\n PromptTemplate,\\n TextSplitter,\\n Tool,\\n VectorStore,\\n)\\n\\nfrom openai import OpenAI\\nclass Component(CustomComponent):\\n display_name: str = \\\"Whisper Transcriber\\\"\\n description: str = \\\"Converts audio to text using OpenAI's Whisper.\\\"\\n\\n def build_config(self):\\n return {\\\"audio\\\":{\\\"field_type\\\":\\\"file\\\",\\\"suffixes\\\":[\\\".mp3\\\", \\\".mp4\\\", \\\".m4a\\\"]},\\\"OpenAIKey\\\":{\\\"field_type\\\":\\\"str\\\",\\\"password\\\":True}}\\n\\n def build(self, audio:str, OpenAIKey:str) -> str:\\n \\n # TODO: if output path, persist & load it instead\\n \\n client = OpenAI(api_key=OpenAIKey)\\n \\n audio_file= open(audio, \\\"rb\\\")\\n transcript = client.audio.transcriptions.create(\\n model=\\\"whisper-1\\\", \\n file=audio_file,\\n response_format=\\\"text\\\"\\n )\\n \\n \\n self.status = transcript\\n return transcript\\n\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"OpenAIKey\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"OpenAIKey\",\"display_name\":\"OpenAIKey\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"audio\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"suffixes\":[\".mp3\",\".mp4\",\".m4a\"],\"password\":false,\"name\":\"audio\",\"display_name\":\"audio\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"file_path\":\"/Users/rodrigonader/Library/Caches/langflow/19b3e1c9-90bf-405f-898a-e982f47adf76/a3308ce7e9b10088fcd985aabb6d17b012c6b6e81ff8806356574474c9d10229.m4a\",\"value\":\"Audio Recording 2023-11-29 at 12.12.04.m4a\"}},\"description\":\"Converts audio to text using OpenAI's Whisper.\",\"base_classes\":[\"str\"],\"display_name\":\"Whisper Transcriber\",\"custom_fields\":{\"OpenAIKey\":null,\"audio\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"CustomComponent-GJRrs\"},\"id\":\"CustomComponent-GJRrs\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-04T22:58:39.710502\",\"folder\":null,\"id\":\"bd9e911d-46bd-429f-aa75-dd740430695e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Youtube Conversation\",\"description\":\"Craft Meaningful Interactions, Generate Value.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":589,\"id\":\"CustomComponent-h0NSI\",\"type\":\"genericNode\",\"position\":{\"x\":714.9531293402755,\"y\":0.4994374160582993},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"import requests\\nfrom langflow import CustomComponent\\nfrom langchain.llms.base import BaseLLM\\nfrom langchain.schema import Document\\nfrom langchain.document_loaders import YoutubeLoader\\n\\n# Example usage:\\n\\nclass YourComponent(CustomComponent):\\n display_name: str = \\\"YouTube Transcript\\\"\\n description: str = \\\"YouTube transcripts refer to the written text versions of the spoken content in a video uploaded to the YouTube platform.\\\"\\n\\n def build_config(self):\\n return {\\\"url\\\": {\\\"multiline\\\": True, \\\"required\\\": True}}\\n\\n def build(self, url: str, llm: BaseLLM, dependencies: Document, language: str = \\\"en\\\") -> Document:\\n dependencies\\n response = requests.get(url)\\n loader = YoutubeLoader.from_youtube_url(url, add_video_info=True, language=[language])\\n result = loader.load()\\n self.repr_value = str(result)\\n return result\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"dependencies\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"dependencies\",\"display_name\":\"dependencies\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Document\",\"list\":false},\"language\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"en\",\"password\":false,\"name\":\"language\",\"display_name\":\"language\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"llm\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLLM\",\"list\":false},\"url\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"YouTube transcripts refer to the written text versions of the spoken content in a video uploaded to the YouTube platform.\",\"base_classes\":[\"Document\"],\"display_name\":\"YouTube Transcript\",\"custom_fields\":{\"dependencies\":null,\"language\":null,\"llm\":null,\"url\":null},\"output_types\":[\"Document\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-h0NSI\"},\"selected\":false,\"dragging\":false,\"positionAbsolute\":{\"x\":714.9531293402755,\"y\":0.4994374160582993}},{\"width\":384,\"height\":629,\"id\":\"ChatOpenAI-q61Y2\",\"type\":\"genericNode\",\"position\":{\"x\":18,\"y\":625.5521045590924},\"data\":{\"type\":\"ChatOpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain.callbacks.base.BaseCallbackHandler\",\"list\":true},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":6,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false,\"value\":\"\"},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"gpt-3.5-turbo-16k\",\"password\":false,\"options\":[\"gpt-3.5-turbo-0613\",\"gpt-3.5-turbo\",\"gpt-3.5-turbo-16k-0613\",\"gpt-3.5-turbo-16k\",\"gpt-4-0613\",\"gpt-4-32k-0613\",\"gpt-4\",\"gpt-4-32k\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":0.7,\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ChatOpenAI\"},\"description\":\"`OpenAI` Chat large language models API.\",\"base_classes\":[\"ChatOpenAI\",\"BaseChatModel\",\"BaseLanguageModel\",\"BaseLLM\"],\"display_name\":\"ChatOpenAI\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"ChatOpenAI-q61Y2\"},\"selected\":false,\"positionAbsolute\":{\"x\":18,\"y\":625.5521045590924},\"dragging\":false},{\"width\":384,\"height\":539,\"id\":\"Chroma-gVhy7\",\"type\":\"genericNode\",\"position\":{\"x\":2110.365967257855,\"y\":805.0149521868784},\"data\":{\"type\":\"Chroma\",\"node\":{\"template\":{\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"chromadb.Client\",\"list\":false},\"client_settings\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client_settings\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"chromadb.config.Setting\",\"list\":true},\"documents\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"documents\",\"display_name\":\"Documents\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Document\",\"list\":true},\"embedding\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"embedding\",\"display_name\":\"Embedding\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Embeddings\",\"list\":false},\"chroma_server_cors_allow_origins\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"chroma_server_cors_allow_origins\",\"display_name\":\"Chroma Server CORS Allow Origins\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"chroma_server_grpc_port\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"chroma_server_grpc_port\",\"display_name\":\"Chroma Server GRPC Port\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"chroma_server_host\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"chroma_server_host\",\"display_name\":\"Chroma Server Host\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"chroma_server_http_port\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"chroma_server_http_port\",\"display_name\":\"Chroma Server HTTP Port\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"chroma_server_ssl_enabled\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"chroma_server_ssl_enabled\",\"display_name\":\"Chroma Server SSL Enabled\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"collection_metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"collection_metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"collection_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"langchain\",\"password\":false,\"name\":\"collection_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"ids\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"ids\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"metadatas\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadatas\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":true},\"persist\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"persist\",\"display_name\":\"Persist\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"persist_directory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"persist_directory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"search_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"{}\",\"password\":false,\"name\":\"search_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"NestedDict\",\"list\":false},\"_type\":\"Chroma\"},\"description\":\"Create a Chroma vectorstore from a raw documents.\",\"base_classes\":[\"VectorStore\",\"Chroma\",\"BaseRetriever\",\"VectorStoreRetriever\"],\"display_name\":\"Chroma\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/vectorstores/integrations/chroma\",\"beta\":false,\"error\":null},\"id\":\"Chroma-gVhy7\"},\"selected\":false,\"positionAbsolute\":{\"x\":2110.365967257855,\"y\":805.0149521868784},\"dragging\":false},{\"width\":384,\"height\":501,\"id\":\"RecursiveCharacterTextSplitter-1eaOX\",\"type\":\"genericNode\",\"position\":{\"x\":1409.2872773444874,\"y\":19.45456141103284},\"data\":{\"type\":\"RecursiveCharacterTextSplitter\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Optional\\nfrom langflow import CustomComponent\\nfrom langchain.schema import Document\\nfrom langflow.utils.util import build_loader_repr_from_documents\\n\\n\\nclass RecursiveCharacterTextSplitterComponent(CustomComponent):\\n display_name: str = \\\"Recursive Character Text Splitter\\\"\\n description: str = \\\"Split text into chunks of a specified length.\\\"\\n documentation: str = \\\"https://docs.langflow.org/components/text-splitters#recursivecharactertextsplitter\\\"\\n\\n def build_config(self):\\n return {\\n \\\"documents\\\": {\\n \\\"display_name\\\": \\\"Documents\\\",\\n \\\"info\\\": \\\"The documents to split.\\\",\\n },\\n \\\"separators\\\": {\\n \\\"display_name\\\": \\\"Separators\\\",\\n \\\"info\\\": 'The characters to split on.\\\\nIf left empty defaults to [\\\"\\\\\\\\n\\\\\\\\n\\\", \\\"\\\\\\\\n\\\", \\\" \\\", \\\"\\\"].',\\n \\\"is_list\\\": True,\\n },\\n \\\"chunk_size\\\": {\\n \\\"display_name\\\": \\\"Chunk Size\\\",\\n \\\"info\\\": \\\"The maximum length of each chunk.\\\",\\n \\\"field_type\\\": \\\"int\\\",\\n \\\"value\\\": 1000,\\n },\\n \\\"chunk_overlap\\\": {\\n \\\"display_name\\\": \\\"Chunk Overlap\\\",\\n \\\"info\\\": \\\"The amount of overlap between chunks.\\\",\\n \\\"field_type\\\": \\\"int\\\",\\n \\\"value\\\": 200,\\n },\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n documents: list[Document],\\n separators: Optional[list[str]] = None,\\n chunk_size: Optional[int] = 1000,\\n chunk_overlap: Optional[int] = 200,\\n ) -> list[Document]:\\n \\\"\\\"\\\"\\n Split text into chunks of a specified length.\\n\\n Args:\\n separators (list[str]): The characters to split on.\\n chunk_size (int): The maximum length of each chunk.\\n chunk_overlap (int): The amount of overlap between chunks.\\n length_function (function): The function to use to calculate the length of the text.\\n\\n Returns:\\n list[str]: The chunks of text.\\n \\\"\\\"\\\"\\n from langchain.text_splitter import RecursiveCharacterTextSplitter\\n\\n if separators == \\\"\\\":\\n separators = None\\n elif separators:\\n # check if the separators list has escaped characters\\n # if there are escaped characters, unescape them\\n separators = [x.encode().decode(\\\"unicode-escape\\\") for x in separators]\\n\\n # Make sure chunk_size and chunk_overlap are ints\\n if isinstance(chunk_size, str):\\n chunk_size = int(chunk_size)\\n if isinstance(chunk_overlap, str):\\n chunk_overlap = int(chunk_overlap)\\n splitter = RecursiveCharacterTextSplitter(\\n separators=separators,\\n chunk_size=chunk_size,\\n chunk_overlap=chunk_overlap,\\n )\\n\\n docs = splitter.split_documents(documents)\\n self.repr_value = build_loader_repr_from_documents(docs)\\n return docs\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"chunk_overlap\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"50\",\"password\":false,\"name\":\"chunk_overlap\",\"display_name\":\"Chunk Overlap\",\"advanced\":false,\"dynamic\":false,\"info\":\"The amount of overlap between chunks.\",\"type\":\"int\",\"list\":false},\"chunk_size\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"400\",\"password\":false,\"name\":\"chunk_size\",\"display_name\":\"Chunk Size\",\"advanced\":false,\"dynamic\":false,\"info\":\"The maximum length of each chunk.\",\"type\":\"int\",\"list\":false},\"documents\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"documents\",\"display_name\":\"Documents\",\"advanced\":false,\"dynamic\":false,\"info\":\"The documents to split.\",\"type\":\"Document\",\"list\":true},\"separators\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"separators\",\"display_name\":\"Separators\",\"advanced\":false,\"dynamic\":false,\"info\":\"The characters to split on.\\nIf left empty defaults to [\\\"\\\\n\\\\n\\\", \\\"\\\\n\\\", \\\" \\\", \\\"\\\"].\",\"type\":\"str\",\"list\":true,\"value\":[\" \"]}},\"description\":\"Split text into chunks of a specified length.\",\"base_classes\":[\"Document\"],\"display_name\":\"Recursive Character Text Splitter\",\"custom_fields\":{\"chunk_overlap\":null,\"chunk_size\":null,\"documents\":null,\"separators\":null},\"output_types\":[\"RecursiveCharacterTextSplitter\"],\"documentation\":\"https://docs.langflow.org/components/text-splitters#recursivecharactertextsplitter\",\"beta\":true,\"error\":null},\"id\":\"RecursiveCharacterTextSplitter-1eaOX\"},\"selected\":false,\"positionAbsolute\":{\"x\":1409.2872773444874,\"y\":19.45456141103284},\"dragging\":false},{\"width\":384,\"height\":367,\"id\":\"OpenAIEmbeddings-cduOO\",\"type\":\"genericNode\",\"position\":{\"x\":1405.1176670984544,\"y\":1029.459061269321},\"data\":{\"type\":\"OpenAIEmbeddings\",\"node\":{\"template\":{\"allowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[],\"password\":false,\"name\":\"allowed_special\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Literal'all'\",\"list\":true},\"disallowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"all\",\"password\":false,\"name\":\"disallowed_special\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Literal'all'\",\"list\":true},\"chunk_size\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":1000,\"password\":false,\"name\":\"chunk_size\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"deployment\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"text-embedding-ada-002\",\"password\":false,\"name\":\"deployment\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"embedding_ctx_length\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":8191,\"password\":false,\"name\":\"embedding_ctx_length\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"{'Authorization': 'Bearer '}\",\"password\":false,\"name\":\"headers\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":6,\"password\":false,\"name\":\"max_retries\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"model\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"text-embedding-ada-002\",\"password\":false,\"name\":\"model\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_api_type\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_type\",\"display_name\":\"OpenAI API Type\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"openai_api_version\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_version\",\"display_name\":\"OpenAI API Version\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"show_progress_bar\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"show_progress_bar\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"skip_empty\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"skip_empty\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"_type\":\"OpenAIEmbeddings\"},\"description\":\"OpenAI embedding models.\",\"base_classes\":[\"Embeddings\",\"OpenAIEmbeddings\"],\"display_name\":\"OpenAIEmbeddings\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"OpenAIEmbeddings-cduOO\"},\"selected\":false,\"positionAbsolute\":{\"x\":1405.1176670984544,\"y\":1029.459061269321}},{\"width\":384,\"height\":339,\"id\":\"RetrievalQA-4PmTB\",\"type\":\"genericNode\",\"position\":{\"x\":2711.7786966415715,\"y\":709.4450828605463},\"data\":{\"type\":\"RetrievalQA\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain.callbacks.base.BaseCallbackHandler\",\"list\":true},\"combine_documents_chain\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"combine_documents_chain\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseCombineDocumentsChain\",\"list\":false},\"memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseMemory\",\"list\":false},\"retriever\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"retriever\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseRetriever\",\"list\":false},\"input_key\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"query\",\"password\":false,\"name\":\"input_key\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"output_key\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"result\",\"password\":false,\"name\":\"output_key\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"return_source_documents\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":true,\"password\":false,\"name\":\"return_source_documents\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"RetrievalQA\"},\"description\":\"Chain for question-answering against an index.\",\"base_classes\":[\"RetrievalQA\",\"Chain\",\"BaseRetrievalQA\",\"function\"],\"display_name\":\"RetrievalQA\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/chains/popular/vector_db_qa\",\"beta\":false,\"error\":null},\"id\":\"RetrievalQA-4PmTB\"},\"selected\":false,\"positionAbsolute\":{\"x\":2711.7786966415715,\"y\":709.4450828605463}},{\"width\":384,\"height\":333,\"id\":\"CombineDocsChain-yk0JF\",\"type\":\"genericNode\",\"position\":{\"x\":2125.6202053356537,\"y\":199.07708924409633},\"data\":{\"type\":\"CombineDocsChain\",\"node\":{\"template\":{\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"chain_type\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"stuff\",\"password\":false,\"options\":[\"stuff\",\"map_reduce\",\"map_rerank\",\"refine\"],\"name\":\"chain_type\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"_type\":\"load_qa_chain\"},\"description\":\"Load question answering chain.\",\"base_classes\":[\"BaseCombineDocumentsChain\",\"function\"],\"display_name\":\"CombineDocsChain\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"\",\"beta\":false,\"error\":null},\"id\":\"CombineDocsChain-yk0JF\"},\"selected\":false,\"positionAbsolute\":{\"x\":2125.6202053356537,\"y\":199.07708924409633},\"dragging\":false},{\"width\":384,\"height\":417,\"id\":\"CustomComponent-y6Wg0\",\"type\":\"genericNode\",\"position\":{\"x\":39.400034102832365,\"y\":-499.03551482195707},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\n\\nimport subprocess\\n\\nfrom langchain.llms.base import BaseLLM\\nfrom langchain.chains import LLMChain\\nfrom langchain.prompts import PromptTemplate\\nfrom langchain.schema import Document\\n\\nfrom typing import List\\n\\n\\nclass YourComponent(CustomComponent):\\n display_name: str = \\\"PIP Install\\\"\\n description: str = \\\"Create any custom component you want!\\\"\\n\\n def build(self, libs: List[str]) -> Document:\\n def install_package(package_name):\\n subprocess.check_call([\\\"pip\\\", \\\"install\\\", package_name])\\n for lib in libs:\\n install_package(lib)\\n return \\\"\\\"\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"libs\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"libs\",\"display_name\":\"libs\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"requests\",\"pytube\"]}},\"description\":\"Create any custom component you want!\",\"base_classes\":[\"Document\"],\"display_name\":\"PIP Install\",\"custom_fields\":{\"libs\":null},\"output_types\":[],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-y6Wg0\"},\"selected\":false,\"dragging\":false,\"positionAbsolute\":{\"x\":39.400034102832365,\"y\":-499.03551482195707}}],\"edges\":[{\"source\":\"ChatOpenAI-q61Y2\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“ChatOpenAIล“,ล“BaseChatModelล“,ล“BaseLanguageModelล“,ล“BaseLLMล“],ล“dataTypeล“:ล“ChatOpenAIล“,ล“idล“:ล“ChatOpenAI-q61Y2ล“}\",\"target\":\"CustomComponent-h0NSI\",\"targetHandle\":\"{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“CustomComponent-h0NSIล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLLMล“}\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-ChatOpenAI-q61Y2{ล“baseClassesล“:[ล“ChatOpenAIล“,ล“BaseChatModelล“,ล“BaseLanguageModelล“,ล“BaseLLMล“],ล“dataTypeล“:ล“ChatOpenAIล“,ล“idล“:ล“ChatOpenAI-q61Y2ล“}-CustomComponent-h0NSI{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“CustomComponent-h0NSIล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLLMล“}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"ChatOpenAI\",\"BaseChatModel\",\"BaseLanguageModel\",\"BaseLLM\"],\"dataType\":\"ChatOpenAI\",\"id\":\"ChatOpenAI-q61Y2\"},\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"CustomComponent-h0NSI\",\"inputTypes\":null,\"type\":\"BaseLLM\"}}},{\"source\":\"CustomComponent-y6Wg0\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“Documentล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-y6Wg0ล“}\",\"target\":\"CustomComponent-h0NSI\",\"targetHandle\":\"{ล“fieldNameล“:ล“dependenciesล“,ล“idล“:ล“CustomComponent-h0NSIล“,ล“inputTypesล“:null,ล“typeล“:ล“Documentล“}\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-y6Wg0{ล“baseClassesล“:[ล“Documentล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-y6Wg0ล“}-CustomComponent-h0NSI{ล“fieldNameล“:ล“dependenciesล“,ล“idล“:ล“CustomComponent-h0NSIล“,ล“inputTypesล“:null,ล“typeล“:ล“Documentล“}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"Document\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-y6Wg0\"},\"targetHandle\":{\"fieldName\":\"dependencies\",\"id\":\"CustomComponent-h0NSI\",\"inputTypes\":null,\"type\":\"Document\"}}},{\"source\":\"CustomComponent-h0NSI\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“Documentล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-h0NSIล“}\",\"target\":\"RecursiveCharacterTextSplitter-1eaOX\",\"targetHandle\":\"{ล“fieldNameล“:ล“documentsล“,ล“idล“:ล“RecursiveCharacterTextSplitter-1eaOXล“,ล“inputTypesล“:null,ล“typeล“:ล“Documentล“}\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-h0NSI{ล“baseClassesล“:[ล“Documentล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-h0NSIล“}-RecursiveCharacterTextSplitter-1eaOX{ล“fieldNameล“:ล“documentsล“,ล“idล“:ล“RecursiveCharacterTextSplitter-1eaOXล“,ล“inputTypesล“:null,ล“typeล“:ล“Documentล“}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"Document\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-h0NSI\"},\"targetHandle\":{\"fieldName\":\"documents\",\"id\":\"RecursiveCharacterTextSplitter-1eaOX\",\"inputTypes\":null,\"type\":\"Document\"}},\"selected\":false},{\"source\":\"OpenAIEmbeddings-cduOO\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“Embeddingsล“,ล“OpenAIEmbeddingsล“],ล“dataTypeล“:ล“OpenAIEmbeddingsล“,ล“idล“:ล“OpenAIEmbeddings-cduOOล“}\",\"target\":\"Chroma-gVhy7\",\"targetHandle\":\"{ล“fieldNameล“:ล“embeddingล“,ล“idล“:ล“Chroma-gVhy7ล“,ล“inputTypesล“:null,ล“typeล“:ล“Embeddingsล“}\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-OpenAIEmbeddings-cduOO{ล“baseClassesล“:[ล“Embeddingsล“,ล“OpenAIEmbeddingsล“],ล“dataTypeล“:ล“OpenAIEmbeddingsล“,ล“idล“:ล“OpenAIEmbeddings-cduOOล“}-Chroma-gVhy7{ล“fieldNameล“:ล“embeddingล“,ล“idล“:ล“Chroma-gVhy7ล“,ล“inputTypesล“:null,ล“typeล“:ล“Embeddingsล“}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"Embeddings\",\"OpenAIEmbeddings\"],\"dataType\":\"OpenAIEmbeddings\",\"id\":\"OpenAIEmbeddings-cduOO\"},\"targetHandle\":{\"fieldName\":\"embedding\",\"id\":\"Chroma-gVhy7\",\"inputTypes\":null,\"type\":\"Embeddings\"}}},{\"source\":\"RecursiveCharacterTextSplitter-1eaOX\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“Documentล“],ล“dataTypeล“:ล“RecursiveCharacterTextSplitterล“,ล“idล“:ล“RecursiveCharacterTextSplitter-1eaOXล“}\",\"target\":\"Chroma-gVhy7\",\"targetHandle\":\"{ล“fieldNameล“:ล“documentsล“,ล“idล“:ล“Chroma-gVhy7ล“,ล“inputTypesล“:null,ล“typeล“:ล“Documentล“}\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-RecursiveCharacterTextSplitter-1eaOX{ล“baseClassesล“:[ล“Documentล“],ล“dataTypeล“:ล“RecursiveCharacterTextSplitterล“,ล“idล“:ล“RecursiveCharacterTextSplitter-1eaOXล“}-Chroma-gVhy7{ล“fieldNameล“:ล“documentsล“,ล“idล“:ล“Chroma-gVhy7ล“,ล“inputTypesล“:null,ล“typeล“:ล“Documentล“}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"Document\"],\"dataType\":\"RecursiveCharacterTextSplitter\",\"id\":\"RecursiveCharacterTextSplitter-1eaOX\"},\"targetHandle\":{\"fieldName\":\"documents\",\"id\":\"Chroma-gVhy7\",\"inputTypes\":null,\"type\":\"Document\"}}},{\"source\":\"ChatOpenAI-q61Y2\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“ChatOpenAIล“,ล“BaseChatModelล“,ล“BaseLanguageModelล“,ล“BaseLLMล“],ล“dataTypeล“:ล“ChatOpenAIล“,ล“idล“:ล“ChatOpenAI-q61Y2ล“}\",\"target\":\"CombineDocsChain-yk0JF\",\"targetHandle\":\"{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“CombineDocsChain-yk0JFล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLanguageModelล“}\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-ChatOpenAI-q61Y2{ล“baseClassesล“:[ล“ChatOpenAIล“,ล“BaseChatModelล“,ล“BaseLanguageModelล“,ล“BaseLLMล“],ล“dataTypeล“:ล“ChatOpenAIล“,ล“idล“:ล“ChatOpenAI-q61Y2ล“}-CombineDocsChain-yk0JF{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“CombineDocsChain-yk0JFล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLanguageModelล“}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"ChatOpenAI\",\"BaseChatModel\",\"BaseLanguageModel\",\"BaseLLM\"],\"dataType\":\"ChatOpenAI\",\"id\":\"ChatOpenAI-q61Y2\"},\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"CombineDocsChain-yk0JF\",\"inputTypes\":null,\"type\":\"BaseLanguageModel\"}}},{\"source\":\"CombineDocsChain-yk0JF\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“BaseCombineDocumentsChainล“,ล“functionล“],ล“dataTypeล“:ล“CombineDocsChainล“,ล“idล“:ล“CombineDocsChain-yk0JFล“}\",\"target\":\"RetrievalQA-4PmTB\",\"targetHandle\":\"{ล“fieldNameล“:ล“combine_documents_chainล“,ล“idล“:ล“RetrievalQA-4PmTBล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseCombineDocumentsChainล“}\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CombineDocsChain-yk0JF{ล“baseClassesล“:[ล“BaseCombineDocumentsChainล“,ล“functionล“],ล“dataTypeล“:ล“CombineDocsChainล“,ล“idล“:ล“CombineDocsChain-yk0JFล“}-RetrievalQA-4PmTB{ล“fieldNameล“:ล“combine_documents_chainล“,ล“idล“:ล“RetrievalQA-4PmTBล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseCombineDocumentsChainล“}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"BaseCombineDocumentsChain\",\"function\"],\"dataType\":\"CombineDocsChain\",\"id\":\"CombineDocsChain-yk0JF\"},\"targetHandle\":{\"fieldName\":\"combine_documents_chain\",\"id\":\"RetrievalQA-4PmTB\",\"inputTypes\":null,\"type\":\"BaseCombineDocumentsChain\"}}},{\"source\":\"Chroma-gVhy7\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“VectorStoreล“,ล“Chromaล“,ล“BaseRetrieverล“,ล“VectorStoreRetrieverล“],ล“dataTypeล“:ล“Chromaล“,ล“idล“:ล“Chroma-gVhy7ล“}\",\"target\":\"RetrievalQA-4PmTB\",\"targetHandle\":\"{ล“fieldNameล“:ล“retrieverล“,ล“idล“:ล“RetrievalQA-4PmTBล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseRetrieverล“}\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-Chroma-gVhy7{ล“baseClassesล“:[ล“VectorStoreล“,ล“Chromaล“,ล“BaseRetrieverล“,ล“VectorStoreRetrieverล“],ล“dataTypeล“:ล“Chromaล“,ล“idล“:ล“Chroma-gVhy7ล“}-RetrievalQA-4PmTB{ล“fieldNameล“:ล“retrieverล“,ล“idล“:ล“RetrievalQA-4PmTBล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseRetrieverล“}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"VectorStore\",\"Chroma\",\"BaseRetriever\",\"VectorStoreRetriever\"],\"dataType\":\"Chroma\",\"id\":\"Chroma-gVhy7\"},\"targetHandle\":{\"fieldName\":\"retriever\",\"id\":\"RetrievalQA-4PmTB\",\"inputTypes\":null,\"type\":\"BaseRetriever\"}}}],\"viewport\":{\"x\":189.54413265004274,\"y\":259.89949657174975,\"zoom\":0.291027508374689}},\"is_component\":false,\"updated_at\":\"2023-12-04T22:59:08.830269\",\"folder\":null,\"id\":\"bc7eb94b-6fc6-49cb-9b19-35347ba51afa\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Web Scraper - Content & Links\",\"description\":\"Fetch and parse text and links from a given URL.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":338,\"id\":\"LLMChain-H7PBy\",\"type\":\"genericNode\",\"position\":{\"x\":1682.494010974207,\"y\":275.5701585623092},\"data\":{\"type\":\"LLMChain\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Callable, Optional, Union\\n\\nfrom langchain.chains import LLMChain\\n\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import (\\n BaseLanguageModel,\\n BaseMemory,\\n BasePromptTemplate,\\n Chain,\\n)\\n\\n\\nclass LLMChainComponent(CustomComponent):\\n display_name = \\\"LLMChain\\\"\\n description = \\\"Chain to run queries against LLMs\\\"\\n\\n def build_config(self):\\n return {\\n \\\"prompt\\\": {\\\"display_name\\\": \\\"Prompt\\\"},\\n \\\"llm\\\": {\\\"display_name\\\": \\\"LLM\\\"},\\n \\\"memory\\\": {\\\"display_name\\\": \\\"Memory\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n prompt: BasePromptTemplate,\\n llm: BaseLanguageModel,\\n memory: Optional[BaseMemory] = None,\\n ) -> Union[Chain, Callable]:\\n return LLMChain(prompt=prompt, llm=llm, memory=memory)\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"display_name\":\"Memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseMemory\",\"list\":false},\"prompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"prompt\",\"display_name\":\"Prompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BasePromptTemplate\",\"list\":false}},\"description\":\"Chain to run queries against LLMs\",\"base_classes\":[\"Chain\",\"Callable\"],\"display_name\":\"LLMChain\",\"custom_fields\":{\"llm\":null,\"memory\":null,\"prompt\":null},\"output_types\":[\"LLMChain\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"LLMChain-H7PBy\"},\"selected\":false,\"positionAbsolute\":{\"x\":1682.494010974207,\"y\":275.5701585623092},\"dragging\":false},{\"width\":384,\"height\":626,\"id\":\"ChatOpenAI-VSAdc\",\"type\":\"genericNode\",\"position\":{\"x\":1002.4263147022411,\"y\":-198.2305006886859},\"data\":{\"type\":\"ChatOpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain_core.callbacks.base.BaseCallbackHandler\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false,\"value\":\"\"},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"gpt-4-1106-preview\",\"password\":false,\"options\":[\"gpt-4-1106-preview\",\"gpt-4\",\"gpt-4-32k\",\"gpt-3.5-turbo\",\"gpt-3.5-turbo-16k\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"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\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"0.1\",\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ChatOpenAI\"},\"description\":\"`OpenAI` Chat large language models API.\",\"base_classes\":[\"BaseLanguageModel\",\"ChatOpenAI\",\"BaseChatModel\",\"BaseLLM\"],\"display_name\":\"ChatOpenAI\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"ChatOpenAI-VSAdc\"},\"selected\":false,\"dragging\":false,\"positionAbsolute\":{\"x\":1002.4263147022411,\"y\":-198.2305006886859}},{\"width\":384,\"height\":374,\"data\":{\"id\":\"GroupNode-WXPMk\",\"type\":\"PromptTemplate\",\"node\":{\"output_types\":[],\"display_name\":\"Web Scraper\",\"documentation\":\"\",\"base_classes\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"description\":\"Fetch and parse text and links from a given URL.\",\"template\":{\"code_CustomComponent-f6nOg\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport html2text\\n\\nclass ConvertHTMLToMarkdown(CustomComponent):\\n display_name: str = \\\"HTML to Markdown\\\"\\n description: str = \\\"Converts HTML content to Markdown format.\\\"\\n\\n def build(self, html_content: Data, ignore_links: bool = False) -> str:\\n converter = html2text.HTML2Text()\\n converter.ignore_links = ignore_links\\n markdown_text = converter.handle(html_content)\\n self.status = markdown_text\\n return markdown_text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-f6nOg\",\"field\":\"code\"},\"display_name\":\"Code\"},\"ignore_links_CustomComponent-f6nOg\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"ignore_links\",\"display_name\":\"ignore_links\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-f6nOg\",\"field\":\"ignore_links\"}},\"code_CustomComponent-FGzJJ\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"Fetch HTML\\\"\\n description: str = \\\"Fetches HTML content from a specified URL.\\\"\\n \\n def build_config(self):\\n return {\\\"url\\\": {\\\"input_types\\\": [\\\"Data\\\", \\\"str\\\"]}} \\n\\n def build(self, url: str) -> Data:\\n response = requests.get(url)\\n self.status = str(response) + \\\"\\\\n\\\\n\\\" + response.text\\n return response.text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-FGzJJ\",\"field\":\"code\"},\"display_name\":\"Code\"},\"code_CustomComponent-0XtUN\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from bs4 import BeautifulSoup\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ParseHTMLContent(CustomComponent):\\n display_name: str = \\\"Parse HTML\\\"\\n description: str = \\\"Parses HTML content using Beautiful Soup.\\\"\\n\\n def build(self, html_content: Data) -> Data:\\n soup = BeautifulSoup(html_content, 'html.parser')\\n self.status = soup\\n return soup\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-0XtUN\",\"field\":\"code\"},\"display_name\":\"Code\"},\"code_CustomComponent-ODIcp\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ExtractHyperlinks(CustomComponent):\\n display_name: str = \\\"Extract Hyperlinks\\\"\\n description: str = \\\"Extracts hyperlinks from parsed HTML content.\\\"\\n\\n def build(self, soup: Data) -> list:\\n links = [link.get('href') for link in soup.find_all('a')]\\n self.status = links\\n return links\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-ODIcp\",\"field\":\"code\"},\"display_name\":\"Code\"},\"output_parser_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"output_parser\"},\"display_name\":\"Output Parser\"},\"input_types_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"input_types\"},\"display_name\":\"Input Types\"},\"input_variables_PromptTemplate-H9Udy\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"url\",\"html_markdown\",\"html_links\",\"query\"],\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"input_variables\"},\"display_name\":\"Input Variables\"},\"partial_variables_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"partial_variables\"},\"display_name\":\"Partial Variables\"},\"template_PromptTemplate-H9Udy\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"template\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"prompt\",\"list\":false,\"value\":\"Below is the HTML content (as markdown) and hyperlinks extracted from {url}\\n\\n---\\n\\nContent:\\n\\n{html_markdown}\\n\\n---\\n\\nLinks:\\n\\n{html_links}\\n\\n---\\n\\nAnswer the user query as best as possible.\\n\\nUser query:\\n\\n{query}\\n\\nAnswer:\\n\",\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"template\"},\"display_name\":\"Template\"},\"template_format_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"f-string\",\"password\":false,\"name\":\"template_format\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"template_format\"},\"display_name\":\"Template Format\"},\"validate_template_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"validate_template\"},\"display_name\":\"Validate Template\"},\"query_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"give me links\",\"password\":false,\"name\":\"query\",\"display_name\":\"query\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"query\"}},\"code_CustomComponent-OACE0\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"URL Input\\\"\\n\\n def build(self, url: str) -> str:\\n return url\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-OACE0\",\"field\":\"code\"},\"display_name\":\"Code\"},\"url_CustomComponent-OACE0\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-OACE0\",\"field\":\"url\"},\"value\":\"https://paperswithcode.com/\"},\"code_CustomComponent-whsQ5\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\n\\nclass ListToMarkdownBullets(CustomComponent):\\n display_name: str = \\\"List to Bullets\\\"\\n description: str = \\\"Converts a Python list into Markdown bullet points.\\\"\\n\\n def build(self, items: list) -> str:\\n markdown_bullets = '\\\\n'.join(f'* {item}' for item in items)\\n return markdown_bullets\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-whsQ5\",\"field\":\"code\"},\"display_name\":\"Code\"}},\"flow\":{\"data\":{\"nodes\":[{\"width\":384,\"height\":405,\"id\":\"CustomComponent-f6nOg\",\"type\":\"genericNode\",\"position\":{\"x\":665.2835942536854,\"y\":-371.7823429271119},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport html2text\\n\\nclass ConvertHTMLToMarkdown(CustomComponent):\\n display_name: str = \\\"HTML to Markdown\\\"\\n description: str = \\\"Converts HTML content to Markdown format.\\\"\\n\\n def build(self, html_content: Data, ignore_links: bool = False) -> str:\\n converter = html2text.HTML2Text()\\n converter.ignore_links = ignore_links\\n markdown_text = converter.handle(html_content)\\n self.status = markdown_text\\n return markdown_text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"html_content\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"html_content\",\"display_name\":\"html_content\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false},\"ignore_links\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"ignore_links\",\"display_name\":\"ignore_links\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false}},\"description\":\"Converts HTML content to Markdown format.\",\"base_classes\":[\"str\"],\"display_name\":\"HTML to Markdown\",\"custom_fields\":{\"html_content\":null,\"ignore_links\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-f6nOg\"},\"selected\":true,\"positionAbsolute\":{\"x\":665.2835942536854,\"y\":-371.7823429271119},\"dragging\":false},{\"width\":384,\"height\":375,\"id\":\"CustomComponent-FGzJJ\",\"type\":\"genericNode\",\"position\":{\"x\":-464.4553400967736,\"y\":-225.62715888255525},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"Fetch HTML\\\"\\n description: str = \\\"Fetches HTML content from a specified URL.\\\"\\n \\n def build_config(self):\\n return {\\\"url\\\": {\\\"input_types\\\": [\\\"Data\\\", \\\"str\\\"]}} \\n\\n def build(self, url: str) -> Data:\\n response = requests.get(url)\\n self.status = str(response) + \\\"\\\\n\\\\n\\\" + response.text\\n return response.text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"url\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"input_types\":[\"Data\",\"str\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"}},\"description\":\"Fetches HTML content from a specified URL.\",\"base_classes\":[\"Data\"],\"display_name\":\"Fetch HTML\",\"custom_fields\":{\"url\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-FGzJJ\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":-464.4553400967736,\"y\":-225.62715888255525}},{\"width\":384,\"height\":329,\"id\":\"CustomComponent-0XtUN\",\"type\":\"genericNode\",\"position\":{\"x\":214.00059169497604,\"y\":177.27071061129823},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from bs4 import BeautifulSoup\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ParseHTMLContent(CustomComponent):\\n display_name: str = \\\"Parse HTML\\\"\\n description: str = \\\"Parses HTML content using Beautiful Soup.\\\"\\n\\n def build(self, html_content: Data) -> Data:\\n soup = BeautifulSoup(html_content, 'html.parser')\\n self.status = soup\\n return soup\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"html_content\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"html_content\",\"display_name\":\"html_content\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false}},\"description\":\"Parses HTML content using Beautiful Soup.\",\"base_classes\":[\"Data\"],\"display_name\":\"Parse HTML\",\"custom_fields\":{\"html_content\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-0XtUN\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":214.00059169497604,\"y\":177.27071061129823}},{\"width\":384,\"height\":329,\"id\":\"CustomComponent-ODIcp\",\"type\":\"genericNode\",\"position\":{\"x\":845.0502195222412,\"y\":366.54344452019404},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ExtractHyperlinks(CustomComponent):\\n display_name: str = \\\"Extract Hyperlinks\\\"\\n description: str = \\\"Extracts hyperlinks from parsed HTML content.\\\"\\n\\n def build(self, soup: Data) -> list:\\n links = [link.get('href') for link in soup.find_all('a')]\\n self.status = links\\n return links\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"soup\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"soup\",\"display_name\":\"soup\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false}},\"description\":\"Extracts hyperlinks from parsed HTML content.\",\"base_classes\":[\"list\"],\"display_name\":\"Extract Hyperlinks\",\"custom_fields\":{\"soup\":null},\"output_types\":[\"list\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-ODIcp\"},\"selected\":true,\"positionAbsolute\":{\"x\":845.0502195222412,\"y\":366.54344452019404},\"dragging\":false},{\"width\":384,\"height\":657,\"id\":\"PromptTemplate-H9Udy\",\"type\":\"genericNode\",\"position\":{\"x\":2230.389721706283,\"y\":584.4905083765256},\"data\":{\"type\":\"PromptTemplate\",\"node\":{\"template\":{\"output_parser\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false},\"input_types\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"input_variables\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"url\",\"html_markdown\",\"html_links\",\"query\"]},\"partial_variables\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"template\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"prompt\",\"list\":false,\"value\":\"Below is the HTML content (as markdown) and hyperlinks extracted from {url}\\n\\n---\\n\\nContent:\\n\\n{html_markdown}\\n\\n---\\n\\nLinks:\\n\\n{html_links}\\n\\n---\\n\\nAnswer the user query as best as possible.\\n\\nUser query:\\n\\n{query}\\n\\nAnswer:\\n\"},\"template_format\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"f-string\",\"password\":false,\"name\":\"template_format\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":false},\"validate_template\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"PromptTemplate\",\"url\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"html_markdown\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"html_markdown\",\"display_name\":\"html_markdown\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"html_links\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"html_links\",\"display_name\":\"html_links\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"query\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"query\",\"display_name\":\"query\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"A prompt template for a language model.\",\"base_classes\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"name\":\"\",\"display_name\":\"PromptTemplate\",\"documentation\":\"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\"custom_fields\":{\"\":[\"url\",\"html_markdown\",\"html_links\",\"query\"]},\"output_types\":[],\"full_path\":null,\"field_formatters\":{},\"beta\":false,\"error\":null},\"id\":\"PromptTemplate-H9Udy\"},\"selected\":true,\"positionAbsolute\":{\"x\":2230.389721706283,\"y\":584.4905083765256},\"dragging\":false},{\"width\":384,\"height\":347,\"id\":\"CustomComponent-OACE0\",\"type\":\"genericNode\",\"position\":{\"x\":-1155.9497945157625,\"y\":198.13583204151553},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"URL Input\\\"\\n\\n def build(self, url: str) -> str:\\n return url\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"url\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":null,\"base_classes\":[\"str\"],\"display_name\":\"URL Input\",\"custom_fields\":{\"url\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-OACE0\"},\"selected\":true,\"positionAbsolute\":{\"x\":-1155.9497945157625,\"y\":198.13583204151553},\"dragging\":false},{\"width\":384,\"height\":329,\"id\":\"CustomComponent-whsQ5\",\"type\":\"genericNode\",\"position\":{\"x\":1396.5574076376327,\"y\":694.8308714574463},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\n\\nclass ListToMarkdownBullets(CustomComponent):\\n display_name: str = \\\"List to Bullets\\\"\\n description: str = \\\"Converts a Python list into Markdown bullet points.\\\"\\n\\n def build(self, items: list) -> str:\\n markdown_bullets = '\\\\n'.join(f'* {item}' for item in items)\\n return markdown_bullets\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"items\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"items\",\"display_name\":\"items\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"list\",\"list\":true}},\"description\":\"Converts a Python list into Markdown bullet points.\",\"base_classes\":[\"str\"],\"display_name\":\"List to Bullets\",\"custom_fields\":{\"items\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-whsQ5\"},\"selected\":true,\"positionAbsolute\":{\"x\":1396.5574076376327,\"y\":694.8308714574463},\"dragging\":false}],\"edges\":[{\"source\":\"CustomComponent-FGzJJ\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-FGzJJล“}\",\"target\":\"CustomComponent-f6nOg\",\"targetHandle\":\"{ล“fieldNameล“:ล“html_contentล“,ล“idล“:ล“CustomComponent-f6nOgล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_content\",\"id\":\"CustomComponent-f6nOg\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-FGzJJ\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-FGzJJ{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-FGzJJล“}-CustomComponent-f6nOg{ล“fieldNameล“:ล“html_contentล“,ล“idล“:ล“CustomComponent-f6nOgล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"selected\":true},{\"source\":\"CustomComponent-FGzJJ\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-FGzJJล“}\",\"target\":\"CustomComponent-0XtUN\",\"targetHandle\":\"{ล“fieldNameล“:ล“html_contentล“,ล“idล“:ล“CustomComponent-0XtUNล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_content\",\"id\":\"CustomComponent-0XtUN\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-FGzJJ\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-FGzJJ{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-FGzJJล“}-CustomComponent-0XtUN{ล“fieldNameล“:ล“html_contentล“,ล“idล“:ล“CustomComponent-0XtUNล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"selected\":true},{\"source\":\"CustomComponent-0XtUN\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-0XtUNล“}\",\"target\":\"CustomComponent-ODIcp\",\"targetHandle\":\"{ล“fieldNameล“:ล“soupล“,ล“idล“:ล“CustomComponent-ODIcpล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"soup\",\"id\":\"CustomComponent-ODIcp\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-0XtUN\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-0XtUN{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-0XtUNล“}-CustomComponent-ODIcp{ล“fieldNameล“:ล“soupล“,ล“idล“:ล“CustomComponent-ODIcpล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"selected\":true},{\"source\":\"CustomComponent-OACE0\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-OACE0ล“}\",\"target\":\"CustomComponent-FGzJJ\",\"targetHandle\":\"{ล“fieldNameล“:ล“urlล“,ล“idล“:ล“CustomComponent-FGzJJล“,ล“inputTypesล“:[ล“Dataล“,ล“strล“],ล“typeล“:ล“strล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"url\",\"id\":\"CustomComponent-FGzJJ\",\"inputTypes\":[\"Data\",\"str\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-OACE0\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-OACE0{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-OACE0ล“}-CustomComponent-FGzJJ{ล“fieldNameล“:ล“urlล“,ล“idล“:ล“CustomComponent-FGzJJล“,ล“inputTypesล“:[ล“Dataล“,ล“strล“],ล“typeล“:ล“strล“}\",\"selected\":true},{\"source\":\"CustomComponent-OACE0\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-OACE0ล“}\",\"target\":\"PromptTemplate-H9Udy\",\"targetHandle\":\"{ล“fieldNameล“:ล“urlล“,ล“idล“:ล“PromptTemplate-H9Udyล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"url\",\"id\":\"PromptTemplate-H9Udy\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-OACE0\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-OACE0{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-OACE0ล“}-PromptTemplate-H9Udy{ล“fieldNameล“:ล“urlล“,ล“idล“:ล“PromptTemplate-H9Udyล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"selected\":true},{\"source\":\"CustomComponent-ODIcp\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“listล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-ODIcpล“}\",\"target\":\"CustomComponent-whsQ5\",\"targetHandle\":\"{ล“fieldNameล“:ล“itemsล“,ล“idล“:ล“CustomComponent-whsQ5ล“,ล“inputTypesล“:null,ล“typeล“:ล“listล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"items\",\"id\":\"CustomComponent-whsQ5\",\"inputTypes\":null,\"type\":\"list\"},\"sourceHandle\":{\"baseClasses\":[\"list\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-ODIcp\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-ODIcp{ล“baseClassesล“:[ล“listล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-ODIcpล“}-CustomComponent-whsQ5{ล“fieldNameล“:ล“itemsล“,ล“idล“:ล“CustomComponent-whsQ5ล“,ล“inputTypesล“:null,ล“typeล“:ล“listล“}\",\"selected\":true},{\"source\":\"CustomComponent-whsQ5\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-whsQ5ล“}\",\"target\":\"PromptTemplate-H9Udy\",\"targetHandle\":\"{ล“fieldNameล“:ล“html_linksล“,ล“idล“:ล“PromptTemplate-H9Udyล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_links\",\"id\":\"PromptTemplate-H9Udy\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-whsQ5\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-whsQ5{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-whsQ5ล“}-PromptTemplate-H9Udy{ล“fieldNameล“:ล“html_linksล“,ล“idล“:ล“PromptTemplate-H9Udyล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"selected\":true},{\"source\":\"CustomComponent-f6nOg\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-f6nOgล“}\",\"target\":\"PromptTemplate-H9Udy\",\"targetHandle\":\"{ล“fieldNameล“:ล“html_markdownล“,ล“idล“:ล“PromptTemplate-H9Udyล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_markdown\",\"id\":\"PromptTemplate-H9Udy\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-f6nOg\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-f6nOg{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-f6nOgล“}-PromptTemplate-H9Udy{ล“fieldNameล“:ล“html_markdownล“,ล“idล“:ล“PromptTemplate-H9Udyล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"selected\":true}],\"viewport\":{\"x\":343.0346131188585,\"y\":341.89843948642147,\"zoom\":0.24148408223121196}},\"is_component\":false,\"name\":\"Fluffy Ptolemy\",\"description\":\"\",\"id\":\"W5oNW\"}}},\"id\":\"GroupNode-WXPMk\",\"position\":{\"x\":873.0737834322758,\"y\":598.8401015776466},\"type\":\"genericNode\",\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":873.0737834322758,\"y\":598.8401015776466}}],\"edges\":[{\"source\":\"ChatOpenAI-VSAdc\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“BaseLanguageModelล“,ล“ChatOpenAIล“,ล“BaseChatModelล“,ล“BaseLLMล“],ล“dataTypeล“:ล“ChatOpenAIล“,ล“idล“:ล“ChatOpenAI-VSAdcล“}\",\"target\":\"LLMChain-H7PBy\",\"targetHandle\":\"{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“LLMChain-H7PByล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLanguageModelล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"LLMChain-H7PBy\",\"inputTypes\":null,\"type\":\"BaseLanguageModel\"},\"sourceHandle\":{\"baseClasses\":[\"BaseLanguageModel\",\"ChatOpenAI\",\"BaseChatModel\",\"BaseLLM\"],\"dataType\":\"ChatOpenAI\",\"id\":\"ChatOpenAI-VSAdc\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-ChatOpenAI-VSAdc{ล“baseClassesล“:[ล“BaseLanguageModelล“,ล“ChatOpenAIล“,ล“BaseChatModelล“,ล“BaseLLMล“],ล“dataTypeล“:ล“ChatOpenAIล“,ล“idล“:ล“ChatOpenAI-VSAdcล“}-LLMChain-H7PBy{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“LLMChain-H7PByล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLanguageModelล“}\"},{\"source\":\"GroupNode-WXPMk\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“StringPromptTemplateล“,ล“BasePromptTemplateล“,ล“PromptTemplateล“],ล“dataTypeล“:ล“PromptTemplateล“,ล“idล“:ล“GroupNode-WXPMkล“}\",\"target\":\"LLMChain-H7PBy\",\"targetHandle\":\"{ล“fieldNameล“:ล“promptล“,ล“idล“:ล“LLMChain-H7PByล“,ล“inputTypesล“:null,ล“typeล“:ล“BasePromptTemplateล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"prompt\",\"id\":\"LLMChain-H7PBy\",\"inputTypes\":null,\"type\":\"BasePromptTemplate\"},\"sourceHandle\":{\"baseClasses\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"dataType\":\"PromptTemplate\",\"id\":\"GroupNode-WXPMk\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-GroupNode-WXPMk{ล“baseClassesล“:[ล“StringPromptTemplateล“,ล“BasePromptTemplateล“,ล“PromptTemplateล“],ล“dataTypeล“:ล“PromptTemplateล“,ล“idล“:ล“GroupNode-WXPMkล“}-LLMChain-H7PBy{ล“fieldNameล“:ล“promptล“,ล“idล“:ล“LLMChain-H7PByล“,ล“inputTypesล“:null,ล“typeล“:ล“BasePromptTemplateล“}\"}],\"viewport\":{\"x\":-348.6161822813733,\"y\":121.40545291211492,\"zoom\":0.6801854262029781}},\"is_component\":false,\"updated_at\":\"2023-12-04T23:22:27.784647\",\"folder\":null,\"id\":\"efc3bf27-3cf1-4561-9a83-3df347572440\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sad Joliot\",\"description\":\"Navigate the Networks of Conversation.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":338,\"id\":\"LLMChain-RQsU1\",\"type\":\"genericNode\",\"position\":{\"x\":514.4440482813261,\"y\":528.164086188516},\"data\":{\"type\":\"LLMChain\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Callable, Optional, Union\\n\\nfrom langchain.chains import LLMChain\\n\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import (\\n BaseLanguageModel,\\n BaseMemory,\\n BasePromptTemplate,\\n Chain,\\n)\\n\\n\\nclass LLMChainComponent(CustomComponent):\\n display_name = \\\"LLMChain\\\"\\n description = \\\"Chain to run queries against LLMs\\\"\\n\\n def build_config(self):\\n return {\\n \\\"prompt\\\": {\\\"display_name\\\": \\\"Prompt\\\"},\\n \\\"llm\\\": {\\\"display_name\\\": \\\"LLM\\\"},\\n \\\"memory\\\": {\\\"display_name\\\": \\\"Memory\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n prompt: BasePromptTemplate,\\n llm: BaseLanguageModel,\\n memory: Optional[BaseMemory] = None,\\n ) -> Union[Chain, Callable]:\\n return LLMChain(prompt=prompt, llm=llm, memory=memory)\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"display_name\":\"Memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseMemory\",\"list\":false},\"prompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"prompt\",\"display_name\":\"Prompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BasePromptTemplate\",\"list\":false}},\"description\":\"Chain to run queries against LLMs\",\"base_classes\":[\"Chain\",\"Callable\"],\"display_name\":\"LLMChain\",\"custom_fields\":{\"llm\":null,\"memory\":null,\"prompt\":null},\"output_types\":[\"LLMChain\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"LLMChain-RQsU1\"},\"selected\":false,\"positionAbsolute\":{\"x\":514.4440482813261,\"y\":528.164086188516}},{\"width\":384,\"height\":626,\"id\":\"ChatOpenAI-NTTcv\",\"type\":\"genericNode\",\"position\":{\"x\":-221.33853765781578,\"y\":-35.48749923706055},\"data\":{\"type\":\"ChatOpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain_core.callbacks.base.BaseCallbackHandler\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"gpt-4-1106-preview\",\"password\":false,\"options\":[\"gpt-4-1106-preview\",\"gpt-4\",\"gpt-4-32k\",\"gpt-3.5-turbo\",\"gpt-3.5-turbo-16k\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"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\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"0.1\",\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ChatOpenAI\"},\"description\":\"`OpenAI` Chat large language models API.\",\"base_classes\":[\"BaseLanguageModel\",\"ChatOpenAI\",\"BaseChatModel\",\"BaseLLM\"],\"display_name\":\"ChatOpenAI\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"ChatOpenAI-NTTcv\"},\"selected\":false,\"positionAbsolute\":{\"x\":-221.33853765781578,\"y\":-35.48749923706055}},{\"width\":384,\"height\":374,\"id\":\"PromptTemplate-VELMV\",\"type\":\"genericNode\",\"position\":{\"x\":-222,\"y\":682.560723386973},\"data\":{\"id\":\"PromptTemplate-VELMV\",\"type\":\"PromptTemplate\",\"node\":{\"output_types\":[],\"display_name\":\"Web Scraper\",\"documentation\":\"\",\"base_classes\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"description\":\"Fetch and parse text and links from a given URL.\",\"template\":{\"code_CustomComponent-f6nOg\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport html2text\\n\\nclass ConvertHTMLToMarkdown(CustomComponent):\\n display_name: str = \\\"HTML to Markdown\\\"\\n description: str = \\\"Converts HTML content to Markdown format.\\\"\\n\\n def build(self, html_content: Data, ignore_links: bool = False) -> str:\\n converter = html2text.HTML2Text()\\n converter.ignore_links = ignore_links\\n markdown_text = converter.handle(html_content)\\n self.status = markdown_text\\n return markdown_text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-f6nOg\",\"field\":\"code\"},\"display_name\":\"Code\"},\"ignore_links_CustomComponent-f6nOg\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"ignore_links\",\"display_name\":\"ignore_links\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-f6nOg\",\"field\":\"ignore_links\"}},\"code_CustomComponent-FGzJJ\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"Fetch HTML\\\"\\n description: str = \\\"Fetches HTML content from a specified URL.\\\"\\n \\n def build_config(self):\\n return {\\\"url\\\": {\\\"input_types\\\": [\\\"Data\\\", \\\"str\\\"]}} \\n\\n def build(self, url: str) -> Data:\\n response = requests.get(url)\\n self.status = str(response) + \\\"\\\\n\\\\n\\\" + response.text\\n return response.text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-FGzJJ\",\"field\":\"code\"},\"display_name\":\"Code\"},\"code_CustomComponent-0XtUN\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from bs4 import BeautifulSoup\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ParseHTMLContent(CustomComponent):\\n display_name: str = \\\"Parse HTML\\\"\\n description: str = \\\"Parses HTML content using Beautiful Soup.\\\"\\n\\n def build(self, html_content: Data) -> Data:\\n soup = BeautifulSoup(html_content, 'html.parser')\\n self.status = soup\\n return soup\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-0XtUN\",\"field\":\"code\"},\"display_name\":\"Code\"},\"code_CustomComponent-ODIcp\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ExtractHyperlinks(CustomComponent):\\n display_name: str = \\\"Extract Hyperlinks\\\"\\n description: str = \\\"Extracts hyperlinks from parsed HTML content.\\\"\\n\\n def build(self, soup: Data) -> list:\\n links = [link.get('href') for link in soup.find_all('a')]\\n self.status = links\\n return links\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-ODIcp\",\"field\":\"code\"},\"display_name\":\"Code\"},\"output_parser_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"output_parser\"},\"display_name\":\"Output Parser\"},\"input_types_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"input_types\"},\"display_name\":\"Input Types\"},\"input_variables_PromptTemplate-H9Udy\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"url\",\"html_markdown\",\"html_links\",\"query\"],\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"input_variables\"},\"display_name\":\"Input Variables\"},\"partial_variables_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"partial_variables\"},\"display_name\":\"Partial Variables\"},\"template_PromptTemplate-H9Udy\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"template\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"prompt\",\"list\":false,\"value\":\"Below is the HTML content (as markdown) and hyperlinks extracted from {url}\\n\\n---\\n\\nContent:\\n\\n{html_markdown}\\n\\n---\\n\\nLinks:\\n\\n{html_links}\\n\\n---\\n\\nAnswer the user query as best as possible.\\n\\nUser query:\\n\\n{query}\\n\\nAnswer:\\n\",\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"template\"},\"display_name\":\"Template\"},\"template_format_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"f-string\",\"password\":false,\"name\":\"template_format\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"template_format\"},\"display_name\":\"Template Format\"},\"validate_template_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"validate_template\"},\"display_name\":\"Validate Template\"},\"query_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"query\",\"display_name\":\"query\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"query\"}},\"code_CustomComponent-OACE0\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"URL Input\\\"\\n\\n def build(self, url: str) -> str:\\n return url\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-OACE0\",\"field\":\"code\"},\"display_name\":\"Code\"},\"url_CustomComponent-OACE0\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-OACE0\",\"field\":\"url\"},\"value\":\"https://paperswithcode.com/\"},\"code_CustomComponent-whsQ5\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\n\\nclass ListToMarkdownBullets(CustomComponent):\\n display_name: str = \\\"List to Bullets\\\"\\n description: str = \\\"Converts a Python list into Markdown bullet points.\\\"\\n\\n def build(self, items: list) -> str:\\n markdown_bullets = '\\\\n'.join(f'* {item}' for item in items)\\n return markdown_bullets\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-whsQ5\",\"field\":\"code\"},\"display_name\":\"Code\"}},\"flow\":{\"data\":{\"nodes\":[{\"width\":384,\"height\":405,\"id\":\"CustomComponent-f6nOg\",\"type\":\"genericNode\",\"position\":{\"x\":665.2835942536854,\"y\":-371.7823429271119},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport html2text\\n\\nclass ConvertHTMLToMarkdown(CustomComponent):\\n display_name: str = \\\"HTML to Markdown\\\"\\n description: str = \\\"Converts HTML content to Markdown format.\\\"\\n\\n def build(self, html_content: Data, ignore_links: bool = False) -> str:\\n converter = html2text.HTML2Text()\\n converter.ignore_links = ignore_links\\n markdown_text = converter.handle(html_content)\\n self.status = markdown_text\\n return markdown_text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"html_content\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"html_content\",\"display_name\":\"html_content\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false},\"ignore_links\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"ignore_links\",\"display_name\":\"ignore_links\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false}},\"description\":\"Converts HTML content to Markdown format.\",\"base_classes\":[\"str\"],\"display_name\":\"HTML to Markdown\",\"custom_fields\":{\"html_content\":null,\"ignore_links\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-f6nOg\"},\"selected\":true,\"positionAbsolute\":{\"x\":665.2835942536854,\"y\":-371.7823429271119},\"dragging\":false},{\"width\":384,\"height\":375,\"id\":\"CustomComponent-FGzJJ\",\"type\":\"genericNode\",\"position\":{\"x\":-464.4553400967736,\"y\":-225.62715888255525},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"Fetch HTML\\\"\\n description: str = \\\"Fetches HTML content from a specified URL.\\\"\\n \\n def build_config(self):\\n return {\\\"url\\\": {\\\"input_types\\\": [\\\"Data\\\", \\\"str\\\"]}} \\n\\n def build(self, url: str) -> Data:\\n response = requests.get(url)\\n self.status = str(response) + \\\"\\\\n\\\\n\\\" + response.text\\n return response.text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"url\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"input_types\":[\"Data\",\"str\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"}},\"description\":\"Fetches HTML content from a specified URL.\",\"base_classes\":[\"Data\"],\"display_name\":\"Fetch HTML\",\"custom_fields\":{\"url\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-FGzJJ\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":-464.4553400967736,\"y\":-225.62715888255525}},{\"width\":384,\"height\":329,\"id\":\"CustomComponent-0XtUN\",\"type\":\"genericNode\",\"position\":{\"x\":214.00059169497604,\"y\":177.27071061129823},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from bs4 import BeautifulSoup\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ParseHTMLContent(CustomComponent):\\n display_name: str = \\\"Parse HTML\\\"\\n description: str = \\\"Parses HTML content using Beautiful Soup.\\\"\\n\\n def build(self, html_content: Data) -> Data:\\n soup = BeautifulSoup(html_content, 'html.parser')\\n self.status = soup\\n return soup\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"html_content\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"html_content\",\"display_name\":\"html_content\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false}},\"description\":\"Parses HTML content using Beautiful Soup.\",\"base_classes\":[\"Data\"],\"display_name\":\"Parse HTML\",\"custom_fields\":{\"html_content\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-0XtUN\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":214.00059169497604,\"y\":177.27071061129823}},{\"width\":384,\"height\":329,\"id\":\"CustomComponent-ODIcp\",\"type\":\"genericNode\",\"position\":{\"x\":845.0502195222412,\"y\":366.54344452019404},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ExtractHyperlinks(CustomComponent):\\n display_name: str = \\\"Extract Hyperlinks\\\"\\n description: str = \\\"Extracts hyperlinks from parsed HTML content.\\\"\\n\\n def build(self, soup: Data) -> list:\\n links = [link.get('href') for link in soup.find_all('a')]\\n self.status = links\\n return links\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"soup\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"soup\",\"display_name\":\"soup\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false}},\"description\":\"Extracts hyperlinks from parsed HTML content.\",\"base_classes\":[\"list\"],\"display_name\":\"Extract Hyperlinks\",\"custom_fields\":{\"soup\":null},\"output_types\":[\"list\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-ODIcp\"},\"selected\":true,\"positionAbsolute\":{\"x\":845.0502195222412,\"y\":366.54344452019404},\"dragging\":false},{\"width\":384,\"height\":657,\"id\":\"PromptTemplate-H9Udy\",\"type\":\"genericNode\",\"position\":{\"x\":2230.389721706283,\"y\":584.4905083765256},\"data\":{\"type\":\"PromptTemplate\",\"node\":{\"template\":{\"output_parser\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false},\"input_types\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"input_variables\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"url\",\"html_markdown\",\"html_links\",\"query\"]},\"partial_variables\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"template\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"prompt\",\"list\":false,\"value\":\"Below is the HTML content (as markdown) and hyperlinks extracted from {url}\\n\\n---\\n\\nContent:\\n\\n{html_markdown}\\n\\n---\\n\\nLinks:\\n\\n{html_links}\\n\\n---\\n\\nAnswer the user query as best as possible.\\n\\nUser query:\\n\\n{query}\\n\\nAnswer:\\n\"},\"template_format\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"f-string\",\"password\":false,\"name\":\"template_format\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":false},\"validate_template\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"PromptTemplate\",\"url\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"html_markdown\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"html_markdown\",\"display_name\":\"html_markdown\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"html_links\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"html_links\",\"display_name\":\"html_links\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"query\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"query\",\"display_name\":\"query\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"A prompt template for a language model.\",\"base_classes\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"name\":\"\",\"display_name\":\"PromptTemplate\",\"documentation\":\"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\"custom_fields\":{\"\":[\"url\",\"html_markdown\",\"html_links\",\"query\"]},\"output_types\":[],\"full_path\":null,\"field_formatters\":{},\"beta\":false,\"error\":null},\"id\":\"PromptTemplate-H9Udy\"},\"selected\":true,\"positionAbsolute\":{\"x\":2230.389721706283,\"y\":584.4905083765256},\"dragging\":false},{\"width\":384,\"height\":347,\"id\":\"CustomComponent-OACE0\",\"type\":\"genericNode\",\"position\":{\"x\":-1155.9497945157625,\"y\":198.13583204151553},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"URL Input\\\"\\n\\n def build(self, url: str) -> str:\\n return url\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"url\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":null,\"base_classes\":[\"str\"],\"display_name\":\"URL Input\",\"custom_fields\":{\"url\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-OACE0\"},\"selected\":true,\"positionAbsolute\":{\"x\":-1155.9497945157625,\"y\":198.13583204151553},\"dragging\":false},{\"width\":384,\"height\":329,\"id\":\"CustomComponent-whsQ5\",\"type\":\"genericNode\",\"position\":{\"x\":1396.5574076376327,\"y\":694.8308714574463},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\n\\nclass ListToMarkdownBullets(CustomComponent):\\n display_name: str = \\\"List to Bullets\\\"\\n description: str = \\\"Converts a Python list into Markdown bullet points.\\\"\\n\\n def build(self, items: list) -> str:\\n markdown_bullets = '\\\\n'.join(f'* {item}' for item in items)\\n return markdown_bullets\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"items\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"items\",\"display_name\":\"items\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"list\",\"list\":true}},\"description\":\"Converts a Python list into Markdown bullet points.\",\"base_classes\":[\"str\"],\"display_name\":\"List to Bullets\",\"custom_fields\":{\"items\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-whsQ5\"},\"selected\":true,\"positionAbsolute\":{\"x\":1396.5574076376327,\"y\":694.8308714574463},\"dragging\":false}],\"edges\":[{\"source\":\"CustomComponent-FGzJJ\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-FGzJJล“}\",\"target\":\"CustomComponent-f6nOg\",\"targetHandle\":\"{ล“fieldNameล“:ล“html_contentล“,ล“idล“:ล“CustomComponent-f6nOgล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_content\",\"id\":\"CustomComponent-f6nOg\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-FGzJJ\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-FGzJJ{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-FGzJJล“}-CustomComponent-f6nOg{ล“fieldNameล“:ล“html_contentล“,ล“idล“:ล“CustomComponent-f6nOgล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"selected\":true},{\"source\":\"CustomComponent-FGzJJ\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-FGzJJล“}\",\"target\":\"CustomComponent-0XtUN\",\"targetHandle\":\"{ล“fieldNameล“:ล“html_contentล“,ล“idล“:ล“CustomComponent-0XtUNล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_content\",\"id\":\"CustomComponent-0XtUN\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-FGzJJ\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-FGzJJ{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-FGzJJล“}-CustomComponent-0XtUN{ล“fieldNameล“:ล“html_contentล“,ล“idล“:ล“CustomComponent-0XtUNล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"selected\":true},{\"source\":\"CustomComponent-0XtUN\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-0XtUNล“}\",\"target\":\"CustomComponent-ODIcp\",\"targetHandle\":\"{ล“fieldNameล“:ล“soupล“,ล“idล“:ล“CustomComponent-ODIcpล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"soup\",\"id\":\"CustomComponent-ODIcp\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-0XtUN\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-0XtUN{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-0XtUNล“}-CustomComponent-ODIcp{ล“fieldNameล“:ล“soupล“,ล“idล“:ล“CustomComponent-ODIcpล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"selected\":true},{\"source\":\"CustomComponent-OACE0\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-OACE0ล“}\",\"target\":\"CustomComponent-FGzJJ\",\"targetHandle\":\"{ล“fieldNameล“:ล“urlล“,ล“idล“:ล“CustomComponent-FGzJJล“,ล“inputTypesล“:[ล“Dataล“,ล“strล“],ล“typeล“:ล“strล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"url\",\"id\":\"CustomComponent-FGzJJ\",\"inputTypes\":[\"Data\",\"str\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-OACE0\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-OACE0{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-OACE0ล“}-CustomComponent-FGzJJ{ล“fieldNameล“:ล“urlล“,ล“idล“:ล“CustomComponent-FGzJJล“,ล“inputTypesล“:[ล“Dataล“,ล“strล“],ล“typeล“:ล“strล“}\",\"selected\":true},{\"source\":\"CustomComponent-OACE0\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-OACE0ล“}\",\"target\":\"PromptTemplate-H9Udy\",\"targetHandle\":\"{ล“fieldNameล“:ล“urlล“,ล“idล“:ล“PromptTemplate-H9Udyล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"url\",\"id\":\"PromptTemplate-H9Udy\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-OACE0\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-OACE0{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-OACE0ล“}-PromptTemplate-H9Udy{ล“fieldNameล“:ล“urlล“,ล“idล“:ล“PromptTemplate-H9Udyล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"selected\":true},{\"source\":\"CustomComponent-ODIcp\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“listล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-ODIcpล“}\",\"target\":\"CustomComponent-whsQ5\",\"targetHandle\":\"{ล“fieldNameล“:ล“itemsล“,ล“idล“:ล“CustomComponent-whsQ5ล“,ล“inputTypesล“:null,ล“typeล“:ล“listล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"items\",\"id\":\"CustomComponent-whsQ5\",\"inputTypes\":null,\"type\":\"list\"},\"sourceHandle\":{\"baseClasses\":[\"list\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-ODIcp\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-ODIcp{ล“baseClassesล“:[ล“listล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-ODIcpล“}-CustomComponent-whsQ5{ล“fieldNameล“:ล“itemsล“,ล“idล“:ล“CustomComponent-whsQ5ล“,ล“inputTypesล“:null,ล“typeล“:ล“listล“}\",\"selected\":true},{\"source\":\"CustomComponent-whsQ5\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-whsQ5ล“}\",\"target\":\"PromptTemplate-H9Udy\",\"targetHandle\":\"{ล“fieldNameล“:ล“html_linksล“,ล“idล“:ล“PromptTemplate-H9Udyล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_links\",\"id\":\"PromptTemplate-H9Udy\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-whsQ5\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-whsQ5{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-whsQ5ล“}-PromptTemplate-H9Udy{ล“fieldNameล“:ล“html_linksล“,ล“idล“:ล“PromptTemplate-H9Udyล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"selected\":true},{\"source\":\"CustomComponent-f6nOg\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-f6nOgล“}\",\"target\":\"PromptTemplate-H9Udy\",\"targetHandle\":\"{ล“fieldNameล“:ล“html_markdownล“,ล“idล“:ล“PromptTemplate-H9Udyล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_markdown\",\"id\":\"PromptTemplate-H9Udy\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-f6nOg\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-f6nOg{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-f6nOgล“}-PromptTemplate-H9Udy{ล“fieldNameล“:ล“html_markdownล“,ล“idล“:ล“PromptTemplate-H9Udyล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"selected\":true}],\"viewport\":{\"x\":343.0346131188585,\"y\":341.89843948642147,\"zoom\":0.24148408223121196}},\"is_component\":false,\"name\":\"Fluffy Ptolemy\",\"description\":\"\",\"id\":\"W5oNW\"}}},\"selected\":false,\"positionAbsolute\":{\"x\":-222,\"y\":682.560723386973}}],\"edges\":[{\"source\":\"ChatOpenAI-NTTcv\",\"target\":\"LLMChain-RQsU1\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“BaseLanguageModelล“,ล“ChatOpenAIล“,ล“BaseChatModelล“,ล“BaseLLMล“],ล“dataTypeล“:ล“ChatOpenAIล“,ล“idล“:ล“ChatOpenAI-NTTcvล“}\",\"targetHandle\":\"{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“LLMChain-RQsU1ล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLanguageModelล“}\",\"id\":\"reactflow__edge-ChatOpenAI-NTTcv{ล“baseClassesล“:[ล“BaseLanguageModelล“,ล“ChatOpenAIล“,ล“BaseChatModelล“,ล“BaseLLMล“],ล“dataTypeล“:ล“ChatOpenAIล“,ล“idล“:ล“ChatOpenAI-NTTcvล“}-LLMChain-RQsU1{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“LLMChain-RQsU1ล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLanguageModelล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"LLMChain-RQsU1\",\"inputTypes\":null,\"type\":\"BaseLanguageModel\"},\"sourceHandle\":{\"baseClasses\":[\"BaseLanguageModel\",\"ChatOpenAI\",\"BaseChatModel\",\"BaseLLM\"],\"dataType\":\"ChatOpenAI\",\"id\":\"ChatOpenAI-NTTcv\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 \",\"animated\":false,\"selected\":false},{\"source\":\"PromptTemplate-VELMV\",\"target\":\"LLMChain-RQsU1\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“StringPromptTemplateล“,ล“BasePromptTemplateล“,ล“PromptTemplateล“],ล“dataTypeล“:ล“PromptTemplateล“,ล“idล“:ล“PromptTemplate-VELMVล“}\",\"targetHandle\":\"{ล“fieldNameล“:ล“promptล“,ล“idล“:ล“LLMChain-RQsU1ล“,ล“inputTypesล“:null,ล“typeล“:ล“BasePromptTemplateล“}\",\"id\":\"reactflow__edge-PromptTemplate-VELMV{ล“baseClassesล“:[ล“StringPromptTemplateล“,ล“BasePromptTemplateล“,ล“PromptTemplateล“],ล“dataTypeล“:ล“PromptTemplateล“,ล“idล“:ล“PromptTemplate-VELMVล“}-LLMChain-RQsU1{ล“fieldNameล“:ล“promptล“,ล“idล“:ล“LLMChain-RQsU1ล“,ล“inputTypesล“:null,ล“typeล“:ล“BasePromptTemplateล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"prompt\",\"id\":\"LLMChain-RQsU1\",\"inputTypes\":null,\"type\":\"BasePromptTemplate\"},\"sourceHandle\":{\"baseClasses\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"dataType\":\"PromptTemplate\",\"id\":\"PromptTemplate-VELMV\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 \",\"animated\":false,\"selected\":false}],\"viewport\":{\"x\":298.29888454238517,\"y\":96.95765543775741,\"zoom\":0.5140569133280332}},\"is_component\":false,\"updated_at\":\"2023-12-04T23:23:08.584967\",\"folder\":null,\"id\":\"5df79f1d-f592-4d59-8c0f-9f3c2f6465b1\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Silly Pasteur\",\"description\":\"Nurture NLP Nodes Here.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":338,\"id\":\"LLMChain-cHel8\",\"type\":\"genericNode\",\"position\":{\"x\":547.3876889720291,\"y\":299.2057833881307},\"data\":{\"type\":\"LLMChain\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Callable, Optional, Union\\n\\nfrom langchain.chains import LLMChain\\n\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import (\\n BaseLanguageModel,\\n BaseMemory,\\n BasePromptTemplate,\\n Chain,\\n)\\n\\n\\nclass LLMChainComponent(CustomComponent):\\n display_name = \\\"LLMChain\\\"\\n description = \\\"Chain to run queries against LLMs\\\"\\n\\n def build_config(self):\\n return {\\n \\\"prompt\\\": {\\\"display_name\\\": \\\"Prompt\\\"},\\n \\\"llm\\\": {\\\"display_name\\\": \\\"LLM\\\"},\\n \\\"memory\\\": {\\\"display_name\\\": \\\"Memory\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n prompt: BasePromptTemplate,\\n llm: BaseLanguageModel,\\n memory: Optional[BaseMemory] = None,\\n ) -> Union[Chain, Callable]:\\n return LLMChain(prompt=prompt, llm=llm, memory=memory)\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"display_name\":\"Memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseMemory\",\"list\":false},\"prompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"prompt\",\"display_name\":\"Prompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BasePromptTemplate\",\"list\":false}},\"description\":\"Chain to run queries against LLMs\",\"base_classes\":[\"Chain\",\"Callable\"],\"display_name\":\"LLMChain\",\"custom_fields\":{\"llm\":null,\"memory\":null,\"prompt\":null},\"output_types\":[\"LLMChain\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"LLMChain-cHel8\"},\"selected\":false,\"positionAbsolute\":{\"x\":547.3876889720291,\"y\":299.2057833881307},\"dragging\":false},{\"width\":384,\"height\":626,\"id\":\"ChatOpenAI-LA6y0\",\"type\":\"genericNode\",\"position\":{\"x\":-272.94405331278074,\"y\":-603.148171441675},\"data\":{\"type\":\"ChatOpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain_core.callbacks.base.BaseCallbackHandler\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"gpt-4-1106-preview\",\"password\":false,\"options\":[\"gpt-4-1106-preview\",\"gpt-4\",\"gpt-4-32k\",\"gpt-3.5-turbo\",\"gpt-3.5-turbo-16k\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"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\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"0.1\",\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ChatOpenAI\"},\"description\":\"`OpenAI` Chat large language models API.\",\"base_classes\":[\"BaseLanguageModel\",\"ChatOpenAI\",\"BaseChatModel\",\"BaseLLM\"],\"display_name\":\"ChatOpenAI\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"ChatOpenAI-LA6y0\"},\"selected\":false,\"dragging\":false,\"positionAbsolute\":{\"x\":-272.94405331278074,\"y\":-603.148171441675}},{\"width\":384,\"height\":404,\"id\":\"CustomComponent-ZNoRM\",\"type\":\"genericNode\",\"position\":{\"x\":-103.65741264289085,\"y\":134.62332404764658},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport html2text\\n\\nclass ConvertHTMLToMarkdown(CustomComponent):\\n display_name: str = \\\"HTML to Markdown\\\"\\n description: str = \\\"Converts HTML content to Markdown format.\\\"\\n\\n def build(self, html_content: Data, ignore_links: bool = False) -> str:\\n converter = html2text.HTML2Text()\\n converter.ignore_links = ignore_links\\n markdown_text = converter.handle(html_content)\\n self.status = markdown_text\\n return markdown_text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"display_name\":\"code\"},\"_type\":\"CustomComponent\",\"html_content\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"html_content\",\"display_name\":\"html_content\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false},\"ignore_links\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"ignore_links\",\"display_name\":\"ignore_links\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false}},\"description\":\"Converts HTML content to Markdown format.\",\"base_classes\":[\"str\"],\"display_name\":\"HTML to Markdown\",\"custom_fields\":{\"html_content\":null,\"ignore_links\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-ZNoRM\"},\"selected\":false,\"positionAbsolute\":{\"x\":-103.65741264289085,\"y\":134.62332404764658},\"dragging\":false},{\"width\":384,\"height\":374,\"id\":\"CustomComponent-zNSTv\",\"type\":\"genericNode\",\"position\":{\"x\":-1233.3963469933499,\"y\":280.77850809220325},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"Fetch HTML\\\"\\n description: str = \\\"Fetches HTML content from a specified URL.\\\"\\n \\n def build_config(self):\\n return {\\\"url\\\": {\\\"input_types\\\": [\\\"Data\\\", \\\"str\\\"]}} \\n\\n def build(self, url: str) -> Data:\\n response = requests.get(url)\\n self.status = str(response) + \\\"\\\\n\\\\n\\\" + response.text\\n return response.text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"display_name\":\"code\"},\"_type\":\"CustomComponent\",\"url\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"input_types\":[\"Data\",\"str\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"}},\"description\":\"Fetches HTML content from a specified URL.\",\"base_classes\":[\"Data\"],\"display_name\":\"Fetch HTML\",\"custom_fields\":{\"url\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-zNSTv\"},\"selected\":false,\"dragging\":false,\"positionAbsolute\":{\"x\":-1233.3963469933499,\"y\":280.77850809220325}},{\"width\":384,\"height\":328,\"id\":\"CustomComponent-Ihm2o\",\"type\":\"genericNode\",\"position\":{\"x\":-554.9404152016002,\"y\":683.6763775860567},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from bs4 import BeautifulSoup\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ParseHTMLContent(CustomComponent):\\n display_name: str = \\\"Parse HTML\\\"\\n description: str = \\\"Parses HTML content using Beautiful Soup.\\\"\\n\\n def build(self, html_content: Data) -> Data:\\n soup = BeautifulSoup(html_content, 'html.parser')\\n self.status = soup\\n return soup\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"display_name\":\"code\"},\"_type\":\"CustomComponent\",\"html_content\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"html_content\",\"display_name\":\"html_content\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false}},\"description\":\"Parses HTML content using Beautiful Soup.\",\"base_classes\":[\"Data\"],\"display_name\":\"Parse HTML\",\"custom_fields\":{\"html_content\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-Ihm2o\"},\"selected\":false,\"dragging\":false,\"positionAbsolute\":{\"x\":-554.9404152016002,\"y\":683.6763775860567}},{\"width\":384,\"height\":328,\"id\":\"CustomComponent-6ST9l\",\"type\":\"genericNode\",\"position\":{\"x\":76.10921262566495,\"y\":872.9491114949525},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ExtractHyperlinks(CustomComponent):\\n display_name: str = \\\"Extract Hyperlinks\\\"\\n description: str = \\\"Extracts hyperlinks from parsed HTML content.\\\"\\n\\n def build(self, soup: Data) -> list:\\n links = [link.get('href') for link in soup.find_all('a')]\\n self.status = links\\n return links\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"display_name\":\"code\"},\"_type\":\"CustomComponent\",\"soup\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"soup\",\"display_name\":\"soup\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false}},\"description\":\"Extracts hyperlinks from parsed HTML content.\",\"base_classes\":[\"list\"],\"display_name\":\"Extract Hyperlinks\",\"custom_fields\":{\"soup\":null},\"output_types\":[\"list\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-6ST9l\"},\"selected\":false,\"positionAbsolute\":{\"x\":76.10921262566495,\"y\":872.9491114949525},\"dragging\":false},{\"width\":384,\"height\":654,\"id\":\"PromptTemplate-l35W1\",\"type\":\"genericNode\",\"position\":{\"x\":1461.4487148097069,\"y\":1090.896175351284},\"data\":{\"type\":\"PromptTemplate\",\"node\":{\"template\":{\"output_parser\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false,\"display_name\":\"output_parser\"},\"input_types\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false,\"display_name\":\"input_types\"},\"input_variables\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"url\",\"html_markdown\",\"html_links\",\"query\"],\"display_name\":\"input_variables\"},\"partial_variables\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false,\"display_name\":\"partial_variables\"},\"template\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"prompt\",\"list\":false,\"value\":\"Below is the HTML content (as markdown) and hyperlinks extracted from {url}\\n\\n---\\n\\nContent:\\n\\n{html_markdown}\\n\\n---\\n\\nLinks:\\n\\n{html_links}\\n\\n---\\n\\nAnswer the user query as best as possible.\\n\\nUser query:\\n\\n{query}\\n\\nAnswer:\\n\",\"display_name\":\"template\"},\"template_format\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"f-string\",\"password\":false,\"name\":\"template_format\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":false,\"display_name\":\"template_format\"},\"validate_template\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false,\"display_name\":\"validate_template\"},\"_type\":\"PromptTemplate\",\"url\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"html_markdown\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"html_markdown\",\"display_name\":\"html_markdown\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"html_links\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"html_links\",\"display_name\":\"html_links\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"query\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"query\",\"display_name\":\"query\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"A prompt template for a language model.\",\"base_classes\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"name\":\"\",\"display_name\":\"PromptTemplate\",\"documentation\":\"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\"custom_fields\":{\"\":[\"url\",\"html_markdown\",\"html_links\",\"query\"]},\"output_types\":[],\"full_path\":null,\"field_formatters\":{},\"beta\":false,\"error\":null},\"id\":\"PromptTemplate-l35W1\"},\"selected\":false,\"positionAbsolute\":{\"x\":1461.4487148097069,\"y\":1090.896175351284},\"dragging\":false},{\"width\":384,\"height\":346,\"id\":\"CustomComponent-iTLf4\",\"type\":\"genericNode\",\"position\":{\"x\":-1924.8908014123388,\"y\":704.5414990162741},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"URL Input\\\"\\n\\n def build(self, url: str) -> str:\\n return url\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"display_name\":\"code\"},\"_type\":\"CustomComponent\",\"url\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"https://paperswithcode.com/\"}},\"description\":null,\"base_classes\":[\"str\"],\"display_name\":\"URL Input\",\"custom_fields\":{\"url\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-iTLf4\"},\"selected\":false,\"positionAbsolute\":{\"x\":-1924.8908014123388,\"y\":704.5414990162741},\"dragging\":false},{\"width\":384,\"height\":328,\"id\":\"CustomComponent-jWLUz\",\"type\":\"genericNode\",\"position\":{\"x\":627.6164007410564,\"y\":1201.2365384322047},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\n\\nclass ListToMarkdownBullets(CustomComponent):\\n display_name: str = \\\"List to Bullets\\\"\\n description: str = \\\"Converts a Python list into Markdown bullet points.\\\"\\n\\n def build(self, items: list) -> str:\\n markdown_bullets = '\\\\n'.join(f'* {item}' for item in items)\\n return markdown_bullets\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"display_name\":\"code\"},\"_type\":\"CustomComponent\",\"items\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"items\",\"display_name\":\"items\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"list\",\"list\":true}},\"description\":\"Converts a Python list into Markdown bullet points.\",\"base_classes\":[\"str\"],\"display_name\":\"List to Bullets\",\"custom_fields\":{\"items\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-jWLUz\"},\"selected\":false,\"positionAbsolute\":{\"x\":627.6164007410564,\"y\":1201.2365384322047},\"dragging\":false}],\"edges\":[{\"source\":\"ChatOpenAI-LA6y0\",\"target\":\"LLMChain-cHel8\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“BaseLanguageModelล“,ล“ChatOpenAIล“,ล“BaseChatModelล“,ล“BaseLLMล“],ล“dataTypeล“:ล“ChatOpenAIล“,ล“idล“:ล“ChatOpenAI-LA6y0ล“}\",\"targetHandle\":\"{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“LLMChain-cHel8ล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLanguageModelล“}\",\"id\":\"reactflow__edge-ChatOpenAI-LA6y0{ล“baseClassesล“:[ล“BaseLanguageModelล“,ล“ChatOpenAIล“,ล“BaseChatModelล“,ล“BaseLLMล“],ล“dataTypeล“:ล“ChatOpenAIล“,ล“idล“:ล“ChatOpenAI-LA6y0ล“}-LLMChain-cHel8{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“LLMChain-cHel8ล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLanguageModelล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"LLMChain-cHel8\",\"inputTypes\":null,\"type\":\"BaseLanguageModel\"},\"sourceHandle\":{\"baseClasses\":[\"BaseLanguageModel\",\"ChatOpenAI\",\"BaseChatModel\",\"BaseLLM\"],\"dataType\":\"ChatOpenAI\",\"id\":\"ChatOpenAI-LA6y0\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"selected\":false},{\"source\":\"CustomComponent-zNSTv\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-zNSTvล“}\",\"target\":\"CustomComponent-ZNoRM\",\"targetHandle\":\"{ล“fieldNameล“:ล“html_contentล“,ล“idล“:ล“CustomComponent-ZNoRMล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_content\",\"id\":\"CustomComponent-ZNoRM\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-zNSTv\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-zNSTv{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-zNSTvล“}-CustomComponent-ZNoRM{ล“fieldNameล“:ล“html_contentล“,ล“idล“:ล“CustomComponent-ZNoRMล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"selected\":false},{\"source\":\"CustomComponent-zNSTv\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-zNSTvล“}\",\"target\":\"CustomComponent-Ihm2o\",\"targetHandle\":\"{ล“fieldNameล“:ล“html_contentล“,ล“idล“:ล“CustomComponent-Ihm2oล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_content\",\"id\":\"CustomComponent-Ihm2o\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-zNSTv\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-zNSTv{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-zNSTvล“}-CustomComponent-Ihm2o{ล“fieldNameล“:ล“html_contentล“,ล“idล“:ล“CustomComponent-Ihm2oล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"selected\":false},{\"source\":\"CustomComponent-Ihm2o\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-Ihm2oล“}\",\"target\":\"CustomComponent-6ST9l\",\"targetHandle\":\"{ล“fieldNameล“:ล“soupล“,ล“idล“:ล“CustomComponent-6ST9lล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"soup\",\"id\":\"CustomComponent-6ST9l\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-Ihm2o\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-Ihm2o{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-Ihm2oล“}-CustomComponent-6ST9l{ล“fieldNameล“:ล“soupล“,ล“idล“:ล“CustomComponent-6ST9lล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"selected\":false},{\"source\":\"CustomComponent-iTLf4\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-iTLf4ล“}\",\"target\":\"CustomComponent-zNSTv\",\"targetHandle\":\"{ล“fieldNameล“:ล“urlล“,ล“idล“:ล“CustomComponent-zNSTvล“,ล“inputTypesล“:[ล“Dataล“,ล“strล“],ล“typeล“:ล“strล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"url\",\"id\":\"CustomComponent-zNSTv\",\"inputTypes\":[\"Data\",\"str\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-iTLf4\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-iTLf4{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-iTLf4ล“}-CustomComponent-zNSTv{ล“fieldNameล“:ล“urlล“,ล“idล“:ล“CustomComponent-zNSTvล“,ล“inputTypesล“:[ล“Dataล“,ล“strล“],ล“typeล“:ล“strล“}\",\"selected\":false},{\"source\":\"CustomComponent-iTLf4\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-iTLf4ล“}\",\"target\":\"PromptTemplate-l35W1\",\"targetHandle\":\"{ล“fieldNameล“:ล“urlล“,ล“idล“:ล“PromptTemplate-l35W1ล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"url\",\"id\":\"PromptTemplate-l35W1\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-iTLf4\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-iTLf4{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-iTLf4ล“}-PromptTemplate-l35W1{ล“fieldNameล“:ล“urlล“,ล“idล“:ล“PromptTemplate-l35W1ล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"selected\":false},{\"source\":\"CustomComponent-6ST9l\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“listล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-6ST9lล“}\",\"target\":\"CustomComponent-jWLUz\",\"targetHandle\":\"{ล“fieldNameล“:ล“itemsล“,ล“idล“:ล“CustomComponent-jWLUzล“,ล“inputTypesล“:null,ล“typeล“:ล“listล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"items\",\"id\":\"CustomComponent-jWLUz\",\"inputTypes\":null,\"type\":\"list\"},\"sourceHandle\":{\"baseClasses\":[\"list\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-6ST9l\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-6ST9l{ล“baseClassesล“:[ล“listล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-6ST9lล“}-CustomComponent-jWLUz{ล“fieldNameล“:ล“itemsล“,ล“idล“:ล“CustomComponent-jWLUzล“,ล“inputTypesล“:null,ล“typeล“:ล“listล“}\",\"selected\":false},{\"source\":\"CustomComponent-jWLUz\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-jWLUzล“}\",\"target\":\"PromptTemplate-l35W1\",\"targetHandle\":\"{ล“fieldNameล“:ล“html_linksล“,ล“idล“:ล“PromptTemplate-l35W1ล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_links\",\"id\":\"PromptTemplate-l35W1\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-jWLUz\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-jWLUz{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-jWLUzล“}-PromptTemplate-l35W1{ล“fieldNameล“:ล“html_linksล“,ล“idล“:ล“PromptTemplate-l35W1ล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"selected\":false},{\"source\":\"CustomComponent-ZNoRM\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-ZNoRMล“}\",\"target\":\"PromptTemplate-l35W1\",\"targetHandle\":\"{ล“fieldNameล“:ล“html_markdownล“,ล“idล“:ล“PromptTemplate-l35W1ล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_markdown\",\"id\":\"PromptTemplate-l35W1\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-ZNoRM\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-ZNoRM{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-ZNoRMล“}-PromptTemplate-l35W1{ล“fieldNameล“:ล“html_markdownล“,ล“idล“:ล“PromptTemplate-l35W1ล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"selected\":false},{\"source\":\"PromptTemplate-l35W1\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“StringPromptTemplateล“,ล“BasePromptTemplateล“,ล“PromptTemplateล“],ล“dataTypeล“:ล“PromptTemplateล“,ล“idล“:ล“PromptTemplate-l35W1ล“}\",\"target\":\"LLMChain-cHel8\",\"targetHandle\":\"{ล“fieldNameล“:ล“promptล“,ล“idล“:ล“LLMChain-cHel8ล“,ล“inputTypesล“:null,ล“typeล“:ล“BasePromptTemplateล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"prompt\",\"id\":\"LLMChain-cHel8\",\"inputTypes\":null,\"type\":\"BasePromptTemplate\"},\"sourceHandle\":{\"baseClasses\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"dataType\":\"PromptTemplate\",\"id\":\"PromptTemplate-l35W1\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-PromptTemplate-mJqEg{ล“baseClassesล“:[ล“StringPromptTemplateล“,ล“BasePromptTemplateล“,ล“PromptTemplateล“],ล“dataTypeล“:ล“PromptTemplateล“,ล“idล“:ล“PromptTemplate-mJqEgล“}-LLMChain-cHel8{ล“fieldNameล“:ล“promptล“,ล“idล“:ล“LLMChain-cHel8ล“,ล“inputTypesล“:null,ล“typeล“:ล“BasePromptTemplateล“}\"}],\"viewport\":{\"x\":206.6159172940935,\"y\":79.94375811155385,\"zoom\":0.5140569133280333}},\"is_component\":false,\"updated_at\":\"2023-12-06T00:23:04.515144\",\"folder\":null,\"id\":\"ecfb377a-7e88-405d-8d66-7560735ce446\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lonely Lovelace\",\"description\":\"Smart Chains, Smarter Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-04T23:43:25.925753\",\"folder\":null,\"id\":\"30e71767-6128-40e4-9a6d-b9197b679971\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Custom Component\",\"description\":\"Create any custom component you want!\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\n\\nclass Component(CustomComponent):\\n display_name: str = \\\"Custom Component\\\"\\n description: str = \\\"Create any custom component you want!\\\"\\n documentation: str = \\\"http://docs.langflow.org/components/custom\\\"\\n\\n def build_config(self):\\n return {\\\"param\\\": {\\\"display_name\\\": \\\"Parameter\\\"}}\\n\\n def build(self, param: Data) -> Data:\\n return param\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"param\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"param\",\"display_name\":\"Parameter\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false}},\"description\":\"Create any custom component you want!\",\"base_classes\":[\"Data\"],\"display_name\":\"Custom Component\",\"custom_fields\":{\"param\":null},\"output_types\":[\"CustomComponent\"],\"documentation\":\"http://docs.langflow.org/components/custom\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"CustomComponent-IxJqc\"},\"id\":\"CustomComponent-IxJqc\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-05T22:08:27.080204\",\"folder\":null,\"id\":\"f3c56abb-96d8-4a09-80d3-f60181661b3c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Amazing Wilson\",\"description\":\"Unfolding Linguistic Possibilities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-05T23:49:58.272677\",\"folder\":null,\"id\":\"324499a6-17a6-49de-96b1-b88955ed2c3d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Nauseous Kowalevski\",\"description\":\"Create, Curate, Communicate with Langflow.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:45:27.084387\",\"folder\":null,\"id\":\"e3168485-d31b-472a-907f-faf833bf7824\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Silly Fermi\",\"description\":\"Craft Meaningful Interactions, Generate Value.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:45:57.134463\",\"folder\":null,\"id\":\"d0ecea5d-bcf9-4b8e-88f0-3c243d309336\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Friendly Ardinghelli\",\"description\":\"Smart Chains, Smarter Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:45:57.138184\",\"folder\":null,\"id\":\"a406912d-b0e2-4954-bef3-ee80c29eca3c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gleeful Easley\",\"description\":\"Bridging Prompts for Brilliance.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:45:57.162908\",\"folder\":null,\"id\":\"57b32155-4c6e-4823-ad03-8dd09d8abc62\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Effervescent Varahamihira\",\"description\":\"Create, Chain, Communicate.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:45:57.135644\",\"folder\":null,\"id\":\"18daa0ff-2e5d-457a-95d7-710affec5c4d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Jubilant Joliot\",\"description\":\"Language Architect at Work!\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:45:57.139496\",\"folder\":null,\"id\":\"9255e938-280e-4ce7-91cd-8622126a7d02\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Adoring Carroll\",\"description\":\"Nurture NLP Nodes Here.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:45:57.162240\",\"folder\":null,\"id\":\"a7a680b9-30b1-4438-ac24-da597de443aa\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Berserk Herschel\",\"description\":\"Your Hub for Text Generation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:46:02.593504\",\"folder\":null,\"id\":\"37a439b0-7b1d-45e3-b4fa-5c73669bae3b\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Distracted Joliot\",\"description\":\"Conversational Cartography Unlocked.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:04.845238\",\"folder\":null,\"id\":\"4d23fd0a-8ad5-46b9-bb99-eed4138e7426\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Happy Babbage\",\"description\":\"Flow into the Future of Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:41.899665\",\"folder\":null,\"id\":\"1c8ad5b9-5524-41fe-a762-52c75126b832\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Adoring Brown\",\"description\":\"Unlock the Power of AI in Your Business Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:42.702031\",\"folder\":null,\"id\":\"9d4c8e79-4904-4a51-a4bb-146c3d8db10e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Focused Mahavira\",\"description\":\"Design, Develop, Dialogize.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:42.786331\",\"folder\":null,\"id\":\"4ba370d1-1f8e-4a23-99aa-99e2cd9b7cbf\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Mad Gates\",\"description\":\"Where Language Meets Logic.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:42.838989\",\"folder\":null,\"id\":\"992c3cd3-1d79-4986-8c04-88a34130fa30\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Serene Mcclintock\",\"description\":\"Unlock the Power of AI in Your Business Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:42.932723\",\"folder\":null,\"id\":\"a65bfd13-44df-4090-aca0-5057e21e9997\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Berserk Feynman\",\"description\":\"Text Generation Meets Business Transformation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:42.931359\",\"folder\":null,\"id\":\"7a05dac5-c005-411d-9994-19d61e71ce78\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sprightly Perlman\",\"description\":\"Interactive Language Weaving.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:43.054687\",\"folder\":null,\"id\":\"6db24541-7211-48e6-a792-1a4a99a0ef90\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Jolly Colden\",\"description\":\"Flow into the Future of Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:43.078384\",\"folder\":null,\"id\":\"13ac42e8-9124-4bf4-9ea2-28671ef2d9a4\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gleeful Kaku\",\"description\":\"The Power of Language at Your Fingertips.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:50:33.156776\",\"folder\":null,\"id\":\"79262d75-5c62-4b14-b067-f4297f5c912f\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Jovial Khayyam\",\"description\":\"Empowering Communication, Enabling Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:51:13.295375\",\"folder\":null,\"id\":\"3b397e74-d8be-4728-9d6c-05f7c78106a7\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Goofy Mccarthy\",\"description\":\"Building Powerful Solutions with Language Models.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:51:27.632685\",\"folder\":null,\"id\":\"13f4e1fd-45eb-4271-92fd-0d70a31c61d2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cocky Lalande\",\"description\":\"Building Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:51:54.628983\",\"folder\":null,\"id\":\"9cfd60d8-9311-47b0-b71b-f488f1940bc7\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Romantic Mirzakhani\",\"description\":\"Innovation in Interaction with Langflow.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:52:52.622698\",\"folder\":null,\"id\":\"0d849403-0f75-455d-b4e4-0d622ee3305a\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Grinning Brown\",\"description\":\"Building Powerful Solutions with Language Models.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:53:06.056636\",\"folder\":null,\"id\":\"8643ba14-52d6-4d36-9981-5fd37de5dd76\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Kickass Watt\",\"description\":\"Transform Your Business with Smart Dialogues.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:53:23.338727\",\"folder\":null,\"id\":\"818d3066-bf08-4bf9-adcd-739f8abbfa5d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Goofy Bose\",\"description\":\"Unravel the Art of Articulation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:53:41.218861\",\"folder\":null,\"id\":\"28eff43e-0ecf-47bf-9851-f1492589978e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Optimistic Jennings\",\"description\":\"Create Powerful Connections, Boost Business Value.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:55:03.681106\",\"folder\":null,\"id\":\"68f59069-bc2a-464f-a983-4b61e32e01af\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Pedantic Mirzakhani\",\"description\":\"Language Chainlink Master.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:55:31.761949\",\"folder\":null,\"id\":\"5d981c0e-81b3-44cc-a5be-8f55b92bfed5\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Peppy Murdock\",\"description\":\"Create Powerful Connections, Boost Business Value.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:56:45.548598\",\"folder\":null,\"id\":\"e812ad47-47e8-422b-b94c-84fd0263c9c8\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Berserk Fermat\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:58:50.234270\",\"folder\":null,\"id\":\"82aaf449-e737-4699-9360-929ab6108dc7\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Tiny Albattani\",\"description\":\"Your Toolkit for Text Generation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:59:53.946035\",\"folder\":null,\"id\":\"097cb080-274b-40ca-8dde-7900a949568a\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cranky Kirch\",\"description\":\"Sculpting Language with Precision.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:00:51.745350\",\"folder\":null,\"id\":\"837d7b5f-8495-46a9-b00e-ad1b7ebb52f4\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Effervescent Kowalevski\",\"description\":\"Empowering Language Engineering.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:02:53.336102\",\"folder\":null,\"id\":\"3ff079c2-d9f9-4da6-a22a-423fa35670ff\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Radiant Stallman\",\"description\":\"Navigate the Linguistic Landscape, Discover Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:03:28.268357\",\"folder\":null,\"id\":\"c8b204dd-3d57-4bc8-aa13-1d559672e75b\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Grinning Swirles\",\"description\":\"Unleashing Linguistic Creativity.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:03:51.194455\",\"folder\":null,\"id\":\"a097f083-5880-4cf7-986b-51898bc68e11\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Dreamy Williams\",\"description\":\"Interactive Language Weaving.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:04:36.678251\",\"folder\":null,\"id\":\"d9585f63-ce76-42ce-87bc-8e69601ea5c6\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Zany Hawking\",\"description\":\"Flow into the Future of Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:05:13.672479\",\"folder\":null,\"id\":\"612a01d5-8c8d-4cc1-8c54-35626b7f4a6d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Amazing Kilby\",\"description\":\"Your Toolkit for Text Generation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:10:37.047955\",\"folder\":null,\"id\":\"2d05a598-3cdf-452a-bd5d-b0e569e562e3\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Insane Cori\",\"description\":\"Empowering Communication, Enabling Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:18:12.426578\",\"folder\":null,\"id\":\"d1769a4a-c1e9-4d74-9273-1e76cfcf21f3\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Compassionate Tesla\",\"description\":\"Graph Your Way to Great Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:18:52.806238\",\"folder\":null,\"id\":\"28c5d9dd-0466-4c80-9e58-b1e061cd358d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Jubilant Goldstine\",\"description\":\"Harness the Power of Conversational AI.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:21:44.488510\",\"folder\":null,\"id\":\"b3c57e4f-28a1-4580-bf08-a9484bdd66e8\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Elegant Curie\",\"description\":\"Building Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:23:47.610237\",\"folder\":null,\"id\":\"28fb024e-6ba1-4f5b-83b3-4742b3b8117c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Twinkly Chandrasekhar\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:24:29.824530\",\"folder\":null,\"id\":\"d2b87cf7-9167-4030-8e9f-b8d9aa0cadee\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Pensive Nobel\",\"description\":\"Crafting Dialogues that Drive Business Success.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:26:51.210699\",\"folder\":null,\"id\":\"c2c9fbac-7d97-40c2-8055-dff608df9414\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Elated Edison\",\"description\":\"Advanced NLP for Groundbreaking Business Solutions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:27:35.822482\",\"folder\":null,\"id\":\"a55561cd-4b25-473f-bde5-884cbabb0d24\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Dazzling Lichterman\",\"description\":\"Building Linguistic Labyrinths.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:29:09.259381\",\"folder\":null,\"id\":\"9c6fe6d4-8311-4fc6-8b02-2a816d7c059d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Distracted Bhaskara\",\"description\":\"Navigate the Networks of Conversation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:31:36.053452\",\"folder\":null,\"id\":\"ef6fc1ab-aff8-45a1-8cd5-bc8e38565e4d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Evil Watt\",\"description\":\"Building Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:32:26.765250\",\"folder\":null,\"id\":\"499b5351-9c09-4934-9f9d-a24be2fd8b24\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Jolly Wien\",\"description\":\"Bridging Prompts for Brilliance.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:33:23.648859\",\"folder\":null,\"id\":\"a57eda91-7f6e-410d-9990-385fe0c724f3\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Nostalgic Spence\",\"description\":\"Mapping Meaningful Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:34:22.576407\",\"folder\":null,\"id\":\"685f685e-8a1b-4b7e-9e21-6cdd72163c91\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Comical Fermat\",\"description\":\"Create, Connect, Converse.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:35:44.920540\",\"folder\":null,\"id\":\"3e061766-b834-4fa4-ba9c-b060925d9703\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Grave Volta\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:36:33.001572\",\"folder\":null,\"id\":\"135f2fd9-e005-40bc-a9bf-c25107388415\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gleeful Davinci\",\"description\":\"Create Powerful Connections, Boost Business Value.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:37:16.208823\",\"folder\":null,\"id\":\"167cdb24-7e1c-475b-893a-cca2f125426c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Hilarious Sinoussi\",\"description\":\"Language Chainlink Master.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:38:07.215401\",\"folder\":null,\"id\":\"48113cab-2c04-493f-8c2e-c8d067826aa2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Grave Sagan\",\"description\":\"Connect the Dots, Craft Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:39:19.479656\",\"folder\":null,\"id\":\"28d292dc-e094-4ffe-a657-178892933267\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cranky Hoover\",\"description\":\"Crafting Dialogues that Drive Business Success.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:40:02.895859\",\"folder\":null,\"id\":\"0c9849b7-b2d6-4d0e-8334-abfb3ae183dd\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Evil Mendeleev\",\"description\":\"Unfolding Linguistic Possibilities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:40:27.867247\",\"folder\":null,\"id\":\"d78c52e9-1941-4555-9bb9-abd01f176705\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Effervescent Dubinsky\",\"description\":\"Where Language Meets Logic.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:41:23.177402\",\"folder\":null,\"id\":\"5277a04c-b5da-4597-aaa2-a6b66ea11d02\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cocky Poitras\",\"description\":\"Where Language Meets Logic.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:42:08.731865\",\"folder\":null,\"id\":\"b0d0c8de-4eea-484a-a068-b13e63f7e71c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Pedantic Ptolemy\",\"description\":\"Crafting Conversations, One Node at a Time.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:42:25.658996\",\"folder\":null,\"id\":\"b6f155e2-03eb-4232-9bab-145463382fe9\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Loving Cray\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:43:57.530112\",\"folder\":null,\"id\":\"b75c10ca-9ecb-432b-88ab-e1847e836e22\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Effervescent Pasteur\",\"description\":\"Language Models, Mapped and Mastered.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:44:58.979393\",\"folder\":null,\"id\":\"3710eccb-e7a7-41d5-9339-d9c301515d17\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Pensive Gates\",\"description\":\"The Power of Language at Your Fingertips.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:45:42.744174\",\"folder\":null,\"id\":\"fdd2271e-92f6-4349-8c01-2ec0e9e73f13\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Determined Khorana\",\"description\":\"Beyond Text Generation - Unleashing Business Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:46:10.084684\",\"folder\":null,\"id\":\"88b49a97-0888-4fea-8d9b-6ac2cc6d158e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lonely Booth\",\"description\":\"Design Dialogues with Langflow.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:46:41.577750\",\"folder\":null,\"id\":\"629afe54-8796-45be-a570-e3ac79c60792\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Jubilant Mendeleev\",\"description\":\"Chain the Words, Master Language!\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:47:22.631243\",\"folder\":null,\"id\":\"7bf481b0-73fe-4f5b-a3d4-1263d9d8e827\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Clever Varahamihira\",\"description\":\"Building Powerful Solutions with Language Models.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:49:51.026960\",\"folder\":null,\"id\":\"df9e86b6-56c9-4848-9010-102615314766\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sleepy Stallman\",\"description\":\"Empowering Language Engineering.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:50:14.932236\",\"folder\":null,\"id\":\"3e66994c-9b7a-4b85-a917-65d1959d7352\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Modest Wozniak\",\"description\":\"Advanced NLP for Groundbreaking Business Solutions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:51:13.811894\",\"folder\":null,\"id\":\"d10f924a-5780-4255-9f41-3e102ae03e84\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Hopeful Mirzakhani\",\"description\":\"Graph Your Way to Great Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:52:23.906908\",\"folder\":null,\"id\":\"f3378fa8-ccaf-4a3b-90d6-b8ab0c4e481f\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Awesome Joule\",\"description\":\"Design, Develop, Dialogize.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:52:43.863440\",\"folder\":null,\"id\":\"deaa50e7-a8b1-46b1-856c-334ee781e1c2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Peppy Shockley\",\"description\":\"Generate, Innovate, Communicate.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:53:43.299699\",\"folder\":null,\"id\":\"c72eac2c-d924-40c6-a102-da524216d090\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Zany Dewey\",\"description\":\"Flow into the Future of Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:54:18.848827\",\"folder\":null,\"id\":\"d9425324-bb60-462e-b431-90a536f2bc76\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gloomy Joliot\",\"description\":\"Language Engineering Excellence.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:58:12.348608\",\"folder\":null,\"id\":\"621ba134-3fac-487c-98cd-96941439f1be\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Backstabbing Franklin\",\"description\":\"Craft Language Connections Here.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:58:13.491824\",\"folder\":null,\"id\":\"86ca9773-c7b7-4a1a-859a-6cbe0ddff206\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sharp Swartz\",\"description\":\"Beyond Text Generation - Unleashing Business Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:58:13.524414\",\"folder\":null,\"id\":\"da1c02b7-d608-4498-9946-7d02f55fa103\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Serene Volta\",\"description\":\"Connect the Dots, Craft Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:58:13.641432\",\"folder\":null,\"id\":\"8d5dd998-6b51-4f65-8331-086a7f3b11d7\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Focused Lichterman\",\"description\":\"Crafting Dialogues that Drive Business Success.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:58:13.746120\",\"folder\":null,\"id\":\"942027d3-e2ea-48c6-8279-0a41b54e8862\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lively Einstein\",\"description\":\"Unleashing Linguistic Creativity.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:58:13.746904\",\"folder\":null,\"id\":\"9e9b6298-1073-4297-8ecc-3c620b432e70\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cocky Planck\",\"description\":\"Empowering Language Engineering.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:58:13.747420\",\"folder\":null,\"id\":\"7cd60c83-b797-4e60-af6d-cbc540657943\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Suspicious Zobell\",\"description\":\"Innovation in Interaction, Revolution in Revenue.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:58:13.749951\",\"folder\":null,\"id\":\"dab08306-9521-4e15-aa11-e6a6a4e210f8\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Small Knuth\",\"description\":\"Nurture NLP Nodes Here.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:16.772119\",\"folder\":null,\"id\":\"c9149590-636a-44f5-aaae-45a4e78fe4df\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Evil Wright\",\"description\":\"Unfolding Linguistic Possibilities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:52.954568\",\"folder\":null,\"id\":\"6b23b2ad-c07c-46f6-b9ad-268783d1712e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Vibrant Lalande\",\"description\":\"Language Models, Mapped and Mastered.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:53.656156\",\"folder\":null,\"id\":\"ece3bcf6-a147-4559-862e-cacff9db5f48\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Happy Gauss\",\"description\":\"The Pinnacle of Prompt Generation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:53.717991\",\"folder\":null,\"id\":\"252b6021-ecad-4eaf-9e2f-106c4c89c496\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gigantic Rosalind\",\"description\":\"Building Powerful Solutions with Language Models.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:53.736261\",\"folder\":null,\"id\":\"b8cb6d8d-c0fb-4e8d-a46e-2c608dc8a714\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Adoring Hubble\",\"description\":\"Powerful Prompts, Perfectly Positioned.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:53.769546\",\"folder\":null,\"id\":\"553a67db-7225-474c-978e-8a40cde2bfb2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Pensive Mclean\",\"description\":\"Unlock the Power of AI in Your Business Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:53.981063\",\"folder\":null,\"id\":\"e0865007-4d80-4edf-87ab-9e8d2892d719\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Trusting Murdock\",\"description\":\"Uncover Business Opportunities with NLP.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:53.982286\",\"folder\":null,\"id\":\"1021cd20-66e0-4b81-9c79-bfe729774d20\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Perky Riemann\",\"description\":\"Powerful Prompts, Perfectly Positioned.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:53.983216\",\"folder\":null,\"id\":\"089074d3-8a1e-4d85-a59d-b4717090e4d3\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Small Tesla\",\"description\":\"Language Models, Unleashed.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:00:35.704142\",\"folder\":null,\"id\":\"beb49d88-255e-4db4-931b-4ab4358f1097\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Effervescent Boyd\",\"description\":\"Smart Chains, Smarter Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:01:13.569507\",\"folder\":null,\"id\":\"75b5ab8d-e0c0-43cf-912b-8578550e198a\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Small Babbage\",\"description\":\"Interactive Language Weaving.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:01:27.944868\",\"folder\":null,\"id\":\"503edd55-8f70-43e5-87fb-2324eaf62336\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lonely Bose\",\"description\":\"Crafting Dialogues that Drive Business Success.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:02:40.122079\",\"folder\":null,\"id\":\"ae4f2992-1a23-4a43-bec6-68b823935762\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Mirthful Coulomb\",\"description\":\"Craft Meaningful Interactions, Generate Value.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:03:15.263237\",\"folder\":null,\"id\":\"a2a464db-b02a-4440-ad9e-7b552ee6c027\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Drunk Newton\",\"description\":\"Craft Meaningful Interactions, Generate Value.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:03:15.883766\",\"folder\":null,\"id\":\"1a5d9af7-5a96-4035-a09c-e15741785828\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Jovial Pasteur\",\"description\":\"Your Hub for Text Generation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:03:15.933083\",\"folder\":null,\"id\":\"04b94873-0828-41dc-a850-fd4132c9b9f1\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Playful Spence\",\"description\":\"Connect the Dots, Craft Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:03:15.967685\",\"folder\":null,\"id\":\"47003dc2-7884-48a3-aa66-e4185079f4d9\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cheerful Noyce\",\"description\":\"Your Passport to Linguistic Landscapes.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:03:15.983198\",\"folder\":null,\"id\":\"13769cb4-2e15-4d54-a28a-c97dc15db58c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Awesome Edison\",\"description\":\"Unfolding Linguistic Possibilities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:03:16.018879\",\"folder\":null,\"id\":\"453dacde-6b10-406b-a5b3-f90f44be6899\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Upbeat Snyder\",\"description\":\"Powerful Prompts, Perfectly Positioned.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:03:16.205689\",\"folder\":null,\"id\":\"9544fac9-3002-47aa-86b9-102844fe9649\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Tender Khorana\",\"description\":\"Chain the Words, Master Language!\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:03:16.243434\",\"folder\":null,\"id\":\"90498ef6-34f9-45c8-8cd0-fe6a36a26f41\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Elated Albattani\",\"description\":\"Interactive Language Weaving.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:05:07.775497\",\"folder\":null,\"id\":\"9577c416-8ce8-48f6-ad6d-ab2e003bb415\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Charming Goodall\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:07:52.139318\",\"folder\":null,\"id\":\"f10dc08e-b9c7-44b3-8837-b95aee2f6dbb\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Hilarious Ramanujan\",\"description\":\"Harness the Power of Conversational AI.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:08:22.448480\",\"folder\":null,\"id\":\"c864bd8c-67cd-465f-bf7d-7a35c7df37f3\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Tender Mclean\",\"description\":\"Unleashing Linguistic Creativity.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:09:56.507826\",\"folder\":null,\"id\":\"f0c13b19-ae23-40e6-88d6-d135897ee100\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Grave Hawking\",\"description\":\"Building Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:10:27.169757\",\"folder\":null,\"id\":\"0afb91b4-8f41-4270-900a-f5de647d45ad\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gloomy Lovelace\",\"description\":\"Your Passport to Linguistic Landscapes.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:11:02.292233\",\"folder\":null,\"id\":\"0f1e5dcf-8769-4157-b495-5f215b490107\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Fervent Kilby\",\"description\":\"Empowering Enterprises with Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:11:46.960966\",\"folder\":null,\"id\":\"310d03d9-dd50-4946-9a27-38ee06906212\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Admiring Almeida\",\"description\":\"Language Models, Mapped and Mastered.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:12:24.475101\",\"folder\":null,\"id\":\"3cbc8fc2-a86f-4177-9a1c-a833b2a24283\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Elated Roentgen\",\"description\":\"Empowering Enterprises with Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:06.753571\",\"folder\":null,\"id\":\"c508e922-29e9-4234-84ae-505c5bdf41c1\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Perky Poitras\",\"description\":\"Chain the Words, Master Language!\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:07.754605\",\"folder\":null,\"id\":\"1431df05-1b6f-41af-a063-a18d26a946ef\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Tender Khayyam\",\"description\":\"Navigate the Linguistic Landscape, Discover Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:07.791627\",\"folder\":null,\"id\":\"344e03fb-fd49-4e87-be67-7dce04ba655b\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Zealous Mayer\",\"description\":\"Navigate the Linguistic Landscape, Discover Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:07.803889\",\"folder\":null,\"id\":\"8b3ff1cb-3a6c-46ee-b09a-0e9f9f13a8b9\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Tiny Ramanujan\",\"description\":\"Empowering Communication, Enabling Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:07.822583\",\"folder\":null,\"id\":\"18961e76-f4b1-4968-926a-fed22cb04f69\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cheerful Franklin\",\"description\":\"Building Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:07.854440\",\"folder\":null,\"id\":\"0e0ee854-ab46-4333-a848-2e1239a24334\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Serene Swirles\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:07.988932\",\"folder\":null,\"id\":\"cc7b8238-3d15-4f78-bd0c-8311691c9ff8\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sleepy Swartz\",\"description\":\"Uncover Business Opportunities with NLP.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:08.028688\",\"folder\":null,\"id\":\"123369f9-c83c-4ed3-93b6-78ca29c271cf\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cranky Kowalevski\",\"description\":\"Unleashing Linguistic Creativity.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:59.097607\",\"folder\":null,\"id\":\"ed4b1490-e9e5-46bf-b337-166b48eaadd6\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sprightly Golick\",\"description\":\"Building Powerful Solutions with Language Models.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:59.617772\",\"folder\":null,\"id\":\"9d1be311-c618-4e3e-aeb1-4161ab37850e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Boring Newton\",\"description\":\"Generate, Innovate, Communicate.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:59.646124\",\"folder\":null,\"id\":\"63a75f99-1745-40d3-9e27-3d19a143be45\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sprightly Noyce\",\"description\":\"Beyond Text Generation - Unleashing Business Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:59.685781\",\"folder\":null,\"id\":\"b418ca87-eb17-42e8-b789-3fcb0cab3ddb\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Fluffy Fermat\",\"description\":\"Text Generation Meets Business Transformation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:59.705984\",\"folder\":null,\"id\":\"93802b07-eee9-4a2b-8691-7d9a231bd67e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Stoic Payne\",\"description\":\"Beyond Text Generation - Unleashing Business Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:59.723990\",\"folder\":null,\"id\":\"d62df661-0ae5-4b41-a9fb-71cb2e46ad52\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Effervescent Darwin\",\"description\":\"Unleashing Linguistic Creativity.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:59.818343\",\"folder\":null,\"id\":\"d1f62248-415c-474a-bfa6-3509a528a33b\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Focused Thompson\",\"description\":\"Transform Your Business with Smart Dialogues.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:59.925999\",\"folder\":null,\"id\":\"d2267176-f020-4c52-90a4-7f944d7c1749\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Admiring Dewey\",\"description\":\"Navigate the Networks of Conversation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:15:07.400402\",\"folder\":null,\"id\":\"8cf1ac8d-d34d-4e8a-a9da-be44672e1dfb\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Prickly Zuse\",\"description\":\"Where Language Meets Logic.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:15:08.384611\",\"folder\":null,\"id\":\"bae3cb5b-0f1b-4e95-bf58-7eab38da3d73\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Hungry Zuse\",\"description\":\"The Pinnacle of Prompt Generation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:15:08.436591\",\"folder\":null,\"id\":\"4dfafe3e-e9ef-405d-be72-550084411d69\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lonely Khayyam\",\"description\":\"Design Dialogues with Langflow.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:15:08.435958\",\"folder\":null,\"id\":\"e0f81215-dc55-4b5a-b8cf-6e2fcbf297a7\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Big Mendel\",\"description\":\"Innovation in Interaction with Langflow.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:15:08.470080\",\"folder\":null,\"id\":\"5022a71c-da47-4975-a4d0-6d2d9e760d3d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Inquisitive Poitras\",\"description\":\"Navigate the Networks of Conversation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:15:08.484430\",\"folder\":null,\"id\":\"4f1ff9e3-3500-404c-80af-2010bc46cdcb\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Joyous Jones\",\"description\":\"The Power of Language at Your Fingertips.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:15:08.661306\",\"folder\":null,\"id\":\"77af3e47-c2cc-42f6-99e1-78589439a447\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Exuberant Khayyam\",\"description\":\"Empowering Communication, Enabling Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:15:08.662877\",\"folder\":null,\"id\":\"6f3e2e56-b329-47e3-86cc-024c29203016\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Dazzling Visvesvaraya\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:16:10.092917\",\"folder\":null,\"id\":\"449ac0ee-ee29-4a9f-9aff-fd6a86624457\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Nostalgic Tesla\",\"description\":\"Nurture NLP Nodes Here.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:16:10.630382\",\"folder\":null,\"id\":\"a2136ed3-dc75-4a8f-ab34-6887ff955b23\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Goofy Noether\",\"description\":\"Language Models, Unleashed.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:16:10.652058\",\"folder\":null,\"id\":\"fd1080f8-db07-481a-b2ba-60f67fcb20a6\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Dazzling Pasteur\",\"description\":\"Language Models, Unleashed.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:16:10.688661\",\"folder\":null,\"id\":\"d534d5e1-92aa-4fb2-a795-7071c4feba47\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Comical Sinoussi\",\"description\":\"Bridging Prompts for Brilliance.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:16:10.741385\",\"folder\":null,\"id\":\"85323170-c066-4d8f-acb0-1b142241389e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Small Ramanujan\",\"description\":\"Uncover Business Opportunities with NLP.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:16:10.790086\",\"folder\":null,\"id\":\"b0d18432-21ab-404b-acb6-57ef97353fad\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sick Joliot\",\"description\":\"Text Generation Meets Business Transformation.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":442,\"id\":\"OpenAIEmbeddings-rVj1B\",\"type\":\"genericNode\",\"position\":{\"x\":-100.23754663035719,\"y\":-718.7575880388187},\"data\":{\"type\":\"OpenAIEmbeddings\",\"node\":{\"template\":{\"allowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[],\"password\":false,\"name\":\"allowed_special\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"chunk_size\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":1000,\"password\":false,\"name\":\"chunk_size\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"deployment\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"text-embedding-ada-002\",\"password\":false,\"name\":\"deployment\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"disallowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"all\",\"password\":false,\"name\":\"disallowed_special\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"embedding_ctx_length\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":8191,\"password\":false,\"name\":\"embedding_ctx_length\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"{\\\"Authorization\\\": \\\"Bearer \\\"}\",\"password\":false,\"name\":\"headers\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"model\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"text-embedding-ada-002\",\"password\":false,\"name\":\"model\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_api_type\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_type\",\"display_name\":\"OpenAI API Type\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_api_version\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_version\",\"display_name\":\"OpenAI API Version\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"show_progress_bar\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"show_progress_bar\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"skip_empty\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"skip_empty\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tiktoken_enabled\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":true,\"password\":true,\"name\":\"tiktoken_enabled\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"_type\":\"OpenAIEmbeddings\"},\"description\":\"OpenAI embedding models.\",\"base_classes\":[\"OpenAIEmbeddings\",\"Embeddings\"],\"display_name\":\"OpenAIEmbeddings\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"OpenAIEmbeddings-rVj1B\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":-100.23754663035719,\"y\":-718.7575880388187}}],\"edges\":[],\"viewport\":{\"x\":267.7156633365312,\"y\":716.9644817529361,\"zoom\":0.7169776240079139}},\"is_component\":false,\"updated_at\":\"2023-12-08T18:52:26.999440\",\"folder\":null,\"id\":\"be39958a-ef42-4fa8-8e54-b611e56b5c97\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Graceful Lumiere\",\"description\":\"Conversational Cartography Unlocked.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:16:11.012069\",\"folder\":null,\"id\":\"f7dcecfd-533c-4f40-9dcb-f213962ed1a2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"aaaaa\",\"description\":\"Text Generation Meets Business Transformation.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":442,\"id\":\"OpenAIEmbeddings-P6Z0D\",\"type\":\"genericNode\",\"position\":{\"x\":-100.23754663035719,\"y\":-718.7575880388187},\"data\":{\"type\":\"OpenAIEmbeddings\",\"node\":{\"template\":{\"allowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[],\"password\":false,\"name\":\"allowed_special\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"chunk_size\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":1000,\"password\":false,\"name\":\"chunk_size\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"deployment\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"text-embedding-ada-002\",\"password\":false,\"name\":\"deployment\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"disallowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"all\",\"password\":false,\"name\":\"disallowed_special\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"embedding_ctx_length\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":8191,\"password\":false,\"name\":\"embedding_ctx_length\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"{\\\"Authorization\\\": \\\"Bearer \\\"}\",\"password\":false,\"name\":\"headers\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"model\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"text-embedding-ada-002\",\"password\":false,\"name\":\"model\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_api_type\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_type\",\"display_name\":\"OpenAI API Type\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"openai_api_version\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_version\",\"display_name\":\"OpenAI API Version\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"show_progress_bar\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"show_progress_bar\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"skip_empty\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"skip_empty\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tiktoken_enabled\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":true,\"password\":true,\"name\":\"tiktoken_enabled\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"_type\":\"OpenAIEmbeddings\"},\"description\":\"OpenAI embedding models.\",\"base_classes\":[\"OpenAIEmbeddings\",\"Embeddings\"],\"display_name\":\"OpenAIEmbeddings\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"OpenAIEmbeddings-P6Z0D\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":-100.23754663035719,\"y\":-718.7575880388187}}],\"edges\":[],\"viewport\":{\"x\":266.7156633365312,\"y\":657.9644817529361,\"zoom\":0.7169776240079139}},\"is_component\":false,\"updated_at\":\"2023-12-08T19:05:14.503144\",\"folder\":null,\"id\":\"c2411a20-57c6-44cc-a0d0-2c857453633d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lively Aryabhata\",\"description\":\"Design, Develop, Dialogize.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":459,\"id\":\"CustomComponent-Qhbd7\",\"type\":\"genericNode\",\"position\":{\"x\":-224.36198532285903,\"y\":-39.03047722134913},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nfrom openai import OpenAI\\n\\n\\nclass Component(CustomComponent):\\n display_name: str = \\\"OpenAI STT english translator\\\"\\n description: str = \\\"Transcript and translate any audio to english\\\"\\n documentation: str = \\\"http://docs.langflow.org/components/custom\\\"\\n\\n def build_config(self):\\n return {\\\"audio_path\\\":{\\\"display_name\\\":\\\"Audio path\\\",\\\"input_types\\\":[\\\"str\\\"]},\\\"openAI_key\\\":{\\\"display_name\\\":\\\"OpenAI key\\\",\\\"password\\\":True}}\\n\\n def build(self,audio_path:str,openAI_key:str) -> str:\\n client = OpenAI(api_key=openAI_key)\\n audio_file= open(audio_path, \\\"rb\\\")\\n transcript = client.audio.translations.create(\\n model=\\\"whisper-1\\\", \\n file=audio_file\\n )\\n self.status = transcript.text\\n return transcript.text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"audio_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"audio_path\",\"display_name\":\"Audio path\",\"advanced\":false,\"input_types\":[\"str\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"aaaaa\"},\"openAI_key\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openAI_key\",\"display_name\":\"OpenAI key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"}},\"description\":\"Transcript and translate any audio to english\",\"base_classes\":[\"str\"],\"display_name\":\"OpenAI STT english tra\",\"custom_fields\":{\"audio_path\":null,\"openAI_key\":null},\"output_types\":[\"str\"],\"documentation\":\"http://docs.langflow.org/components/custom\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"CustomComponent-Qhbd7\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":-224.36198532285903,\"y\":-39.03047722134913}}],\"edges\":[],\"viewport\":{\"x\":433.8372868055629,\"y\":250.9611989970935,\"zoom\":0.8467453123625275}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:16:56.971879\",\"folder\":null,\"id\":\"122eee5d-9734-4e51-9da5-b39bead64a8d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Goofy Wing\",\"description\":\"Your Toolkit for Text Generation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:18:23.227017\",\"folder\":null,\"id\":\"171d0063-6446-4c6a-8f5b-786a38951d44\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Mad Boyd\",\"description\":\"Empowering Language Engineering.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:18:24.063781\",\"folder\":null,\"id\":\"3a7af50c-6555-4004-a86e-1ea37e477900\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Boring Dewey\",\"description\":\"Unleashing Linguistic Creativity.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:18:24.065404\",\"folder\":null,\"id\":\"dc4b4235-a550-41e2-9ddb-bcb352a1bc03\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Nauseous Carroll\",\"description\":\"Navigate the Networks of Conversation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:18:24.087501\",\"folder\":null,\"id\":\"9550e2bf-db7a-41f5-84e5-177a181bbeda\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Silly Engelbart\",\"description\":\"Generate, Innovate, Communicate.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:18:24.112543\",\"folder\":null,\"id\":\"6a3a24bb-01cb-4d8e-8d17-0dc92d257322\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sassy Khayyam\",\"description\":\"Innovation in Interaction, Revolution in Revenue.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:18:24.147631\",\"folder\":null,\"id\":\"8d372f5e-ca12-4ea8-a1a1-8846afa72692\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Mirthful Bell\",\"description\":\"Connect the Dots, Craft Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:18:24.212921\",\"folder\":null,\"id\":\"800f8785-0f41-4db3-aef8-9e3de5250526\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sleepy Bassi\",\"description\":\"Unleashing Business Potential through Language Engineering.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:18:24.395729\",\"folder\":null,\"id\":\"4589607a-065b-4a8f-ba52-5045d7b04086\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lonely Volhard\",\"description\":\"Where Language Meets Logic.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:20:33.263971\",\"folder\":null,\"id\":\"b2440ed8-44fa-4684-adf7-b5e84bff6577\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Ecstatic Poincare\",\"description\":\"Your Passport to Linguistic Landscapes.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:20:33.377270\",\"folder\":null,\"id\":\"b996f514-e0b8-432f-969b-7276630a8f4b\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Grave Zuse\",\"description\":\"Text Generation Meets Business Transformation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:20:33.406385\",\"folder\":null,\"id\":\"6e2e9c12-0afc-499e-acdd-adf4b5f7d4fc\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Big Hopper\",\"description\":\"Conversation Catalyst Engine.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:20:33.413014\",\"folder\":null,\"id\":\"e020f1a5-aa12-45e7-ba50-6eb64a735e60\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gleeful Jang\",\"description\":\"Conversation Catalyst Engine.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:20:33.433045\",\"folder\":null,\"id\":\"ee58f892-b7b2-408e-b4b9-9d862fc315aa\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Twinkly Ohm\",\"description\":\"Promptly Ingenious!\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:20:33.403404\",\"folder\":null,\"id\":\"023a1fc3-8807-4167-b6b2-f4e5daf036f1\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Distracted Degrasse\",\"description\":\"Bridging Prompts for Brilliance.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:20:33.411655\",\"folder\":null,\"id\":\"085f106f-c1e9-4a0f-ba31-d2fafe685d9c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Exuberant Volta\",\"description\":\"Catalyzing Business Growth through Conversational AI.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:20:33.408697\",\"folder\":null,\"id\":\"14481bb5-1353-452f-9359-d38c9419d79c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Goofy Bose\",\"description\":\"Conversational Cartography Unlocked.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:22:21.774940\",\"folder\":null,\"id\":\"e9316292-4ee1-441b-8327-0b09a7831fe9\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Thirsty Easley\",\"description\":\"Language Models, Mapped and Mastered.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:22:22.416556\",\"folder\":null,\"id\":\"668806ba-3efa-44de-aeb7-4ac082ba9172\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Joyous Mestorf\",\"description\":\"Generate, Innovate, Communicate.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:22:22.484048\",\"folder\":null,\"id\":\"3fc0a371-aada-4450-9d17-33d3cc05c870\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Playful Franklin\",\"description\":\"Empowering Language Engineering.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:22:22.509095\",\"folder\":null,\"id\":\"af967c98-5f08-4ee2-b1ce-6c16b4f9ebe2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Goofy Bhaskara\",\"description\":\"Empowering Enterprises with Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:22:22.508465\",\"folder\":null,\"id\":\"758c4164-b521-45d0-a15f-d49480e312eb\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Funky Edison\",\"description\":\"Unravel the Art of Articulation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:22:22.602296\",\"folder\":null,\"id\":\"f9d3d30f-8859-433f-bafc-ccf1a7196e35\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Silly Ride\",\"description\":\"Unfolding Linguistic Possibilities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:22:22.604061\",\"folder\":null,\"id\":\"0142bca5-eb61-42ed-9917-70c4c0f54eb0\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Goofy Noyce\",\"description\":\"Text Generation Meets Business Transformation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:22:22.603113\",\"folder\":null,\"id\":\"0b63d036-4669-4ceb-8ea4-34035340df77\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cocky Bhabha\",\"description\":\"Language Engineering Excellence.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:23:07.345767\",\"folder\":null,\"id\":\"8b9a66d4-a924-4b84-a2b5-5dd0645ac07a\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Thirsty Zobell\",\"description\":\"Unleashing Business Potential through Language Engineering.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:23:07.722319\",\"folder\":null,\"id\":\"c912fd6b-b32d-409f-a0e5-c6249b066429\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Fervent Shaw\",\"description\":\"Language Architect at Work!\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:23:07.750779\",\"folder\":null,\"id\":\"9d755cd4-c652-43e0-a68d-75a5475ce7a3\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Giggly Newton\",\"description\":\"Navigate the Linguistic Landscape, Discover Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:23:07.786602\",\"folder\":null,\"id\":\"0d3af7de-1ada-4c43-a69f-1bfad370ccfc\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Modest Yalow\",\"description\":\"Text Generation Meets Business Transformation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:23:07.792245\",\"folder\":null,\"id\":\"b6444376-4162-436b-8b40-f5a6afc850db\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sad Bhabha\",\"description\":\"Empowering Enterprises with Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:23:07.890349\",\"folder\":null,\"id\":\"d90af439-fb34-4d27-98f2-06f7f9a9ed8c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Spirited Hoover\",\"description\":\"The Pinnacle of Prompt Generation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:23:07.905750\",\"folder\":null,\"id\":\"31597ce2-de3c-490b-9ead-3f702f63cfd9\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Trusting Davinci\",\"description\":\"Design, Develop, Dialogize.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:23:08.001400\",\"folder\":null,\"id\":\"b43c63e9-a257-4a53-8acc-049e13706ac2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"23\",\"description\":\"23\",\"data\":{\"nodes\":[{\"width\":384,\"height\":467,\"id\":\"PromptTemplate-K7xiS\",\"type\":\"genericNode\",\"position\":{\"x\":-658.2250903773149,\"y\":809.352046606987},\"data\":{\"type\":\"PromptTemplate\",\"node\":{\"template\":{\"output_parser\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false},\"input_types\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"input_variables\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"dasdas\",\"dasdasd\"]},\"partial_variables\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"template\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"prompt\",\"list\":false,\"value\":\"{dasdas}\\n{dasdasd}\\n\"},\"template_format\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"f-string\",\"password\":false,\"name\":\"template_format\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":false},\"validate_template\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"PromptTemplate\",\"dasdas\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"dasdas\",\"display_name\":\"dasdas\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"dasdasd\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"dasdasd\",\"display_name\":\"dasdasd\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"A prompt template for a language model.\",\"base_classes\":[\"PromptTemplate\",\"BasePromptTemplate\",\"StringPromptTemplate\"],\"name\":\"\",\"display_name\":\"PromptTemplate\",\"documentation\":\"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\"custom_fields\":{\"\":[\"dasdas\",\"dasdasd\"]},\"output_types\":[],\"full_path\":null,\"field_formatters\":{},\"beta\":false,\"error\":null},\"id\":\"PromptTemplate-K7xiS\"},\"selected\":false,\"positionAbsolute\":{\"x\":-658.2250903773149,\"y\":809.352046606987},\"dragging\":false},{\"width\":384,\"height\":366,\"id\":\"AirbyteJSONLoader-DXfcM\",\"type\":\"genericNode\",\"position\":{\"x\":-1110.8267574563533,\"y\":569.1107380883907},\"data\":{\"type\":\"AirbyteJSONLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"suffixes\":[\".json\"],\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\"json\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"\":\"\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"AirbyteJSONLoader\"},\"description\":\"Load local `Airbyte` json files.\",\"base_classes\":[\"Document\"],\"display_name\":\"AirbyteJSONLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/airbyte_json\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"AirbyteJSONLoader-DXfcM\"},\"selected\":false,\"positionAbsolute\":{\"x\":-1110.8267574563533,\"y\":569.1107380883907},\"dragging\":false},{\"width\":384,\"height\":376,\"id\":\"PromptRunner-ckWMH\",\"type\":\"genericNode\",\"position\":{\"x\":-1149.4746387825978,\"y\":992.3970573758324},\"data\":{\"type\":\"PromptRunner\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\n\\nfrom langchain.llms.base import BaseLLM\\nfrom langchain.prompts import PromptTemplate\\nfrom langchain.schema import Document\\n\\n\\nclass PromptRunner(CustomComponent):\\n display_name: str = \\\"Prompt Runner\\\"\\n description: str = \\\"Run a Chain with the given PromptTemplate\\\"\\n beta: bool = True\\n field_config = {\\n \\\"llm\\\": {\\\"display_name\\\": \\\"LLM\\\"},\\n \\\"prompt\\\": {\\n \\\"display_name\\\": \\\"Prompt Template\\\",\\n \\\"info\\\": \\\"Make sure the prompt has all variables filled.\\\",\\n },\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(self, llm: BaseLLM, prompt: PromptTemplate, inputs: dict = {}) -> Document:\\n chain = prompt | llm\\n # The input is an empty dict because the prompt is already filled\\n result = chain.invoke(input=inputs)\\n if hasattr(result, \\\"content\\\"):\\n result = result.content\\n self.repr_value = result\\n return Document(page_content=str(result))\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"inputs\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"\":\"\"}],\"password\":false,\"name\":\"inputs\",\"display_name\":\"inputs\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLLM\",\"list\":false},\"prompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"prompt\",\"display_name\":\"Prompt Template\",\"advanced\":false,\"dynamic\":false,\"info\":\"Make sure the prompt has all variables filled.\",\"type\":\"PromptTemplate\",\"list\":false}},\"description\":\"Run a Chain with the given PromptTemplate\",\"base_classes\":[\"Document\"],\"display_name\":\"Prompt Runner\",\"custom_fields\":{\"inputs\":null,\"llm\":null,\"prompt\":null},\"output_types\":[\"PromptRunner\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"PromptRunner-ckWMH\"},\"selected\":false,\"positionAbsolute\":{\"x\":-1149.4746387825978,\"y\":992.3970573758324},\"dragging\":false}],\"edges\":[{\"source\":\"PromptRunner-ckWMH\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“Documentล“],ล“dataTypeล“:ล“PromptRunnerล“,ล“idล“:ล“PromptRunner-ckWMHล“}\",\"target\":\"PromptTemplate-K7xiS\",\"targetHandle\":\"{ล“fieldNameล“:ล“dasdasdล“,ล“idล“:ล“PromptTemplate-K7xiSล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"dasdasd\",\"id\":\"PromptTemplate-K7xiS\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"Document\"],\"dataType\":\"PromptRunner\",\"id\":\"PromptRunner-ckWMH\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-PromptRunner-ckWMH{ล“baseClassesล“:[ล“Documentล“],ล“dataTypeล“:ล“PromptRunnerล“,ล“idล“:ล“PromptRunner-ckWMHล“}-PromptTemplate-K7xiS{ล“fieldNameล“:ล“dasdasdล“,ล“idล“:ล“PromptTemplate-K7xiSล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\"},{\"source\":\"AirbyteJSONLoader-DXfcM\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“Documentล“],ล“dataTypeล“:ล“AirbyteJSONLoaderล“,ล“idล“:ล“AirbyteJSONLoader-DXfcMล“}\",\"target\":\"PromptTemplate-K7xiS\",\"targetHandle\":\"{ล“fieldNameล“:ล“dasdasล“,ล“idล“:ล“PromptTemplate-K7xiSล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"dasdas\",\"id\":\"PromptTemplate-K7xiS\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"Document\"],\"dataType\":\"AirbyteJSONLoader\",\"id\":\"AirbyteJSONLoader-DXfcM\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-AirbyteJSONLoader-DXfcM{ล“baseClassesล“:[ล“Documentล“],ล“dataTypeล“:ล“AirbyteJSONLoaderล“,ล“idล“:ล“AirbyteJSONLoader-DXfcMล“}-PromptTemplate-K7xiS{ล“fieldNameล“:ล“dasdasล“,ล“idล“:ล“PromptTemplate-K7xiSล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\"}],\"viewport\":{\"x\":721.09842496776,\"y\":-303.59762799439625,\"zoom\":0.6417129487814537}},\"is_component\":false,\"updated_at\":\"2023-12-08T22:52:14.560323\",\"folder\":null,\"id\":\"8533c46e-21fd-4b92-b68e-1086ea86c72d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Twinkly Stonebraker\",\"description\":\"Navigate the Linguistic Landscape, Discover Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-09T13:26:42.332360\",\"folder\":null,\"id\":\"92bc0875-4a73-44f2-9410-3b8342e404bf\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Metaphor Search (1)\",\"description\":\"Search in Metaphor with a custom string.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom typing import List, Union\\nfrom langchain.llms.base import BaseLLM\\nfrom langchain.chains import LLMChain\\nfrom langchain import PromptTemplate\\nfrom langchain.schema import Document\\nfrom metaphor_python import Metaphor\\nimport json\\n\\nfrom typing import List\\nfrom langflow.field_typing import Data\\n\\nclass MetaphorSearch(CustomComponent):\\n display_name: str = \\\"Metaphor Search\\\"\\n description: str = \\\"Search in Metaphor with a custom string.\\\"\\n beta = True\\n \\n def build_config(self):\\n return {\\n \\\"metaphor_client\\\": {\\\"display_name\\\": \\\"Metaphor Wrapper\\\"}, \\n \\\"search_num_results\\\": {\\\"display_name\\\": \\\"Number of Results (per domain)\\\"},\\n \\\"include_domains\\\": {\\\"display_name\\\": \\\"Include Domains\\\", \\\"is_list\\\": True},\\n \\\"start_date\\\": {\\\"display_name\\\": \\\"Start Date\\\"},\\n \\\"use_autoprompt\\\": {\\\"display_name\\\": \\\"Use Autoprompt\\\", \\\"type\\\": \\\"boolean\\\"},\\n \\\"search_type\\\": {\\\"display_name\\\": \\\"Search Type\\\", \\\"options\\\": [\\\"neural\\\", \\\"keyword\\\"]},\\n \\\"start_date\\\": {\\\"input_types\\\": [\\\"Data\\\"]}\\n }\\n\\n def build(\\n self,\\n methaphor_client: Data,\\n query: str,\\n search_type: str='keyword',\\n search_num_results: int = 5,\\n include_domains: List[str]= [\\\"youtube.com\\\"],\\n use_autoprompt: bool = False,\\n start_date: str=\\\"2023-01-01\\\",\\n \\n ) -> Data:\\n \\n results = []\\n for domain in include_domains:\\n response = methaphor_client.search(\\n query,\\n num_results=int(search_num_results),\\n include_domains=[domain],\\n use_autoprompt=use_autoprompt,\\n type=search_type,\\n # start_crawl_date=start_date,\\n start_published_date=start_date\\n )\\n results.extend(response.results)\\n \\n self.repr_value = results\\n\\n return results\\n\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"include_domains\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[\"yout\"],\"password\":false,\"name\":\"include_domains\",\"display_name\":\"Include Domains\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"methaphor_client\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"methaphor_client\",\"display_name\":\"methaphor_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false},\"query\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"query\",\"display_name\":\"query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"pasteldasdasdas\"},\"search_num_results\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":5,\"password\":false,\"name\":\"search_num_results\",\"display_name\":\"Number of Results (per domain)\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"search_type\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"keyword\",\"password\":false,\"options\":[\"neural\",\"keyword\"],\"name\":\"search_type\",\"display_name\":\"Search Type\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"start_date\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"start_date\",\"display_name\":\"start_date\",\"advanced\":false,\"input_types\":[\"Data\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"use_autoprompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"use_autoprompt\",\"display_name\":\"Use Autoprompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false}},\"description\":\"Search in Metaphor with a custom string.\",\"base_classes\":[\"Data\"],\"display_name\":\"Metaphor Search\",\"custom_fields\":{\"include_domains\":null,\"methaphor_client\":null,\"query\":null,\"search_num_results\":null,\"search_type\":null,\"start_date\":null,\"use_autoprompt\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"CustomComponent-dMB5d\"},\"id\":\"CustomComponent-dMB5d\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:26:43.668665\",\"folder\":null,\"id\":\"912265df-9b87-4b30-a585-1ca59b944391\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Metaphor Search (2)\",\"description\":\"Search in Metaphor with a custom string.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom typing import List, Union\\nfrom langchain.llms.base import BaseLLM\\nfrom langchain.chains import LLMChain\\nfrom langchain import PromptTemplate\\nfrom langchain.schema import Document\\nfrom metaphor_python import Metaphor\\nimport json\\n\\nfrom typing import List\\nfrom langflow.field_typing import Data\\n\\nclass MetaphorSearch(CustomComponent):\\n display_name: str = \\\"Metaphor Search\\\"\\n description: str = \\\"Search in Metaphor with a custom string.\\\"\\n beta = True\\n \\n def build_config(self):\\n return {\\n \\\"metaphor_client\\\": {\\\"display_name\\\": \\\"Metaphor Wrapper\\\"}, \\n \\\"search_num_results\\\": {\\\"display_name\\\": \\\"Number of Results (per domain)\\\"},\\n \\\"include_domains\\\": {\\\"display_name\\\": \\\"Include Domains\\\", \\\"is_list\\\": True},\\n \\\"start_date\\\": {\\\"display_name\\\": \\\"Start Date\\\"},\\n \\\"use_autoprompt\\\": {\\\"display_name\\\": \\\"Use Autoprompt\\\", \\\"type\\\": \\\"boolean\\\"},\\n \\\"search_type\\\": {\\\"display_name\\\": \\\"Search Type\\\", \\\"options\\\": [\\\"neural\\\", \\\"keyword\\\"]},\\n \\\"start_date\\\": {\\\"input_types\\\": [\\\"Data\\\"]}\\n }\\n\\n def build(\\n self,\\n methaphor_client: Data,\\n query: str,\\n search_type: str='keyword',\\n search_num_results: int = 5,\\n include_domains: List[str]= [\\\"youtube.com\\\"],\\n use_autoprompt: bool = False,\\n start_date: str=\\\"2023-01-01\\\",\\n \\n ) -> Data:\\n \\n results = []\\n for domain in include_domains:\\n response = methaphor_client.search(\\n query,\\n num_results=int(search_num_results),\\n include_domains=[domain],\\n use_autoprompt=use_autoprompt,\\n type=search_type,\\n # start_crawl_date=start_date,\\n start_published_date=start_date\\n )\\n results.extend(response.results)\\n \\n self.repr_value = results\\n\\n return results\\n\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"include_domains\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[\"yout\"],\"password\":false,\"name\":\"include_domains\",\"display_name\":\"Include Domains\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"methaphor_client\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"methaphor_client\",\"display_name\":\"methaphor_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false},\"query\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"query\",\"display_name\":\"query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"pasteldasdasdas\"},\"search_num_results\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":5,\"password\":false,\"name\":\"search_num_results\",\"display_name\":\"Number of Results (per domain)\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"search_type\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"keyword\",\"password\":false,\"options\":[\"neural\",\"keyword\"],\"name\":\"search_type\",\"display_name\":\"Search Type\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"start_date\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"start_date\",\"display_name\":\"start_date\",\"advanced\":false,\"input_types\":[\"Data\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"use_autoprompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"use_autoprompt\",\"display_name\":\"Use Autoprompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false}},\"description\":\"Search in Metaphor with a custom string.\",\"base_classes\":[\"Data\"],\"display_name\":\"Metaphor Search\",\"custom_fields\":{\"include_domains\":null,\"methaphor_client\":null,\"query\":null,\"search_num_results\":null,\"search_type\":null,\"start_date\":null,\"use_autoprompt\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"CustomComponent-ipifC\"},\"id\":\"CustomComponent-ipifC\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:26:49.799612\",\"folder\":null,\"id\":\"ca83ee08-2f93-427d-9897-80fef6dd5447\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Metaphor Search\",\"description\":\"Search in Metaphor with a custom string.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom typing import List, Union\\nfrom langchain.llms.base import BaseLLM\\nfrom langchain.chains import LLMChain\\nfrom langchain import PromptTemplate\\nfrom langchain.schema import Document\\nfrom metaphor_python import Metaphor\\nimport json\\n\\nfrom typing import List\\nfrom langflow.field_typing import Data\\n\\nclass MetaphorSearch(CustomComponent):\\n display_name: str = \\\"Metaphor Search\\\"\\n description: str = \\\"Search in Metaphor with a custom string.\\\"\\n beta = True\\n \\n def build_config(self):\\n return {\\n \\\"metaphor_client\\\": {\\\"display_name\\\": \\\"Metaphor Wrapper\\\"}, \\n \\\"search_num_results\\\": {\\\"display_name\\\": \\\"Number of Results (per domain)\\\"},\\n \\\"include_domains\\\": {\\\"display_name\\\": \\\"Include Domains\\\", \\\"is_list\\\": True},\\n \\\"start_date\\\": {\\\"display_name\\\": \\\"Start Date\\\"},\\n \\\"use_autoprompt\\\": {\\\"display_name\\\": \\\"Use Autoprompt\\\", \\\"type\\\": \\\"boolean\\\"},\\n \\\"search_type\\\": {\\\"display_name\\\": \\\"Search Type\\\", \\\"options\\\": [\\\"neural\\\", \\\"keyword\\\"]},\\n \\\"start_date\\\": {\\\"input_types\\\": [\\\"Data\\\"]}\\n }\\n\\n def build(\\n self,\\n methaphor_client: Data,\\n query: str,\\n search_type: str='keyword',\\n search_num_results: int = 5,\\n include_domains: List[str]= [\\\"youtube.com\\\"],\\n use_autoprompt: bool = False,\\n start_date: str=\\\"2023-01-01\\\",\\n \\n ) -> Data:\\n \\n results = []\\n for domain in include_domains:\\n response = methaphor_client.search(\\n query,\\n num_results=int(search_num_results),\\n include_domains=[domain],\\n use_autoprompt=use_autoprompt,\\n type=search_type,\\n # start_crawl_date=start_date,\\n start_published_date=start_date\\n )\\n results.extend(response.results)\\n \\n self.repr_value = results\\n\\n return results\\n\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"include_domains\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[\"yout\"],\"password\":false,\"name\":\"include_domains\",\"display_name\":\"Include Domains\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"methaphor_client\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"methaphor_client\",\"display_name\":\"methaphor_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false},\"query\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"query\",\"display_name\":\"query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"pasteldasdasdas\"},\"search_num_results\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":5,\"password\":false,\"name\":\"search_num_results\",\"display_name\":\"Number of Results (per domain)\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"search_type\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"keyword\",\"password\":false,\"options\":[\"neural\",\"keyword\"],\"name\":\"search_type\",\"display_name\":\"Search Type\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"start_date\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"start_date\",\"display_name\":\"start_date\",\"advanced\":false,\"input_types\":[\"Data\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"use_autoprompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"use_autoprompt\",\"display_name\":\"Use Autoprompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false}},\"description\":\"Search in Metaphor with a custom string.\",\"base_classes\":[\"Data\"],\"display_name\":\"Metaphor Search\",\"custom_fields\":{\"include_domains\":null,\"methaphor_client\":null,\"query\":null,\"search_num_results\":null,\"search_type\":null,\"start_date\":null,\"use_autoprompt\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"CustomComponent-Y4qL7\"},\"id\":\"CustomComponent-Y4qL7\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:26:53.719960\",\"folder\":null,\"id\":\"5847602b-769a-4a82-82e8-a70f54a59929\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lively Williams\",\"description\":\"Conversational Cartography Unlocked.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-09T13:27:45.691254\",\"folder\":null,\"id\":\"0e3bdba9-127a-4399-81a4-2865b70a4a47\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Shared Component\",\"description\":\"Conversational Cartography Unlocked.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":328,\"id\":\"CSVAgent-TK9Ea\",\"type\":\"genericNode\",\"position\":{\"x\":251.25514772667083,\"y\":160.7424529887874},\"data\":{\"type\":\"CSVAgent\",\"node\":{\"template\":{\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"_type\":\"csv_agent\"},\"description\":\"Construct a CSV agent from a CSV and tools.\",\"base_classes\":[\"AgentExecutor\"],\"display_name\":\"CSVAgent\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/agents/toolkits/csv\",\"beta\":false,\"error\":null},\"id\":\"CSVAgent-TK9Ea\"},\"positionAbsolute\":{\"x\":251.25514772667083,\"y\":160.7424529887874}}],\"edges\":[],\"viewport\":{\"x\":104.85568116317398,\"y\":88.26375874183478,\"zoom\":0.7169776240079145}},\"is_component\":false,\"updated_at\":\"2023-12-09T13:28:34.119070\",\"folder\":null,\"id\":\"29c1a247-47b0-457b-8666-7c0a67dc72b0\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"teste cristhian\",\"description\":\"11111\",\"data\":{\"nodes\":[{\"width\":384,\"height\":328,\"id\":\"CSVAgent-P5wrB\",\"type\":\"genericNode\",\"position\":{\"x\":251.25514772667083,\"y\":160.7424529887874},\"data\":{\"type\":\"CSVAgent\",\"node\":{\"template\":{\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"_type\":\"csv_agent\"},\"description\":\"Construct a CSV agent from a CSV and tools.\",\"base_classes\":[\"AgentExecutor\"],\"display_name\":\"CSVAgent\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/agents/toolkits/csv\",\"beta\":false,\"error\":null},\"id\":\"CSVAgent-P5wrB\"},\"positionAbsolute\":{\"x\":251.25514772667083,\"y\":160.7424529887874}},{\"width\":384,\"height\":626,\"id\":\"OpenAI-zpihD\",\"type\":\"genericNode\",\"position\":{\"x\":-56.983202536768374,\"y\":61.715652677908665},\"data\":{\"type\":\"OpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain_core.callbacks.base.BaseCallbackHandler\",\"list\":true},\"allowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":[],\"password\":false,\"name\":\"allowed_special\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"batch_size\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":20,\"password\":false,\"name\":\"batch_size\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"best_of\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"best_of\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"disallowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"all\",\"password\":false,\"name\":\"disallowed_special\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"frequency_penalty\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":0,\"password\":false,\"name\":\"frequency_penalty\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"logit_bias\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"logit_bias\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"text-babbage-001\",\"password\":false,\"options\":[\"text-davinci-003\",\"text-davinci-002\",\"text-curie-001\",\"text-babbage-001\",\"text-ada-001\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false,\"value\":\"dasdasdasdsadasdas\"},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"presence_penalty\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":0,\"password\":false,\"name\":\"presence_penalty\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"1.4\",\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"top_p\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"top_p\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"OpenAI\"},\"description\":\"OpenAI large language models.\",\"base_classes\":[\"OpenAI\",\"BaseLanguageModel\",\"BaseLLM\",\"BaseOpenAI\"],\"display_name\":\"OpenAI\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/llms/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"OpenAI-zpihD\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":-56.983202536768374,\"y\":61.715652677908665}}],\"edges\":[],\"viewport\":{\"x\":104.85568116317398,\"y\":88.26375874183478,\"zoom\":0.7169776240079145}},\"is_component\":false,\"updated_at\":\"2023-12-09T13:40:48.453096\",\"folder\":null,\"id\":\"2e59d013-2acb-49a6-915b-9231a7e6eb58\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVAgent (1)\",\"description\":\"Construct a CSV agent from a CSV and tools.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVAgent\",\"node\":{\"template\":{\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"_type\":\"csv_agent\"},\"description\":\"Construct a CSV agent from a CSV and tools.\",\"base_classes\":[\"AgentExecutor\"],\"display_name\":\"CSVAgent\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/agents/toolkits/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVAgent-jsHqy\"},\"id\":\"CSVAgent-jsHqy\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:31:17.317322\",\"folder\":null,\"id\":\"ab1034a9-9b5b-4c65-bf6e-9f098a403942\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Suspicious Wilsonfasdfsd\",\"description\":\"Building Linguistic Labyrinths.fasdfads\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-09T14:43:45.298121\",\"folder\":null,\"id\":\"7d91c0c5-fba6-4c60-b4d1-11d430ef357a\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"AirbyteJSONLoader (1)\",\"description\":\"Load local `Airbyte` json files.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AirbyteJSONLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".json\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"\":\"\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"AirbyteJSONLoader\"},\"description\":\"Load local `Airbyte` json files.\",\"base_classes\":[\"Document\"],\"display_name\":\"AirbyteJSONLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/airbyte_json\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"AirbyteJSONLoader-pAHh6\"},\"id\":\"AirbyteJSONLoader-pAHh6\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:47:58.573137\",\"folder\":null,\"id\":\"f0cc4292-97cc-4748-803d-949e30dcf661\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"AirbyteJSONLoader\",\"description\":\"Load local `Airbyte` json files.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AirbyteJSONLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".json\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"ff2\":\"d3bbd\"},{\"w\":\"bvd\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"AirbyteJSONLoader\"},\"description\":\"Load local `Airbyte` json files.\",\"base_classes\":[\"Document\"],\"display_name\":\"AirbyteJSONLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/airbyte_json\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"AirbyteJSONLoader-0zU2Q\"},\"id\":\"AirbyteJSONLoader-0zU2Q\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:50:09.035318\",\"folder\":null,\"id\":\"5e3c0d55-1a00-4e15-9821-0c625c6415ff\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVAgent\",\"description\":\"Construct a CSV agent from a CSV and tools.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVAgent\",\"node\":{\"template\":{\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"_type\":\"csv_agent\"},\"description\":\"Construct a CSV agent from a CSV and tools.\",\"base_classes\":[\"AgentExecutor\"],\"display_name\":\"CSVAgent\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/agents/toolkits/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVAgent-Ub1Xe\"},\"id\":\"CSVAgent-Ub1Xe\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:50:16.985419\",\"folder\":null,\"id\":\"baee8061-4788-4ce6-928f-c6ce1ecb443c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lively Heisenberg\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":366,\"id\":\"CSVLoader-RMUx9\",\"type\":\"genericNode\",\"position\":{\"x\":111,\"y\":345.51250076293945},\"data\":{\"type\":\"CSVLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"z2b\":\"z9\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"CSVLoader\"},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\",\"beta\":false,\"error\":null},\"id\":\"CSVLoader-RMUx9\"},\"positionAbsolute\":{\"x\":111,\"y\":345.51250076293945}}],\"edges\":[],\"viewport\":{\"x\":0,\"y\":0,\"zoom\":1}},\"is_component\":false,\"updated_at\":\"2023-12-09T14:38:40.291137\",\"folder\":null,\"id\":\"109e9629-d569-4555-9d40-42203a5ed035\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CohereEmbeddings\",\"description\":\"Cohere embedding models.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CohereEmbeddings\",\"node\":{\"template\":{\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"cohere_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"cohere_api_key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"max_retries\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"model\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"embed-english-v2.0\",\"password\":false,\"name\":\"model\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"truncate\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"truncate\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"user_agent\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"langchain\",\"password\":false,\"name\":\"user_agent\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"_type\":\"CohereEmbeddings\"},\"description\":\"Cohere embedding models.\",\"base_classes\":[\"CohereEmbeddings\",\"Embeddings\"],\"display_name\":\"CohereEmbeddings\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/cohere\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CohereEmbeddings-HFUAf\"},\"id\":\"CohereEmbeddings-HFUAf\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:50:46.172344\",\"folder\":null,\"id\":\"662d8040-d47c-40db-bda1-66489a1c9d24\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVLoader (1)\",\"description\":\"Load a `CSV` file into a list of Documents.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"cddscz23\":\"aaqd\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"CSVLoader\"},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVLoader-3wrib\"},\"id\":\"CSVLoader-3wrib\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:56:11.662526\",\"folder\":null,\"id\":\"4fae6aec-ddbd-498d-a4d1-ca0290f6a5ad\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVLoader (2)\",\"description\":\"Load a `CSV` file into a list of Documents.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"cddscz23\":\"aaqd\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"CSVLoader\"},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVLoader-VEjyx\"},\"id\":\"CSVLoader-VEjyx\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:57:37.560784\",\"folder\":null,\"id\":\"d80635ee-966c-41f2-981c-afa2c388ac6e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVLoader (3)\",\"description\":\"Load a `CSV` file into a list of Documents.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"cddscz23\":\"aaqd\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"CSVLoader\"},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVLoader-PIhOc\"},\"id\":\"CSVLoader-PIhOc\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:00:27.991966\",\"folder\":null,\"id\":\"c5cc4c32-77c8-4889-a9f8-2632466b7366\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVLoader (4)\",\"description\":\"Load a `CSV` file into a list of Documents.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"cddscz23\":\"aaqd\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"CSVLoader\"},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVLoader-deB43\"},\"id\":\"CSVLoader-deB43\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:00:42.509243\",\"folder\":null,\"id\":\"0ab59938-ccf4-4bb9-b285-1f5da38648f0\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVLoader\",\"description\":\"Load a `CSV` file into a list of Documents.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"\":\"aaqd\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"CSVLoader\"},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVLoader-mdkLm\"},\"id\":\"CSVLoader-mdkLm\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:02:17.458354\",\"folder\":null,\"id\":\"f127b7e7-4149-492e-8998-6b1b35ec4153\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVLoader (5)\",\"description\":\"Load a `CSV` file into a list of Documents.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"cddscz23\":\"aaqd\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"CSVLoader\"},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVLoader-FRc6Y\"},\"id\":\"CSVLoader-FRc6Y\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:02:26.958867\",\"folder\":null,\"id\":\"a870a096-725c-4914-add0-8d57d710b7e5\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"AirbyteJSONLoader (2)\",\"description\":\"Load local `Airbyte` json files.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AirbyteJSONLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".json\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"\":\"\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"AirbyteJSONLoader\"},\"description\":\"Load local `Airbyte` json files.\",\"base_classes\":[\"Document\"],\"display_name\":\"AirbyteJSONLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/airbyte_json\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"AirbyteJSONLoader-Z0uol\"},\"id\":\"AirbyteJSONLoader-Z0uol\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:03:33.764117\",\"folder\":null,\"id\":\"2a37c76c-65c8-4c01-a72d-eb46f3d41a56\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Amazon Bedrock Embeddings\",\"description\":\"Embeddings model from Amazon Bedrock.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AmazonBedrockEmbeddings\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Optional\\n\\nfrom langchain.embeddings import BedrockEmbeddings\\nfrom langchain.embeddings.base import Embeddings\\nfrom langflow import CustomComponent\\n\\n\\nclass AmazonBedrockEmeddingsComponent(CustomComponent):\\n \\\"\\\"\\\"\\n A custom component for implementing an Embeddings Model using Amazon Bedrock.\\n \\\"\\\"\\\"\\n\\n display_name: str = \\\"Amazon Bedrock Embeddings\\\"\\n description: str = \\\"Embeddings model from Amazon Bedrock.\\\"\\n documentation = \\\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\\\"\\n beta = True\\n\\n def build_config(self):\\n return {\\n \\\"model_id\\\": {\\n \\\"display_name\\\": \\\"Model Id\\\",\\n \\\"options\\\": [\\\"amazon.titan-embed-text-v1\\\"],\\n },\\n \\\"credentials_profile_name\\\": {\\\"display_name\\\": \\\"Credentials Profile Name\\\"},\\n \\\"endpoint_url\\\": {\\\"display_name\\\": \\\"Bedrock Endpoint URL\\\"},\\n \\\"region_name\\\": {\\\"display_name\\\": \\\"AWS Region\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n model_id: str = \\\"amazon.titan-embed-text-v1\\\",\\n credentials_profile_name: Optional[str] = None,\\n endpoint_url: Optional[str] = None,\\n region_name: Optional[str] = None,\\n ) -> Embeddings:\\n try:\\n output = BedrockEmbeddings(\\n credentials_profile_name=credentials_profile_name,\\n model_id=model_id,\\n endpoint_url=endpoint_url,\\n region_name=region_name,\\n ) # type: ignore\\n except Exception as e:\\n raise ValueError(\\\"Could not connect to AmazonBedrock API.\\\") from e\\n return output\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"credentials_profile_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"credentials_profile_name\",\"display_name\":\"Credentials Profile Name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"endpoint_url\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"endpoint_url\",\"display_name\":\"Bedrock Endpoint URL\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"model_id\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"amazon.titan-embed-text-v1\",\"password\":false,\"options\":[\"amazon.titan-embed-text-v1\"],\"name\":\"model_id\",\"display_name\":\"Model Id\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"region_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"region_name\",\"display_name\":\"AWS Region\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"Embeddings model from Amazon Bedrock.\",\"base_classes\":[\"Embeddings\"],\"display_name\":\"Amazon Bedrock Embeddings\",\"custom_fields\":{\"credentials_profile_name\":null,\"endpoint_url\":null,\"model_id\":null,\"region_name\":null},\"output_types\":[\"AmazonBedrockEmbeddings\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"AmazonBedrockEmbeddings-28ASv\"},\"id\":\"AmazonBedrockEmbeddings-28ASv\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:03:41.066618\",\"folder\":null,\"id\":\"850ba4e6-96ca-49a7-9b0c-4b7048fd52c8\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"ConversationBufferMemory\",\"description\":\"Buffer for storing conversation memory.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"ConversationBufferMemory\",\"node\":{\"template\":{\"chat_memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"chat_memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseChatMessageHistory\",\"list\":false},\"ai_prefix\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"AI\",\"password\":false,\"name\":\"ai_prefix\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"human_prefix\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"Human\",\"password\":false,\"name\":\"human_prefix\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"input_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"input_key\",\"advanced\":false,\"dynamic\":false,\"info\":\"The variable to be used as Chat Input when more than one variable is available.\",\"type\":\"str\",\"list\":false},\"memory_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"chat_history\",\"password\":false,\"name\":\"memory_key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"output_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"output_key\",\"advanced\":false,\"dynamic\":false,\"info\":\"The variable to be used as Chat Output (e.g. answer in a ConversationalRetrievalChain)\",\"type\":\"str\",\"list\":false},\"return_messages\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"return_messages\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ConversationBufferMemory\"},\"description\":\"Buffer for storing conversation memory.\",\"base_classes\":[\"BaseMemory\",\"BaseChatMemory\",\"ConversationBufferMemory\"],\"display_name\":\"ConversationBufferMemory\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/memory/how_to/buffer\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"ConversationBufferMemory-WaoLx\"},\"id\":\"ConversationBufferMemory-WaoLx\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:04:46.058568\",\"folder\":null,\"id\":\"be650940-0449-4eb0-a708-056310f924fd\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Amazon Bedrock Embeddings (1)\",\"description\":\"Embeddings model from Amazon Bedrock.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AmazonBedrockEmbeddings\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Optional\\n\\nfrom langchain.embeddings import BedrockEmbeddings\\nfrom langchain.embeddings.base import Embeddings\\nfrom langflow import CustomComponent\\n\\n\\nclass AmazonBedrockEmeddingsComponent(CustomComponent):\\n \\\"\\\"\\\"\\n A custom component for implementing an Embeddings Model using Amazon Bedrock.\\n \\\"\\\"\\\"\\n\\n display_name: str = \\\"Amazon Bedrock Embeddings\\\"\\n description: str = \\\"Embeddings model from Amazon Bedrock.\\\"\\n documentation = \\\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\\\"\\n beta = True\\n\\n def build_config(self):\\n return {\\n \\\"model_id\\\": {\\n \\\"display_name\\\": \\\"Model Id\\\",\\n \\\"options\\\": [\\\"amazon.titan-embed-text-v1\\\"],\\n },\\n \\\"credentials_profile_name\\\": {\\\"display_name\\\": \\\"Credentials Profile Name\\\"},\\n \\\"endpoint_url\\\": {\\\"display_name\\\": \\\"Bedrock Endpoint URL\\\"},\\n \\\"region_name\\\": {\\\"display_name\\\": \\\"AWS Region\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n model_id: str = \\\"amazon.titan-embed-text-v1\\\",\\n credentials_profile_name: Optional[str] = None,\\n endpoint_url: Optional[str] = None,\\n region_name: Optional[str] = None,\\n ) -> Embeddings:\\n try:\\n output = BedrockEmbeddings(\\n credentials_profile_name=credentials_profile_name,\\n model_id=model_id,\\n endpoint_url=endpoint_url,\\n region_name=region_name,\\n ) # type: ignore\\n except Exception as e:\\n raise ValueError(\\\"Could not connect to AmazonBedrock API.\\\") from e\\n return output\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"credentials_profile_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"credentials_profile_name\",\"display_name\":\"Credentials Profile Name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"endpoint_url\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"endpoint_url\",\"display_name\":\"Bedrock Endpoint URL\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"model_id\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"amazon.titan-embed-text-v1\",\"password\":false,\"options\":[\"amazon.titan-embed-text-v1\"],\"name\":\"model_id\",\"display_name\":\"Model Id\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"region_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"region_name\",\"display_name\":\"AWS Region\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"Embeddings model from Amazon Bedrock.\",\"base_classes\":[\"Embeddings\"],\"display_name\":\"Amazon Bedrock Embeddings\",\"custom_fields\":{\"credentials_profile_name\":null,\"endpoint_url\":null,\"model_id\":null,\"region_name\":null},\"output_types\":[\"AmazonBedrockEmbeddings\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"AmazonBedrockEmbeddings-Bs5PG\"},\"id\":\"AmazonBedrockEmbeddings-Bs5PG\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:05:50.570800\",\"folder\":null,\"id\":\"53ad1fe2-f3af-4354-86e0-eb141ce12859\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Amazon Bedrock Embeddings (2)\",\"description\":\"Embeddings model from Amazon Bedrock.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AmazonBedrockEmbeddings\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Optional\\n\\nfrom langchain.embeddings import BedrockEmbeddings\\nfrom langchain.embeddings.base import Embeddings\\nfrom langflow import CustomComponent\\n\\n\\nclass AmazonBedrockEmeddingsComponent(CustomComponent):\\n \\\"\\\"\\\"\\n A custom component for implementing an Embeddings Model using Amazon Bedrock.\\n \\\"\\\"\\\"\\n\\n display_name: str = \\\"Amazon Bedrock Embeddings\\\"\\n description: str = \\\"Embeddings model from Amazon Bedrock.\\\"\\n documentation = \\\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\\\"\\n beta = True\\n\\n def build_config(self):\\n return {\\n \\\"model_id\\\": {\\n \\\"display_name\\\": \\\"Model Id\\\",\\n \\\"options\\\": [\\\"amazon.titan-embed-text-v1\\\"],\\n },\\n \\\"credentials_profile_name\\\": {\\\"display_name\\\": \\\"Credentials Profile Name\\\"},\\n \\\"endpoint_url\\\": {\\\"display_name\\\": \\\"Bedrock Endpoint URL\\\"},\\n \\\"region_name\\\": {\\\"display_name\\\": \\\"AWS Region\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n model_id: str = \\\"amazon.titan-embed-text-v1\\\",\\n credentials_profile_name: Optional[str] = None,\\n endpoint_url: Optional[str] = None,\\n region_name: Optional[str] = None,\\n ) -> Embeddings:\\n try:\\n output = BedrockEmbeddings(\\n credentials_profile_name=credentials_profile_name,\\n model_id=model_id,\\n endpoint_url=endpoint_url,\\n region_name=region_name,\\n ) # type: ignore\\n except Exception as e:\\n raise ValueError(\\\"Could not connect to AmazonBedrock API.\\\") from e\\n return output\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"credentials_profile_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"credentials_profile_name\",\"display_name\":\"Credentials Profile Name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"endpoint_url\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"endpoint_url\",\"display_name\":\"Bedrock Endpoint URL\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"model_id\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"amazon.titan-embed-text-v1\",\"password\":false,\"options\":[\"amazon.titan-embed-text-v1\"],\"name\":\"model_id\",\"display_name\":\"Model Id\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"region_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"region_name\",\"display_name\":\"AWS Region\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"Embeddings model from Amazon Bedrock.\",\"base_classes\":[\"Embeddings\"],\"display_name\":\"Amazon Bedrock Embeddings\",\"custom_fields\":{\"credentials_profile_name\":null,\"endpoint_url\":null,\"model_id\":null,\"region_name\":null},\"output_types\":[\"AmazonBedrockEmbeddings\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"AmazonBedrockEmbeddings-zSZ4t\"},\"id\":\"AmazonBedrockEmbeddings-zSZ4t\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:06:11.415088\",\"folder\":null,\"id\":\"e9ed1c90-146e-452d-8ccd-ebf2e0da4331\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Amazon Bedrock Embeddings (3)\",\"description\":\"Embeddings model from Amazon Bedrock.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AmazonBedrockEmbeddings\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Optional\\n\\nfrom langchain.embeddings import BedrockEmbeddings\\nfrom langchain.embeddings.base import Embeddings\\nfrom langflow import CustomComponent\\n\\n\\nclass AmazonBedrockEmeddingsComponent(CustomComponent):\\n \\\"\\\"\\\"\\n A custom component for implementing an Embeddings Model using Amazon Bedrock.\\n \\\"\\\"\\\"\\n\\n display_name: str = \\\"Amazon Bedrock Embeddings\\\"\\n description: str = \\\"Embeddings model from Amazon Bedrock.\\\"\\n documentation = \\\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\\\"\\n beta = True\\n\\n def build_config(self):\\n return {\\n \\\"model_id\\\": {\\n \\\"display_name\\\": \\\"Model Id\\\",\\n \\\"options\\\": [\\\"amazon.titan-embed-text-v1\\\"],\\n },\\n \\\"credentials_profile_name\\\": {\\\"display_name\\\": \\\"Credentials Profile Name\\\"},\\n \\\"endpoint_url\\\": {\\\"display_name\\\": \\\"Bedrock Endpoint URL\\\"},\\n \\\"region_name\\\": {\\\"display_name\\\": \\\"AWS Region\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n model_id: str = \\\"amazon.titan-embed-text-v1\\\",\\n credentials_profile_name: Optional[str] = None,\\n endpoint_url: Optional[str] = None,\\n region_name: Optional[str] = None,\\n ) -> Embeddings:\\n try:\\n output = BedrockEmbeddings(\\n credentials_profile_name=credentials_profile_name,\\n model_id=model_id,\\n endpoint_url=endpoint_url,\\n region_name=region_name,\\n ) # type: ignore\\n except Exception as e:\\n raise ValueError(\\\"Could not connect to AmazonBedrock API.\\\") from e\\n return output\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"credentials_profile_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"credentials_profile_name\",\"display_name\":\"Credentials Profile Name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"endpoint_url\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"endpoint_url\",\"display_name\":\"Bedrock Endpoint URL\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"model_id\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"amazon.titan-embed-text-v1\",\"password\":false,\"options\":[\"amazon.titan-embed-text-v1\"],\"name\":\"model_id\",\"display_name\":\"Model Id\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"region_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"region_name\",\"display_name\":\"AWS Region\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"Embeddings model from Amazon Bedrock.\",\"base_classes\":[\"Embeddings\"],\"display_name\":\"Amazon Bedrock Embeddings\",\"custom_fields\":{\"credentials_profile_name\":null,\"endpoint_url\":null,\"model_id\":null,\"region_name\":null},\"output_types\":[\"AmazonBedrockEmbeddings\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"AmazonBedrockEmbeddings-Bxhlt\"},\"id\":\"AmazonBedrockEmbeddings-Bxhlt\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:07:06.411108\",\"folder\":null,\"id\":\"83783c57-64e3-41a6-aa7e-ed82f80f1e53\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVLoader (6)\",\"description\":\"Load a `CSV` file into a list of Documents.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"z2b\":\"z9\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"CSVLoader\"},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVLoader-2pn2o\"},\"id\":\"CSVLoader-2pn2o\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:38:30.706258\",\"folder\":null,\"id\":\"c4ae9de6-9df3-4d3c-afc9-1752af4fecd7\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Agent Initializer\",\"description\":\"Initialize a Langchain Agent.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AgentInitializer\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from typing import Callable, List, Union\\n\\nfrom langchain.agents import AgentExecutor, AgentType, initialize_agent, types\\n\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import BaseChatMemory, BaseLanguageModel, Tool\\n\\n\\nclass AgentInitializerComponent(CustomComponent):\\n display_name: str = \\\"Agent Initializer\\\"\\n description: str = \\\"Initialize a Langchain Agent.\\\"\\n documentation: str = \\\"https://python.langchain.com/docs/modules/agents/agent_types/\\\"\\n\\n def build_config(self):\\n agents = list(types.AGENT_TO_CLASS.keys())\\n # field_type and required are optional\\n return {\\n \\\"agent\\\": {\\\"options\\\": agents, \\\"value\\\": agents[0], \\\"display_name\\\": \\\"Agent Type\\\"},\\n \\\"max_iterations\\\": {\\\"display_name\\\": \\\"Max Iterations\\\", \\\"value\\\": 10},\\n \\\"memory\\\": {\\\"display_name\\\": \\\"Memory\\\"},\\n \\\"tools\\\": {\\\"display_name\\\": \\\"Tools\\\"},\\n \\\"llm\\\": {\\\"display_name\\\": \\\"Language Model\\\"},\\n }\\n\\n def build(\\n self, agent: str, llm: BaseLanguageModel, memory: BaseChatMemory, tools: List[Tool], max_iterations: int\\n ) -> Union[AgentExecutor, Callable]:\\n agent = AgentType(agent)\\n return initialize_agent(\\n tools=tools,\\n llm=llm,\\n agent=agent,\\n memory=memory,\\n return_intermediate_steps=True,\\n handle_parsing_errors=True,\\n max_iterations=max_iterations,\\n )\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"agent\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"zero-shot-react-description\",\"password\":false,\"options\":[\"zero-shot-react-description\",\"react-docstore\",\"self-ask-with-search\",\"conversational-react-description\",\"chat-zero-shot-react-description\",\"chat-conversational-react-description\",\"structured-chat-zero-shot-react-description\",\"openai-functions\",\"openai-multi-functions\",\"JsonAgent\",\"CSVAgent\",\"AgentInitializer\",\"VectorStoreAgent\",\"VectorStoreRouterAgent\",\"SQLAgent\"],\"name\":\"agent\",\"display_name\":\"Agent Type\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"Language Model\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"max_iterations\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":10,\"password\":false,\"name\":\"max_iterations\",\"display_name\":\"Max Iterations\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"memory\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"display_name\":\"Memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseChatMemory\",\"list\":false},\"tools\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"tools\",\"display_name\":\"Tools\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Tool\",\"list\":true}},\"description\":\"Initialize a Langchain Agent.\",\"base_classes\":[\"Chain\",\"AgentExecutor\",\"Callable\"],\"display_name\":\"Agent Initializer\",\"custom_fields\":{\"agent\":null,\"llm\":null,\"max_iterations\":null,\"memory\":null,\"tools\":null},\"output_types\":[\"AgentInitializer\"],\"documentation\":\"https://python.langchain.com/docs/modules/agents/agent_types/\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"AgentInitializer-MJrAC\"},\"id\":\"AgentInitializer-MJrAC\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:42:54.715163\",\"folder\":null,\"id\":\"ff84b5f9-5680-4084-a9f1-7d94fe675486\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Agent Initializer (1)\",\"description\":\"Initialize a Langchain Agent.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AgentInitializer\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from typing import Callable, List, Union\\n\\nfrom langchain.agents import AgentExecutor, AgentType, initialize_agent, types\\n\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import BaseChatMemory, BaseLanguageModel, Tool\\n\\n\\nclass AgentInitializerComponent(CustomComponent):\\n display_name: str = \\\"Agent Initializer\\\"\\n description: str = \\\"Initialize a Langchain Agent.\\\"\\n documentation: str = \\\"https://python.langchain.com/docs/modules/agents/agent_types/\\\"\\n\\n def build_config(self):\\n agents = list(types.AGENT_TO_CLASS.keys())\\n # field_type and required are optional\\n return {\\n \\\"agent\\\": {\\\"options\\\": agents, \\\"value\\\": agents[0], \\\"display_name\\\": \\\"Agent Type\\\"},\\n \\\"max_iterations\\\": {\\\"display_name\\\": \\\"Max Iterations\\\", \\\"value\\\": 10},\\n \\\"memory\\\": {\\\"display_name\\\": \\\"Memory\\\"},\\n \\\"tools\\\": {\\\"display_name\\\": \\\"Tools\\\"},\\n \\\"llm\\\": {\\\"display_name\\\": \\\"Language Model\\\"},\\n }\\n\\n def build(\\n self, agent: str, llm: BaseLanguageModel, memory: BaseChatMemory, tools: List[Tool], max_iterations: int\\n ) -> Union[AgentExecutor, Callable]:\\n agent = AgentType(agent)\\n return initialize_agent(\\n tools=tools,\\n llm=llm,\\n agent=agent,\\n memory=memory,\\n return_intermediate_steps=True,\\n handle_parsing_errors=True,\\n max_iterations=max_iterations,\\n )\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"agent\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"zero-shot-react-description\",\"password\":false,\"options\":[\"zero-shot-react-description\",\"react-docstore\",\"self-ask-with-search\",\"conversational-react-description\",\"chat-zero-shot-react-description\",\"chat-conversational-react-description\",\"structured-chat-zero-shot-react-description\",\"openai-functions\",\"openai-multi-functions\",\"JsonAgent\",\"CSVAgent\",\"AgentInitializer\",\"VectorStoreAgent\",\"VectorStoreRouterAgent\",\"SQLAgent\"],\"name\":\"agent\",\"display_name\":\"Agent Type\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"Language Model\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"max_iterations\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":10,\"password\":false,\"name\":\"max_iterations\",\"display_name\":\"Max Iterations\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"memory\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"display_name\":\"Memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseChatMemory\",\"list\":false},\"tools\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"tools\",\"display_name\":\"Tools\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Tool\",\"list\":true}},\"description\":\"Initialize a Langchain Agent.\",\"base_classes\":[\"Chain\",\"AgentExecutor\",\"Callable\"],\"display_name\":\"Agent Initializer\",\"custom_fields\":{\"agent\":null,\"llm\":null,\"max_iterations\":null,\"memory\":null,\"tools\":null},\"output_types\":[\"AgentInitializer\"],\"documentation\":\"https://python.langchain.com/docs/modules/agents/agent_types/\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"AgentInitializer-3lcZ4\"},\"id\":\"AgentInitializer-3lcZ4\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:43:20.819934\",\"folder\":null,\"id\":\"97f5db9f-d6cc-4555-88fb-3be102c67814\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Exuberant Banach\",\"description\":\"Unfolding Linguistic Possibilities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-09T14:52:49.951416\",\"folder\":null,\"id\":\"a600acd1-213a-4ce7-8648-ab2ee59f5918\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"AirbyteJSONLoader (3)\",\"description\":\"Load local `Airbyte` json files.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AirbyteJSONLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".json\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"\":\"\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"AirbyteJSONLoader\"},\"description\":\"Load local `Airbyte` json files.\",\"base_classes\":[\"Document\"],\"display_name\":\"AirbyteJSONLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/airbyte_json\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"AirbyteJSONLoader-JhQtx\"},\"id\":\"AirbyteJSONLoader-JhQtx\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:44:49.587337\",\"folder\":null,\"id\":\"07c52ad7-ca52-4cdd-ab40-74a91dbad0dd\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"AirbyteJSONLoader (4)\",\"description\":\"Load local `Airbyte` json files.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AirbyteJSONLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".json\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"\":\"\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"AirbyteJSONLoader\"},\"description\":\"Load local `Airbyte` json files.\",\"base_classes\":[\"Document\"],\"display_name\":\"AirbyteJSONLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/airbyte_json\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"AirbyteJSONLoader-bIvDc\"},\"id\":\"AirbyteJSONLoader-bIvDc\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:45:13.458500\",\"folder\":null,\"id\":\"53e4d256-3653-444b-b8e0-fb97b3ae5c7e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"AirbyteJSONLoader (5)\",\"description\":\"Load local `Airbyte` json files.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AirbyteJSONLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".json\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"\":\"\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"AirbyteJSONLoader\"},\"description\":\"Load local `Airbyte` json files.\",\"base_classes\":[\"Document\"],\"display_name\":\"AirbyteJSONLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/airbyte_json\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"AirbyteJSONLoader-2BLS8\"},\"id\":\"AirbyteJSONLoader-2BLS8\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:45:44.461699\",\"folder\":null,\"id\":\"b5158cc1-c6b8-4e25-907a-bc7e7637aa38\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Amazon Bedrock Embeddings (4)\",\"description\":\"Embeddings model from Amazon Bedrock.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AmazonBedrockEmbeddings\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Optional\\n\\nfrom langchain.embeddings import BedrockEmbeddings\\nfrom langchain.embeddings.base import Embeddings\\nfrom langflow import CustomComponent\\n\\n\\nclass AmazonBedrockEmeddingsComponent(CustomComponent):\\n \\\"\\\"\\\"\\n A custom component for implementing an Embeddings Model using Amazon Bedrock.\\n \\\"\\\"\\\"\\n\\n display_name: str = \\\"Amazon Bedrock Embeddings\\\"\\n description: str = \\\"Embeddings model from Amazon Bedrock.\\\"\\n documentation = \\\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\\\"\\n beta = True\\n\\n def build_config(self):\\n return {\\n \\\"model_id\\\": {\\n \\\"display_name\\\": \\\"Model Id\\\",\\n \\\"options\\\": [\\\"amazon.titan-embed-text-v1\\\"],\\n },\\n \\\"credentials_profile_name\\\": {\\\"display_name\\\": \\\"Credentials Profile Name\\\"},\\n \\\"endpoint_url\\\": {\\\"display_name\\\": \\\"Bedrock Endpoint URL\\\"},\\n \\\"region_name\\\": {\\\"display_name\\\": \\\"AWS Region\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n model_id: str = \\\"amazon.titan-embed-text-v1\\\",\\n credentials_profile_name: Optional[str] = None,\\n endpoint_url: Optional[str] = None,\\n region_name: Optional[str] = None,\\n ) -> Embeddings:\\n try:\\n output = BedrockEmbeddings(\\n credentials_profile_name=credentials_profile_name,\\n model_id=model_id,\\n endpoint_url=endpoint_url,\\n region_name=region_name,\\n ) # type: ignore\\n except Exception as e:\\n raise ValueError(\\\"Could not connect to AmazonBedrock API.\\\") from e\\n return output\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"credentials_profile_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"credentials_profile_name\",\"display_name\":\"Credentials Profile Name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"endpoint_url\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"endpoint_url\",\"display_name\":\"Bedrock Endpoint URL\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"model_id\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"amazon.titan-embed-text-v1\",\"password\":false,\"options\":[\"amazon.titan-embed-text-v1\"],\"name\":\"model_id\",\"display_name\":\"Model Id\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"region_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"region_name\",\"display_name\":\"AWS Region\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"Embeddings model from Amazon Bedrock.\",\"base_classes\":[\"Embeddings\"],\"display_name\":\"Amazon Bedrock Embeddings\",\"custom_fields\":{\"credentials_profile_name\":null,\"endpoint_url\":null,\"model_id\":null,\"region_name\":null},\"output_types\":[\"AmazonBedrockEmbeddings\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"AmazonBedrockEmbeddings-NsBzN\"},\"id\":\"AmazonBedrockEmbeddings-NsBzN\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:50:29.791575\",\"folder\":null,\"id\":\"3fb77f72-1be7-4ce0-ae89-a82b0eee9acf\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Evil Golick\",\"description\":\"Where Language Meets Logic.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:19:02.707854\",\"folder\":null,\"id\":\"9c5d21c2-ea82-4cf4-a591-c3d3fd3f13e6\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gleeful Davinci (1)\",\"description\":\"Unleashing Linguistic Creativity.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:19:02.761150\",\"folder\":null,\"id\":\"f8e2e16e-129c-4116-9626-2c6b524d97b7\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Effervescent Degrasse\",\"description\":\"Language Models, Mapped and Mastered.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:19:02.764440\",\"folder\":null,\"id\":\"d7f4f7b5-effe-4834-8cab-4f2fc4f6e9de\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Prickly Archimedes\",\"description\":\"Language Chainlink Master.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:19:02.767546\",\"folder\":null,\"id\":\"2265d813-4a87-410f-b06a-65e35db8219e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Boring Heyrovsky\",\"description\":\"Building Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:19:02.765105\",\"folder\":null,\"id\":\"10bfd881-e67e-4c33-965d-ee041695edce\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Nostalgic Carroll\",\"description\":\"Unfolding Linguistic Possibilities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:19:02.811794\",\"folder\":null,\"id\":\"63fa5653-4513-47f2-8dfa-baeb1d981f93\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Pensive Perlman\",\"description\":\"Empowering Communication, Enabling Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:19:02.814993\",\"folder\":null,\"id\":\"f4bc5945-20d9-4703-a5bb-6a4a3ef7fc8e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Hilarious Stallman\",\"description\":\"Connect the Dots, Craft Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:19:02.813144\",\"folder\":null,\"id\":\"8d8b80f9-4b74-4cd5-bc5c-08a32c4d2b95\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Awesome Einstein\",\"description\":\"The Power of Language at Your Fingertips.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:20:19.518262\",\"folder\":null,\"id\":\"21808fd7-a492-4e29-8863-301c2785f542\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Funky Swanson\",\"description\":\"Sculpting Language with Precision.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:20:20.185637\",\"folder\":null,\"id\":\"7752299a-4aa9-44db-8d9c-5c4a2ac1b071\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Romantic Pascal\",\"description\":\"Unlock the Power of AI in Your Business Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:20:20.223064\",\"folder\":null,\"id\":\"78f48a13-6a9f-42ce-9d58-ec9b63b381d2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Twinkly Bartik\",\"description\":\"Sculpting Language with Precision.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:20:20.239758\",\"folder\":null,\"id\":\"38074091-3d7c-4d42-b61b-ae195c1b8a4e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Condescending Joliot\",\"description\":\"Language Models, Unleashed.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:20:20.271996\",\"folder\":null,\"id\":\"773020aa-5c2d-4632-ad9e-21276861ab93\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gleeful Kalam\",\"description\":\"The Power of Language at Your Fingertips.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:20:20.283929\",\"folder\":null,\"id\":\"0092d077-6d31-401f-a739-b164476b90ed\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Grinning Bhabha\",\"description\":\"Your Passport to Linguistic Landscapes.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:20:20.467739\",\"folder\":null,\"id\":\"4a395211-712d-4dd2-b3bb-e6b19200f15d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Mirthful Babbage\",\"description\":\"Design Dialogues with Langflow.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:20:20.742990\",\"folder\":null,\"id\":\"3f086a82-3e29-4328-9da8-e02dc9201744\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Tiny Volta\",\"description\":\"Nurture NLP Nodes Here.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:24:18.594247\",\"folder\":null,\"id\":\"659b8289-c8e8-413d-9b2b-51e68411f170\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Radiant Jennings\",\"description\":\"Design, Develop, Dialogize.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:24:42.640309\",\"folder\":null,\"id\":\"f55f0640-d47e-4471-b1ba-3411d38ecac5\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Distracted Shaw\",\"description\":\"Interactive Language Weaving.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:24:58.376247\",\"folder\":null,\"id\":\"a039811e-449a-4244-83ed-4ddd731a0921\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Peppy Murdock (1)\",\"description\":\"Language Chainlink Master.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:25:14.674524\",\"folder\":null,\"id\":\"0faf6144-6ca6-4f64-a343-665ae54774ef\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lively Volta\",\"description\":\"Language Models, Mapped and Mastered.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:26:50.418029\",\"folder\":null,\"id\":\"c5d149d0-c401-4f5e-b79f-2abcc7b8d98d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Bubbly Curie\",\"description\":\"Navigate the Networks of Conversation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:27:10.900899\",\"folder\":null,\"id\":\"7bb2d226-9740-433d-861f-a499632c5a13\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Radiant Nobel\",\"description\":\"Navigate the Linguistic Landscape, Discover Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:29:11.541630\",\"folder\":null,\"id\":\"947906d8-75ea-470c-a8e2-cc80c5d3bdbb\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cheerful Northcutt\",\"description\":\"Unleashing Business Potential through Language Engineering.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:29:37.169791\",\"folder\":null,\"id\":\"56f109fd-2c18-42ed-a9b2-089a678a0c11\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Suspicious Khayyam\",\"description\":\"Crafting Dialogues that Drive Business Success.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:30:24.686359\",\"folder\":null,\"id\":\"551d7bfa-49aa-43f1-a779-e47eabc2aaf2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Twinkly Spence\",\"description\":\"Create, Curate, Communicate with Langflow.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:30:47.738472\",\"folder\":null,\"id\":\"12aef128-130e-492e-bf84-62d4cb4cd456\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Mirthful Lavoisier\",\"description\":\"Nurture NLP Nodes Here.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:31:43.272365\",\"folder\":null,\"id\":\"9952c044-6903-4fba-a270-6ed0b90c93c9\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Upbeat Bose\",\"description\":\"Unravel the Art of Articulation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:32:23.972035\",\"folder\":null,\"id\":\"65f49582-c9fa-4c67-a2bc-4e8fa73ca731\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Tender Perlman\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:33:26.984083\",\"folder\":null,\"id\":\"9ae57fe2-c677-47fa-a059-7d3d915a1178\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sharp Cori\",\"description\":\"Conversation Catalyst Engine.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:33:52.377359\",\"folder\":null,\"id\":\"2920dde2-5c24-4fe0-9c06-ef86b5a16a99\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"}]" + "text": "[{\"name\":\"Awesome Euclid\",\"description\":\"Language Models, Mapped and Mastered.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":374,\"id\":\"PromptTemplate-m2yFu\",\"type\":\"genericNode\",\"position\":{\"x\":462.6456058272081,\"y\":1033.9314297130313},\"data\":{\"type\":\"PromptTemplate\",\"node\":{\"template\":{\"output_parser\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false},\"input_types\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"input_variables\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"transcription\"]},\"partial_variables\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"template\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"prompt\",\"list\":false,\"value\":\"create an image prompt based on the song's lyrics to be used as the album cover of this song:\\n\\nlyrics:\\n{transcription}\"},\"template_format\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"f-string\",\"password\":false,\"name\":\"template_format\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":false},\"validate_template\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"PromptTemplate\",\"transcription\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"transcription\",\"display_name\":\"transcription\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"A prompt template for a language model.\",\"base_classes\":[\"PromptTemplate\",\"StringPromptTemplate\",\"BasePromptTemplate\"],\"name\":\"\",\"display_name\":\"PromptTemplate\",\"documentation\":\"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\"custom_fields\":{\"\":[\"transcription\"],\"template\":[\"transcription\",\"question\"]},\"output_types\":[],\"full_path\":null,\"field_formatters\":{},\"beta\":false,\"error\":null},\"id\":\"PromptTemplate-m2yFu\"},\"selected\":false,\"positionAbsolute\":{\"x\":462.6456058272081,\"y\":1033.9314297130313},\"dragging\":false},{\"width\":384,\"height\":626,\"id\":\"ChatOpenAI-urapv\",\"type\":\"genericNode\",\"position\":{\"x\":189.94856095084924,\"y\":-85.06556385338186},\"data\":{\"type\":\"ChatOpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain_core.callbacks.base.BaseCallbackHandler\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false,\"value\":\"\"},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"gpt-4-1106-preview\",\"password\":false,\"options\":[\"gpt-4-1106-preview\",\"gpt-4\",\"gpt-4-32k\",\"gpt-3.5-turbo\",\"gpt-3.5-turbo-16k\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":0.7,\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ChatOpenAI\"},\"description\":\"`OpenAI` Chat large language models API.\",\"base_classes\":[\"ChatOpenAI\",\"BaseChatModel\",\"BaseLanguageModel\",\"BaseLLM\"],\"display_name\":\"ChatOpenAI\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"ChatOpenAI-urapv\"},\"selected\":false,\"positionAbsolute\":{\"x\":189.94856095084924,\"y\":-85.06556385338186},\"dragging\":false},{\"width\":384,\"height\":806,\"id\":\"CustomComponent-IEIUl\",\"type\":\"genericNode\",\"position\":{\"x\":2364.865919667005,\"y\":88.43094097025096},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nfrom platformdirs import user_cache_dir\\nimport base64\\nfrom PIL import Image\\nfrom io import BytesIO\\nfrom openai import OpenAI\\nfrom pathlib import Path\\n\\nclass Component(CustomComponent):\\n display_name: str = \\\"Image generator\\\"\\n description: str = \\\"generate images using Dall-E\\\"\\n documentation: str = \\\"http://docs.langflow.org/components/custom\\\"\\n\\n def build_config(self):\\n return {\\\"prompt\\\": {\\\"display_name\\\": \\\"Prompt\\\",\\\"input_types\\\":[\\\"str\\\"]},\\n \\\"api_key\\\":{\\\"display_name\\\":\\\"OpenAI API key\\\",\\\"password\\\":True},\\n \\\"model\\\":{\\\"display_name\\\":\\\"Model name\\\",\\\"advanced\\\":True,\\\"options\\\":[\\\"dall-e-2\\\",\\\"dall-e-3\\\"], \\\"value\\\":\\\"dall-e-3\\\"},\\n \\\"file_name\\\":{\\\"display_name\\\":\\\"File Name\\\"},\\n \\\"output_format\\\":{\\\"display_name\\\":\\\"Output format\\\",\\\"options\\\":[\\\"jpeg\\\",\\\"png\\\"],\\\"value\\\":\\\"jpeg\\\"},\\n \\\"width\\\":{\\\"display_name\\\":\\\"Width\\\" ,\\\"value\\\":1024},\\n \\\"height\\\":{\\\"display_name\\\":\\\"Height\\\", \\\"value\\\":1024}\\n }\\n\\n def build(self, prompt:str,api_key:str,model:str,file_name:str,output_format:str,width:int,height:int):\\n client = OpenAI(api_key=api_key)\\n cache_dir = Path(user_cache_dir(\\\"langflow\\\"))\\n images_dir = cache_dir / \\\"images\\\"\\n images_dir.mkdir(parents=True, exist_ok=True)\\n image_path = images_dir / f\\\"{file_name}.{output_format}\\\"\\n response = client.images.generate(\\n model=model,\\n prompt=prompt,\\n size=f\\\"{height}x{width}\\\",\\n response_format=\\\"b64_json\\\",\\n n=1,\\n )\\n # Decode base64-encoded image string\\n binary_data = base64.b64decode(response.data[0].b64_json)\\n # Create PIL Image object from binary image data\\n image_pil = Image.open(BytesIO(binary_data))\\n image_pil.save(image_path, format=output_format.upper())\\n return \\\"\\\"\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"api_key\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"api_key\",\"display_name\":\"OpenAI API key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"file_name\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"file_name\",\"display_name\":\"File Name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"album\"},\"height\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":1024,\"password\":false,\"name\":\"height\",\"display_name\":\"Height\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"model\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"dall-e-3\",\"password\":false,\"options\":[\"dall-e-2\",\"dall-e-3\"],\"name\":\"model\",\"display_name\":\"Model name\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"output_format\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"jpeg\",\"password\":false,\"options\":[\"jpeg\",\"png\"],\"name\":\"output_format\",\"display_name\":\"Output format\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"prompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"prompt\",\"display_name\":\"Prompt\",\"advanced\":false,\"input_types\":[\"str\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"width\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":1024,\"password\":false,\"name\":\"width\",\"display_name\":\"Width\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false}},\"description\":\"generate images using Dall-E\",\"base_classes\":[\"Data\"],\"display_name\":\"Image generator\",\"custom_fields\":{\"api_key\":null,\"file_name\":null,\"height\":null,\"model\":null,\"output_format\":null,\"prompt\":null,\"width\":null},\"output_types\":[\"Data\"],\"documentation\":\"http://docs.langflow.org/components/custom\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-IEIUl\"},\"selected\":false,\"positionAbsolute\":{\"x\":2364.865919667005,\"y\":88.43094097025096}},{\"width\":384,\"height\":338,\"id\":\"LLMChain-KlJb3\",\"type\":\"genericNode\",\"position\":{\"x\":1242.9851164540805,\"y\":-139.74634696823108},\"data\":{\"type\":\"LLMChain\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Callable, Optional, Union\\n\\nfrom langchain.chains import LLMChain\\n\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import (\\n BaseLanguageModel,\\n BaseMemory,\\n BasePromptTemplate,\\n Chain,\\n)\\n\\n\\nclass LLMChainComponent(CustomComponent):\\n display_name = \\\"LLMChain\\\"\\n description = \\\"Chain to run queries against LLMs\\\"\\n\\n def build_config(self):\\n return {\\n \\\"prompt\\\": {\\\"display_name\\\": \\\"Prompt\\\"},\\n \\\"llm\\\": {\\\"display_name\\\": \\\"LLM\\\"},\\n \\\"memory\\\": {\\\"display_name\\\": \\\"Memory\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n prompt: BasePromptTemplate,\\n llm: BaseLanguageModel,\\n memory: Optional[BaseMemory] = None,\\n ) -> Union[Chain, Callable]:\\n return LLMChain(prompt=prompt, llm=llm, memory=memory)\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"display_name\":\"code\"},\"_type\":\"CustomComponent\",\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"display_name\":\"Memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseMemory\",\"list\":false},\"prompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"prompt\",\"display_name\":\"Prompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BasePromptTemplate\",\"list\":false}},\"description\":\"Chain to run queries against LLMs\",\"base_classes\":[\"Chain\",\"Callable\"],\"display_name\":\"LLMChain\",\"custom_fields\":{\"llm\":null,\"memory\":null,\"prompt\":null},\"output_types\":[\"LLMChain\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"LLMChain-KlJb3\"},\"selected\":false,\"positionAbsolute\":{\"x\":1242.9851164540805,\"y\":-139.74634696823108},\"dragging\":false},{\"width\":384,\"height\":328,\"id\":\"CustomComponent-bCuc0\",\"type\":\"genericNode\",\"position\":{\"x\":1747.8107777342625,\"y\":319.13729017446667},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\n\\nclass Component(CustomComponent):\\n display_name: str = \\\"Custom Component\\\"\\n description: str = \\\"Create any custom component you want!\\\"\\n documentation: str = \\\"http://docs.langflow.org/components/custom\\\"\\n\\n def build_config(self):\\n return {\\\"param\\\": {\\\"display_name\\\": \\\"Parameter\\\"}}\\n\\n def build(self, param: Chain) -> str:\\n result = param.run({})\\n self.status = result\\n return result\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"param\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"param\",\"display_name\":\"Parameter\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Chain\",\"list\":false}},\"description\":\"Create any custom component you want!\",\"base_classes\":[\"str\"],\"display_name\":\"Custom Component\",\"custom_fields\":{\"param\":null},\"output_types\":[\"str\"],\"documentation\":\"http://docs.langflow.org/components/custom\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-bCuc0\"},\"selected\":false,\"positionAbsolute\":{\"x\":1747.8107777342625,\"y\":319.13729017446667}}],\"edges\":[{\"source\":\"LLMChain-KlJb3\",\"target\":\"CustomComponent-bCuc0\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“Chainล“,ล“Callableล“],ล“dataTypeล“:ล“LLMChainล“,ล“idล“:ล“LLMChain-KlJb3ล“}\",\"targetHandle\":\"{ล“fieldNameล“:ล“paramล“,ล“idล“:ล“CustomComponent-bCuc0ล“,ล“inputTypesล“:null,ล“typeล“:ล“Chainล“}\",\"id\":\"reactflow__edge-LLMChain-KlJb3{ล“baseClassesล“:[ล“Chainล“,ล“Callableล“],ล“dataTypeล“:ล“LLMChainล“,ล“idล“:ล“LLMChain-KlJb3ล“}-CustomComponent-bCuc0{ล“fieldNameล“:ล“paramล“,ล“idล“:ล“CustomComponent-bCuc0ล“,ล“inputTypesล“:null,ล“typeล“:ล“Chainล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"param\",\"id\":\"CustomComponent-bCuc0\",\"inputTypes\":null,\"type\":\"Chain\"},\"sourceHandle\":{\"baseClasses\":[\"Chain\",\"Callable\"],\"dataType\":\"LLMChain\",\"id\":\"LLMChain-KlJb3\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"selected\":false},{\"source\":\"ChatOpenAI-urapv\",\"target\":\"LLMChain-KlJb3\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“ChatOpenAIล“,ล“BaseChatModelล“,ล“BaseLanguageModelล“,ล“BaseLLMล“],ล“dataTypeล“:ล“ChatOpenAIล“,ล“idล“:ล“ChatOpenAI-urapvล“}\",\"targetHandle\":\"{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“LLMChain-KlJb3ล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLanguageModelล“}\",\"id\":\"reactflow__edge-ChatOpenAI-urapv{ล“baseClassesล“:[ล“ChatOpenAIล“,ล“BaseChatModelล“,ล“BaseLanguageModelล“,ล“BaseLLMล“],ล“dataTypeล“:ล“ChatOpenAIล“,ล“idล“:ล“ChatOpenAI-urapvล“}-LLMChain-KlJb3{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“LLMChain-KlJb3ล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLanguageModelล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"LLMChain-KlJb3\",\"inputTypes\":null,\"type\":\"BaseLanguageModel\"},\"sourceHandle\":{\"baseClasses\":[\"ChatOpenAI\",\"BaseChatModel\",\"BaseLanguageModel\",\"BaseLLM\"],\"dataType\":\"ChatOpenAI\",\"id\":\"ChatOpenAI-urapv\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"selected\":false},{\"source\":\"PromptTemplate-m2yFu\",\"target\":\"LLMChain-KlJb3\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“PromptTemplateล“,ล“StringPromptTemplateล“,ล“BasePromptTemplateล“],ล“dataTypeล“:ล“PromptTemplateล“,ล“idล“:ล“PromptTemplate-m2yFuล“}\",\"targetHandle\":\"{ล“fieldNameล“:ล“promptล“,ล“idล“:ล“LLMChain-KlJb3ล“,ล“inputTypesล“:null,ล“typeล“:ล“BasePromptTemplateล“}\",\"id\":\"reactflow__edge-PromptTemplate-m2yFu{ล“baseClassesล“:[ล“PromptTemplateล“,ล“StringPromptTemplateล“,ล“BasePromptTemplateล“],ล“dataTypeล“:ล“PromptTemplateล“,ล“idล“:ล“PromptTemplate-m2yFuล“}-LLMChain-KlJb3{ล“fieldNameล“:ล“promptล“,ล“idล“:ล“LLMChain-KlJb3ล“,ล“inputTypesล“:null,ล“typeล“:ล“BasePromptTemplateล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"prompt\",\"id\":\"LLMChain-KlJb3\",\"inputTypes\":null,\"type\":\"BasePromptTemplate\"},\"sourceHandle\":{\"baseClasses\":[\"PromptTemplate\",\"StringPromptTemplate\",\"BasePromptTemplate\"],\"dataType\":\"PromptTemplate\",\"id\":\"PromptTemplate-m2yFu\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"selected\":false},{\"source\":\"CustomComponent-bCuc0\",\"target\":\"CustomComponent-IEIUl\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-bCuc0ล“}\",\"targetHandle\":\"{ล“fieldNameล“:ล“promptล“,ล“idล“:ล“CustomComponent-IEIUlล“,ล“inputTypesล“:[ล“strล“],ล“typeล“:ล“strล“}\",\"id\":\"reactflow__edge-CustomComponent-bCuc0{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-bCuc0ล“}-CustomComponent-IEIUl{ล“fieldNameล“:ล“promptล“,ล“idล“:ล“CustomComponent-IEIUlล“,ล“inputTypesล“:[ล“strล“],ล“typeล“:ล“strล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"prompt\",\"id\":\"CustomComponent-IEIUl\",\"inputTypes\":[\"str\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-bCuc0\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"selected\":false}],\"viewport\":{\"x\":92.23454077990459,\"y\":183.8125619056221,\"zoom\":0.6070974421975234}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:33:18.503954\",\"folder\":null,\"id\":\"fe142ce5-32dc-4955-b186-672ced662f13\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Goofy Darwin\",\"description\":\"Conversation Catalyst Engine.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":626,\"id\":\"OpenAI-3ZVDh\",\"type\":\"genericNode\",\"position\":{\"x\":-4.0041891741949485,\"y\":-114.02615182719649},\"data\":{\"type\":\"OpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain_core.callbacks.base.BaseCallbackHandler\",\"list\":true},\"allowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":[],\"password\":false,\"name\":\"allowed_special\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"batch_size\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":20,\"password\":false,\"name\":\"batch_size\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"best_of\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"best_of\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"disallowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"all\",\"password\":false,\"name\":\"disallowed_special\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"frequency_penalty\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":0,\"password\":false,\"name\":\"frequency_penalty\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"logit_bias\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"logit_bias\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":256,\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"text-davinci-003\",\"password\":false,\"options\":[\"text-davinci-003\",\"text-davinci-002\",\"text-curie-001\",\"text-babbage-001\",\"text-ada-001\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"sk-...\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"presence_penalty\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":0,\"password\":false,\"name\":\"presence_penalty\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":0.7,\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"top_p\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"top_p\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"OpenAI\"},\"description\":\"OpenAI large language models.\",\"base_classes\":[\"OpenAI\",\"BaseLLM\",\"BaseOpenAI\",\"BaseLanguageModel\"],\"display_name\":\"OpenAI\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/llms/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"OpenAI-3ZVDh\"},\"selected\":true,\"positionAbsolute\":{\"x\":-4.0041891741949485,\"y\":-114.02615182719649},\"dragging\":false},{\"width\":384,\"height\":338,\"id\":\"LLMChain-RFYXY\",\"type\":\"genericNode\",\"position\":{\"x\":586.672100458868,\"y\":10.967049167706678},\"data\":{\"type\":\"LLMChain\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Callable, Optional, Union\\n\\nfrom langchain.chains import LLMChain\\n\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import (\\n BaseLanguageModel,\\n BaseMemory,\\n BasePromptTemplate,\\n Chain,\\n)\\n\\n\\nclass LLMChainComponent(CustomComponent):\\n display_name = \\\"LLMChain\\\"\\n description = \\\"Chain to run queries against LLMs\\\"\\n\\n def build_config(self):\\n return {\\n \\\"prompt\\\": {\\\"display_name\\\": \\\"Prompt\\\"},\\n \\\"llm\\\": {\\\"display_name\\\": \\\"LLM\\\"},\\n \\\"memory\\\": {\\\"display_name\\\": \\\"Memory\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n prompt: BasePromptTemplate,\\n llm: BaseLanguageModel,\\n memory: Optional[BaseMemory] = None,\\n ) -> Union[Chain, Callable]:\\n return LLMChain(prompt=prompt, llm=llm, memory=memory)\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"display_name\":\"Memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseMemory\",\"list\":false},\"prompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"prompt\",\"display_name\":\"Prompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BasePromptTemplate\",\"list\":false}},\"description\":\"Chain to run queries against LLMs\",\"base_classes\":[\"Chain\",\"Callable\"],\"display_name\":\"LLMChain\",\"custom_fields\":{\"llm\":null,\"memory\":null,\"prompt\":null},\"output_types\":[\"LLMChain\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"LLMChain-RFYXY\"},\"positionAbsolute\":{\"x\":586.672100458868,\"y\":10.967049167706678}},{\"width\":384,\"height\":242,\"id\":\"ChatPromptTemplate-ce1sg\",\"type\":\"genericNode\",\"position\":{\"x\":395.598984452791,\"y\":612.188491773035},\"data\":{\"type\":\"ChatPromptTemplate\",\"node\":{\"template\":{\"messages\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"messages\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseMessagePromptTemplate\",\"list\":true},\"output_parser\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false},\"input_types\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"input_variables\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true},\"partial_variables\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"validate_template\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ChatPromptTemplate\"},\"description\":\"A prompt template for chat models.\",\"base_classes\":[\"ChatPromptTemplate\",\"BaseChatPromptTemplate\",\"BasePromptTemplate\"],\"display_name\":\"ChatPromptTemplate\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/chat/how_to/prompts\",\"beta\":false,\"error\":null},\"id\":\"ChatPromptTemplate-ce1sg\"},\"selected\":false,\"positionAbsolute\":{\"x\":395.598984452791,\"y\":612.188491773035},\"dragging\":false}],\"edges\":[{\"source\":\"OpenAI-3ZVDh\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“OpenAIล“,ล“BaseLLMล“,ล“BaseOpenAIล“,ล“BaseLanguageModelล“],ล“dataTypeล“:ล“OpenAIล“,ล“idล“:ล“OpenAI-3ZVDhล“}\",\"target\":\"LLMChain-RFYXY\",\"targetHandle\":\"{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“LLMChain-RFYXYล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLanguageModelล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"LLMChain-RFYXY\",\"inputTypes\":null,\"type\":\"BaseLanguageModel\"},\"sourceHandle\":{\"baseClasses\":[\"OpenAI\",\"BaseLLM\",\"BaseOpenAI\",\"BaseLanguageModel\"],\"dataType\":\"OpenAI\",\"id\":\"OpenAI-3ZVDh\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-OpenAI-3ZVDh{ล“baseClassesล“:[ล“OpenAIล“,ล“BaseLLMล“,ล“BaseOpenAIล“,ล“BaseLanguageModelล“],ล“dataTypeล“:ล“OpenAIล“,ล“idล“:ล“OpenAI-3ZVDhล“}-LLMChain-RFYXY{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“LLMChain-RFYXYล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLanguageModelล“}\"},{\"source\":\"ChatPromptTemplate-ce1sg\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“ChatPromptTemplateล“,ล“BaseChatPromptTemplateล“,ล“BasePromptTemplateล“],ล“dataTypeล“:ล“ChatPromptTemplateล“,ล“idล“:ล“ChatPromptTemplate-ce1sgล“}\",\"target\":\"LLMChain-RFYXY\",\"targetHandle\":\"{ล“fieldNameล“:ล“promptล“,ล“idล“:ล“LLMChain-RFYXYล“,ล“inputTypesล“:null,ล“typeล“:ล“BasePromptTemplateล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"prompt\",\"id\":\"LLMChain-RFYXY\",\"inputTypes\":null,\"type\":\"BasePromptTemplate\"},\"sourceHandle\":{\"baseClasses\":[\"ChatPromptTemplate\",\"BaseChatPromptTemplate\",\"BasePromptTemplate\"],\"dataType\":\"ChatPromptTemplate\",\"id\":\"ChatPromptTemplate-ce1sg\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-ChatPromptTemplate-ce1sg{ล“baseClassesล“:[ล“ChatPromptTemplateล“,ล“BaseChatPromptTemplateล“,ล“BasePromptTemplateล“],ล“dataTypeล“:ล“ChatPromptTemplateล“,ล“idล“:ล“ChatPromptTemplate-ce1sgล“}-LLMChain-RFYXY{ล“fieldNameล“:ล“promptล“,ล“idล“:ล“LLMChain-RFYXYล“,ล“inputTypesล“:null,ล“typeล“:ล“BasePromptTemplateล“}\"}],\"viewport\":{\"x\":8.832868402772647,\"y\":189.85443326477025,\"zoom\":0.6070974421975235}},\"is_component\":false,\"updated_at\":\"2023-12-04T22:50:19.584160\",\"folder\":null,\"id\":\"103766f0-1f50-427a-9ba7-2ab73343c524\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Perky Easley\",\"description\":\"Your Toolkit for Text Generation.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":626,\"id\":\"ChatOpenAI-VPh47\",\"type\":\"genericNode\",\"position\":{\"x\":-328.5742193020408,\"y\":-420.1025929438987},\"data\":{\"type\":\"ChatOpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain_core.callbacks.base.BaseCallbackHandler\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"gpt-3.5-turbo\",\"password\":false,\"options\":[\"gpt-4-1106-preview\",\"gpt-4\",\"gpt-4-32k\",\"gpt-3.5-turbo\",\"gpt-3.5-turbo-16k\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"sk-...\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":0.7,\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ChatOpenAI\"},\"description\":\"`OpenAI` Chat large language models API.\",\"base_classes\":[\"BaseChatModel\",\"ChatOpenAI\",\"BaseLanguageModel\",\"BaseLLM\"],\"display_name\":\"ChatOpenAI\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"ChatOpenAI-VPh47\"},\"selected\":false,\"positionAbsolute\":{\"x\":-328.5742193020408,\"y\":-420.1025929438987},\"dragging\":false},{\"width\":384,\"height\":338,\"id\":\"LLMChain-NgFyo\",\"type\":\"genericNode\",\"position\":{\"x\":225.3113389084088,\"y\":-193.3520019494289},\"data\":{\"type\":\"LLMChain\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Callable, Optional, Union\\n\\nfrom langchain.chains import LLMChain\\n\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import (\\n BaseLanguageModel,\\n BaseMemory,\\n BasePromptTemplate,\\n Chain,\\n)\\n\\n\\nclass LLMChainComponent(CustomComponent):\\n display_name = \\\"LLMChain\\\"\\n description = \\\"Chain to run queries against LLMs\\\"\\n\\n def build_config(self):\\n return {\\n \\\"prompt\\\": {\\\"display_name\\\": \\\"Prompt\\\"},\\n \\\"llm\\\": {\\\"display_name\\\": \\\"LLM\\\"},\\n \\\"memory\\\": {\\\"display_name\\\": \\\"Memory\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n prompt: BasePromptTemplate,\\n llm: BaseLanguageModel,\\n memory: Optional[BaseMemory] = None,\\n ) -> Union[Chain, Callable]:\\n return LLMChain(prompt=prompt, llm=llm, memory=memory)\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"display_name\":\"Memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseMemory\",\"list\":false},\"prompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"prompt\",\"display_name\":\"Prompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BasePromptTemplate\",\"list\":false}},\"description\":\"Chain to run queries against LLMs\",\"base_classes\":[\"Chain\",\"Callable\"],\"display_name\":\"LLMChain\",\"custom_fields\":{\"llm\":null,\"memory\":null,\"prompt\":null},\"output_types\":[\"LLMChain\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"LLMChain-NgFyo\"},\"selected\":false,\"positionAbsolute\":{\"x\":225.3113389084088,\"y\":-193.3520019494289},\"dragging\":false},{\"width\":384,\"height\":374,\"id\":\"PromptTemplate-oAFjh\",\"type\":\"genericNode\",\"position\":{\"x\":-342.62522294052764,\"y\":391.20629510686103},\"data\":{\"type\":\"PromptTemplate\",\"node\":{\"template\":{\"output_parser\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false},\"input_types\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"input_variables\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"links\"]},\"partial_variables\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"template\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"prompt\",\"list\":false,\"value\":\"Answer everything with links\\n{links}\"},\"template_format\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"f-string\",\"password\":false,\"name\":\"template_format\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":false},\"validate_template\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"PromptTemplate\",\"links\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"links\",\"display_name\":\"links\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"A prompt template for a language model.\",\"base_classes\":[\"BasePromptTemplate\",\"StringPromptTemplate\",\"PromptTemplate\"],\"name\":\"\",\"display_name\":\"PromptTemplate\",\"documentation\":\"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\"custom_fields\":{\"\":[\"links\"]},\"output_types\":[],\"full_path\":null,\"field_formatters\":{},\"beta\":false,\"error\":null},\"id\":\"PromptTemplate-oAFjh\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":-342.62522294052764,\"y\":391.20629510686103}}],\"edges\":[{\"source\":\"ChatOpenAI-VPh47\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“BaseChatModelล“,ล“ChatOpenAIล“,ล“BaseLanguageModelล“,ล“BaseLLMล“],ล“dataTypeล“:ล“ChatOpenAIล“,ล“idล“:ล“ChatOpenAI-VPh47ล“}\",\"target\":\"LLMChain-NgFyo\",\"targetHandle\":\"{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“LLMChain-NgFyoล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLanguageModelล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"LLMChain-NgFyo\",\"inputTypes\":null,\"type\":\"BaseLanguageModel\"},\"sourceHandle\":{\"baseClasses\":[\"BaseChatModel\",\"ChatOpenAI\",\"BaseLanguageModel\",\"BaseLLM\"],\"dataType\":\"ChatOpenAI\",\"id\":\"ChatOpenAI-VPh47\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-ChatOpenAI-VPh47{ล“baseClassesล“:[ล“BaseChatModelล“,ล“ChatOpenAIล“,ล“BaseLanguageModelล“,ล“BaseLLMล“],ล“dataTypeล“:ล“ChatOpenAIล“,ล“idล“:ล“ChatOpenAI-VPh47ล“}-LLMChain-NgFyo{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“LLMChain-NgFyoล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLanguageModelล“}\"},{\"source\":\"PromptTemplate-oAFjh\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“BasePromptTemplateล“,ล“StringPromptTemplateล“,ล“PromptTemplateล“],ล“dataTypeล“:ล“PromptTemplateล“,ล“idล“:ล“PromptTemplate-oAFjhล“}\",\"target\":\"LLMChain-NgFyo\",\"targetHandle\":\"{ล“fieldNameล“:ล“promptล“,ล“idล“:ล“LLMChain-NgFyoล“,ล“inputTypesล“:null,ล“typeล“:ล“BasePromptTemplateล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"prompt\",\"id\":\"LLMChain-NgFyo\",\"inputTypes\":null,\"type\":\"BasePromptTemplate\"},\"sourceHandle\":{\"baseClasses\":[\"BasePromptTemplate\",\"StringPromptTemplate\",\"PromptTemplate\"],\"dataType\":\"PromptTemplate\",\"id\":\"PromptTemplate-oAFjh\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-PromptTemplate-oAFjh{ล“baseClassesล“:[ล“BasePromptTemplateล“,ล“StringPromptTemplateล“,ล“PromptTemplateล“],ล“dataTypeล“:ล“PromptTemplateล“,ล“idล“:ล“PromptTemplate-oAFjhล“}-LLMChain-NgFyo{ล“fieldNameล“:ล“promptล“,ล“idล“:ล“LLMChain-NgFyoล“,ล“inputTypesล“:null,ล“typeล“:ล“BasePromptTemplateล“}\"}],\"viewport\":{\"x\":338.6546182690814,\"y\":53.026340800283265,\"zoom\":0.7169776240079143}},\"is_component\":false,\"updated_at\":\"2023-12-04T22:53:25.148460\",\"folder\":null,\"id\":\"a794fc48-5e9b-42a3-924f-7fe610500035\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"(D) Basic Chat (1) (4)\",\"description\":\"Simplest possible chat model\",\"data\":{\"nodes\":[{\"width\":384,\"height\":626,\"id\":\"ChatOpenAI-fBcfh\",\"type\":\"genericNode\",\"position\":{\"x\":228.87326389541306,\"y\":465.8628482073749},\"data\":{\"type\":\"ChatOpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain.callbacks.base.BaseCallbackHandler\",\"list\":true},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":6,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"gpt-3.5-turbo\",\"password\":false,\"options\":[\"gpt-3.5-turbo-0613\",\"gpt-3.5-turbo\",\"gpt-3.5-turbo-16k-0613\",\"gpt-3.5-turbo-16k\",\"gpt-4-0613\",\"gpt-4-32k-0613\",\"gpt-4\",\"gpt-4-32k\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"sk-...\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false,\"value\":60},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":0.7,\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ChatOpenAI\"},\"description\":\"`OpenAI` Chat large language models API.\",\"base_classes\":[\"BaseChatModel\",\"BaseLanguageModel\",\"ChatOpenAI\",\"BaseLLM\"],\"display_name\":\"ChatOpenAI\",\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai\"},\"id\":\"ChatOpenAI-fBcfh\",\"value\":null},\"selected\":false,\"dragging\":false,\"positionAbsolute\":{\"x\":228.87326389541306,\"y\":465.8628482073749}},{\"width\":384,\"height\":310,\"id\":\"ConversationChain-bVNex\",\"type\":\"genericNode\",\"position\":{\"x\":806,\"y\":554},\"data\":{\"type\":\"ConversationChain\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain.callbacks.base.BaseCallbackHandler\",\"list\":true},\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseMemory\",\"list\":false},\"output_parser\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":{\"_type\":\"default\"},\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLLMOutputParser\",\"list\":false},\"prompt\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":{\"input_variables\":[\"history\",\"input\"],\"output_parser\":null,\"partial_variables\":{},\"template\":\"The following is a friendly conversation between a human and an AI. The AI is talkative and provides lots of specific details from its context. If the AI does not know the answer to a question, it truthfully says it does not know.\\n\\nCurrent conversation:\\n{history}\\nHuman: {input}\\nAI:\",\"template_format\":\"f-string\",\"validate_template\":true,\"_type\":\"prompt\"},\"password\":false,\"name\":\"prompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BasePromptTemplate\",\"list\":false},\"input_key\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"input\",\"password\":false,\"name\":\"input_key\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"llm_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"llm_kwargs\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"output_key\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"response\",\"password\":false,\"name\":\"output_key\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"return_final_only\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":true,\"password\":false,\"name\":\"return_final_only\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ConversationChain\"},\"description\":\"Chain to have a conversation and load context from memory.\",\"base_classes\":[\"ConversationChain\",\"Chain\",\"LLMChain\",\"function\"],\"display_name\":\"ConversationChain\",\"documentation\":\"\"},\"id\":\"ConversationChain-bVNex\",\"value\":null},\"selected\":false,\"dragging\":false,\"positionAbsolute\":{\"x\":806,\"y\":554}}],\"edges\":[{\"source\":\"ChatOpenAI-fBcfh\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“BaseChatModelล“,ล“BaseLanguageModelล“,ล“ChatOpenAIล“,ล“BaseLLMล“],ล“dataTypeล“:ล“ChatOpenAIล“,ล“idล“:ล“ChatOpenAI-fBcfhล“}\",\"target\":\"ConversationChain-bVNex\",\"targetHandle\":\"{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“ConversationChain-bVNexล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLanguageModelล“}\",\"className\":\"stroke-gray-900 stroke-connection\",\"id\":\"reactflow__edge-ChatOpenAI-fBcfh{ล“baseClassesล“:[ล“BaseChatModelล“,ล“BaseLanguageModelล“,ล“ChatOpenAIล“,ล“BaseLLMล“],ล“dataTypeล“:ล“ChatOpenAIล“,ล“idล“:ล“ChatOpenAI-fBcfhล“}-ConversationChain-bVNex{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“ConversationChain-bVNexล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLanguageModelล“}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"BaseChatModel\",\"BaseLanguageModel\",\"ChatOpenAI\",\"BaseLLM\"],\"dataType\":\"ChatOpenAI\",\"id\":\"ChatOpenAI-fBcfh\"},\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"ConversationChain-bVNex\",\"inputTypes\":null,\"type\":\"BaseLanguageModel\"}},\"style\":{\"stroke\":\"#555\"},\"animated\":false}],\"viewport\":{\"x\":-118.21416568593895,\"y\":-240.64815770363373,\"zoom\":0.7642485855675408}},\"is_component\":false,\"updated_at\":\"2023-12-04T22:57:55.879806\",\"folder\":null,\"id\":\"bddebeea-b80a-4b28-8895-c4425687dcce\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Directory Loader\",\"description\":\"Generic File Loader\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"import os\\n\\nfrom langchain.schema import Document\\nfrom langflow import CustomComponent\\nimport glob\\n\\nclass DirectoryLoaderComponent(CustomComponent):\\n display_name: str = \\\"Directory Loader\\\"\\n description: str = \\\"Generic File Loader\\\"\\n beta = True\\n loaders_info = [\\n {\\n \\\"loader\\\": \\\"AirbyteJSONLoader\\\",\\n \\\"name\\\": \\\"Airbyte JSON (.jsonl)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.AirbyteJSONLoader\\\",\\n \\\"defaultFor\\\": [\\\"jsonl\\\"],\\n \\\"allowdTypes\\\": [\\\"jsonl\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"JSONLoader\\\",\\n \\\"name\\\": \\\"JSON (.json)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.JSONLoader\\\",\\n \\\"defaultFor\\\": [\\\"json\\\"],\\n \\\"allowdTypes\\\": [\\\"json\\\"],\\n \\\"kwargs\\\": {\\\"jq_schema\\\": \\\".\\\", \\\"text_content\\\": False}\\n },\\n {\\n \\\"loader\\\": \\\"BSHTMLLoader\\\",\\n \\\"name\\\": \\\"BeautifulSoup4 HTML (.html, .htm)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.BSHTMLLoader\\\",\\n \\\"allowdTypes\\\": [\\\"html\\\", \\\"htm\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"CSVLoader\\\",\\n \\\"name\\\": \\\"CSV (.csv)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.CSVLoader\\\",\\n \\\"defaultFor\\\": [\\\"csv\\\"],\\n \\\"allowdTypes\\\": [\\\"csv\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"CoNLLULoader\\\",\\n \\\"name\\\": \\\"CoNLL-U (.conllu)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.CoNLLULoader\\\",\\n \\\"defaultFor\\\": [\\\"conllu\\\"],\\n \\\"allowdTypes\\\": [\\\"conllu\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"EverNoteLoader\\\",\\n \\\"name\\\": \\\"EverNote (.enex)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.EverNoteLoader\\\",\\n \\\"defaultFor\\\": [\\\"enex\\\"],\\n \\\"allowdTypes\\\": [\\\"enex\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"FacebookChatLoader\\\",\\n \\\"name\\\": \\\"Facebook Chat (.json)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.FacebookChatLoader\\\",\\n \\\"allowdTypes\\\": [\\\"json\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"OutlookMessageLoader\\\",\\n \\\"name\\\": \\\"Outlook Message (.msg)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.OutlookMessageLoader\\\",\\n \\\"defaultFor\\\": [\\\"msg\\\"],\\n \\\"allowdTypes\\\": [\\\"msg\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"PyPDFLoader\\\",\\n \\\"name\\\": \\\"PyPDF (.pdf)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.PyPDFLoader\\\",\\n \\\"defaultFor\\\": [\\\"pdf\\\"],\\n \\\"allowdTypes\\\": [\\\"pdf\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"STRLoader\\\",\\n \\\"name\\\": \\\"Subtitle (.str)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.STRLoader\\\",\\n \\\"defaultFor\\\": [\\\"str\\\"],\\n \\\"allowdTypes\\\": [\\\"str\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"TextLoader\\\",\\n \\\"name\\\": \\\"Text (.txt)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.TextLoader\\\",\\n \\\"defaultFor\\\": [\\\"txt\\\"],\\n \\\"allowdTypes\\\": [\\\"txt\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"UnstructuredEmailLoader\\\",\\n \\\"name\\\": \\\"Unstructured Email (.eml)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.UnstructuredEmailLoader\\\",\\n \\\"defaultFor\\\": [\\\"eml\\\"],\\n \\\"allowdTypes\\\": [\\\"eml\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"UnstructuredHTMLLoader\\\",\\n \\\"name\\\": \\\"Unstructured HTML (.html, .htm)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.UnstructuredHTMLLoader\\\",\\n \\\"defaultFor\\\": [\\\"html\\\", \\\"htm\\\"],\\n \\\"allowdTypes\\\": [\\\"html\\\", \\\"htm\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"UnstructuredMarkdownLoader\\\",\\n \\\"name\\\": \\\"Unstructured Markdown (.md)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.UnstructuredMarkdownLoader\\\",\\n \\\"defaultFor\\\": [\\\"md\\\"],\\n \\\"allowdTypes\\\": [\\\"md\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"UnstructuredPowerPointLoader\\\",\\n \\\"name\\\": \\\"Unstructured PowerPoint (.pptx)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.UnstructuredPowerPointLoader\\\",\\n \\\"defaultFor\\\": [\\\"pptx\\\"],\\n \\\"allowdTypes\\\": [\\\"pptx\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"UnstructuredWordLoader\\\",\\n \\\"name\\\": \\\"Unstructured Word (.docx)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.UnstructuredWordLoader\\\",\\n \\\"defaultFor\\\": [\\\"docx\\\"],\\n \\\"allowdTypes\\\": [\\\"docx\\\"],\\n },\\n]\\n\\n\\n def build_config(self):\\n loader_options = [\\\"Automatic\\\"] + [\\n loader_info[\\\"name\\\"] for loader_info in self.loaders_info\\n ]\\n\\n file_types = []\\n suffixes = []\\n\\n for loader_info in self.loaders_info:\\n if \\\"allowedTypes\\\" in loader_info:\\n file_types.extend(loader_info[\\\"allowedTypes\\\"])\\n suffixes.extend([f\\\".{ext}\\\" for ext in loader_info[\\\"allowedTypes\\\"]])\\n\\n return {\\n \\\"directory_path\\\": {\\n \\\"display_name\\\": \\\"Directory Path\\\",\\n \\\"required\\\": True,\\n },\\n \\\"loader\\\": {\\n \\\"display_name\\\": \\\"Loader\\\",\\n \\\"is_list\\\": True,\\n \\\"required\\\": True,\\n \\\"options\\\": loader_options,\\n \\\"value\\\": \\\"Automatic\\\",\\n },\\n }\\n\\n def build(self, directory_path: str, loader: str) -> Document:\\n # Verifique se o diretรณrio existe\\n if not os.path.exists(directory_path):\\n raise ValueError(f\\\"Directory not found: {directory_path}\\\")\\n\\n files = glob.glob(directory_path + \\\"/*.*\\\")\\n\\n\\n loader_info = None\\n if loader == \\\"Automatic\\\":\\n for file in files:\\n file_type = file.split(\\\".\\\")[-1]\\n\\n\\n for info in self.loaders_info:\\n if \\\"defaultFor\\\" in info:\\n if file_type in info[\\\"defaultFor\\\"]:\\n loader_info = info\\n break\\n if loader_info:\\n break\\n\\n if not loader_info:\\n raise ValueError(\\n \\\"No default loader found for any file in the directory\\\"\\n )\\n\\n else:\\n for info in self.loaders_info:\\n if info[\\\"name\\\"] == loader:\\n loader_info = info\\n break\\n\\n if not loader_info:\\n raise ValueError(f\\\"Loader {loader} not found in the loader info list\\\")\\n\\n loader_import = loader_info[\\\"import\\\"]\\n module_name, class_name = loader_import.rsplit(\\\".\\\", 1)\\n\\n try:\\n # Importe o loader dinamicamente\\n loader_module = __import__(module_name, fromlist=[class_name])\\n loader_instance = getattr(loader_module, class_name)\\n except ImportError as e:\\n raise ValueError(\\n f\\\"Loader {loader} could not be imported\\\\nLoader info:\\\\n{loader_info}\\\"\\n ) from e\\n\\n results = []\\n for file in files:\\n file_path = os.path.join(directory_path, file)\\n kwargs = loader_info.get(\\\"kwargs\\\", {})\\n result = loader_instance(file_path=file_path, **kwargs).load()\\n results.append(result)\\n self.status = results\\n return results\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"directory_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"directory_path\",\"display_name\":\"Directory Path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"/Users/ogabrielluiz/Projects/langflow2/docs\"},\"loader\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"Automatic\",\"password\":false,\"options\":[\"Automatic\",\"Airbyte JSON (.jsonl)\",\"JSON (.json)\",\"BeautifulSoup4 HTML (.html, .htm)\",\"CSV (.csv)\",\"CoNLL-U (.conllu)\",\"EverNote (.enex)\",\"Facebook Chat (.json)\",\"Outlook Message (.msg)\",\"PyPDF (.pdf)\",\"Subtitle (.str)\",\"Text (.txt)\",\"Unstructured Email (.eml)\",\"Unstructured HTML (.html, .htm)\",\"Unstructured Markdown (.md)\",\"Unstructured PowerPoint (.pptx)\",\"Unstructured Word (.docx)\"],\"name\":\"loader\",\"display_name\":\"Loader\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true}},\"description\":\"Generic File Loader\",\"base_classes\":[\"Document\"],\"display_name\":\"Directory Loader\",\"custom_fields\":{\"directory_path\":null,\"loader\":null},\"output_types\":[\"Document\"],\"documentation\":\"\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"CustomComponent-Ip6tG\"},\"id\":\"CustomComponent-Ip6tG\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-04T22:58:38.570303\",\"folder\":null,\"id\":\"5fe4debc-b6a7-45d4-a694-c02d8aa93b08\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Whisper Transcriber\",\"description\":\"Converts audio to text using OpenAI's Whisper.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom typing import Optional, List, Dict, Union\\nfrom langflow.field_typing import (\\n AgentExecutor,\\n BaseChatMemory,\\n BaseLanguageModel,\\n BaseLLM,\\n BaseLoader,\\n BaseMemory,\\n BaseOutputParser,\\n BasePromptTemplate,\\n BaseRetriever,\\n Callable,\\n Chain,\\n ChatPromptTemplate,\\n Data,\\n Document,\\n Embeddings,\\n NestedDict,\\n Object,\\n PromptTemplate,\\n TextSplitter,\\n Tool,\\n VectorStore,\\n)\\n\\nfrom openai import OpenAI\\nclass Component(CustomComponent):\\n display_name: str = \\\"Whisper Transcriber\\\"\\n description: str = \\\"Converts audio to text using OpenAI's Whisper.\\\"\\n\\n def build_config(self):\\n return {\\\"audio\\\":{\\\"field_type\\\":\\\"file\\\",\\\"suffixes\\\":[\\\".mp3\\\", \\\".mp4\\\", \\\".m4a\\\"]},\\\"OpenAIKey\\\":{\\\"field_type\\\":\\\"str\\\",\\\"password\\\":True}}\\n\\n def build(self, audio:str, OpenAIKey:str) -> str:\\n \\n # TODO: if output path, persist & load it instead\\n \\n client = OpenAI(api_key=OpenAIKey)\\n \\n audio_file= open(audio, \\\"rb\\\")\\n transcript = client.audio.transcriptions.create(\\n model=\\\"whisper-1\\\", \\n file=audio_file,\\n response_format=\\\"text\\\"\\n )\\n \\n \\n self.status = transcript\\n return transcript\\n\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"OpenAIKey\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"OpenAIKey\",\"display_name\":\"OpenAIKey\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"audio\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"suffixes\":[\".mp3\",\".mp4\",\".m4a\"],\"password\":false,\"name\":\"audio\",\"display_name\":\"audio\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"file_path\":\"/Users/rodrigonader/Library/Caches/langflow/19b3e1c9-90bf-405f-898a-e982f47adf76/a3308ce7e9b10088fcd985aabb6d17b012c6b6e81ff8806356574474c9d10229.m4a\",\"value\":\"Audio Recording 2023-11-29 at 12.12.04.m4a\"}},\"description\":\"Converts audio to text using OpenAI's Whisper.\",\"base_classes\":[\"str\"],\"display_name\":\"Whisper Transcriber\",\"custom_fields\":{\"OpenAIKey\":null,\"audio\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"CustomComponent-GJRrs\"},\"id\":\"CustomComponent-GJRrs\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-04T22:58:39.710502\",\"folder\":null,\"id\":\"bd9e911d-46bd-429f-aa75-dd740430695e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Youtube Conversation\",\"description\":\"Craft Meaningful Interactions, Generate Value.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":589,\"id\":\"CustomComponent-h0NSI\",\"type\":\"genericNode\",\"position\":{\"x\":714.9531293402755,\"y\":0.4994374160582993},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"import requests\\nfrom langflow import CustomComponent\\nfrom langchain.llms.base import BaseLLM\\nfrom langchain.schema import Document\\nfrom langchain.document_loaders import YoutubeLoader\\n\\n# Example usage:\\n\\nclass YourComponent(CustomComponent):\\n display_name: str = \\\"YouTube Transcript\\\"\\n description: str = \\\"YouTube transcripts refer to the written text versions of the spoken content in a video uploaded to the YouTube platform.\\\"\\n\\n def build_config(self):\\n return {\\\"url\\\": {\\\"multiline\\\": True, \\\"required\\\": True}}\\n\\n def build(self, url: str, llm: BaseLLM, dependencies: Document, language: str = \\\"en\\\") -> Document:\\n dependencies\\n response = requests.get(url)\\n loader = YoutubeLoader.from_youtube_url(url, add_video_info=True, language=[language])\\n result = loader.load()\\n self.repr_value = str(result)\\n return result\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"dependencies\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"dependencies\",\"display_name\":\"dependencies\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Document\",\"list\":false},\"language\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"en\",\"password\":false,\"name\":\"language\",\"display_name\":\"language\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"llm\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLLM\",\"list\":false},\"url\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"YouTube transcripts refer to the written text versions of the spoken content in a video uploaded to the YouTube platform.\",\"base_classes\":[\"Document\"],\"display_name\":\"YouTube Transcript\",\"custom_fields\":{\"dependencies\":null,\"language\":null,\"llm\":null,\"url\":null},\"output_types\":[\"Document\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-h0NSI\"},\"selected\":false,\"dragging\":false,\"positionAbsolute\":{\"x\":714.9531293402755,\"y\":0.4994374160582993}},{\"width\":384,\"height\":629,\"id\":\"ChatOpenAI-q61Y2\",\"type\":\"genericNode\",\"position\":{\"x\":18,\"y\":625.5521045590924},\"data\":{\"type\":\"ChatOpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain.callbacks.base.BaseCallbackHandler\",\"list\":true},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":6,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false,\"value\":\"\"},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"gpt-3.5-turbo-16k\",\"password\":false,\"options\":[\"gpt-3.5-turbo-0613\",\"gpt-3.5-turbo\",\"gpt-3.5-turbo-16k-0613\",\"gpt-3.5-turbo-16k\",\"gpt-4-0613\",\"gpt-4-32k-0613\",\"gpt-4\",\"gpt-4-32k\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":0.7,\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ChatOpenAI\"},\"description\":\"`OpenAI` Chat large language models API.\",\"base_classes\":[\"ChatOpenAI\",\"BaseChatModel\",\"BaseLanguageModel\",\"BaseLLM\"],\"display_name\":\"ChatOpenAI\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"ChatOpenAI-q61Y2\"},\"selected\":false,\"positionAbsolute\":{\"x\":18,\"y\":625.5521045590924},\"dragging\":false},{\"width\":384,\"height\":539,\"id\":\"Chroma-gVhy7\",\"type\":\"genericNode\",\"position\":{\"x\":2110.365967257855,\"y\":805.0149521868784},\"data\":{\"type\":\"Chroma\",\"node\":{\"template\":{\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"chromadb.Client\",\"list\":false},\"client_settings\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client_settings\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"chromadb.config.Setting\",\"list\":true},\"documents\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"documents\",\"display_name\":\"Documents\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Document\",\"list\":true},\"embedding\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"embedding\",\"display_name\":\"Embedding\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Embeddings\",\"list\":false},\"chroma_server_cors_allow_origins\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"chroma_server_cors_allow_origins\",\"display_name\":\"Chroma Server CORS Allow Origins\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"chroma_server_grpc_port\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"chroma_server_grpc_port\",\"display_name\":\"Chroma Server GRPC Port\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"chroma_server_host\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"chroma_server_host\",\"display_name\":\"Chroma Server Host\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"chroma_server_http_port\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"chroma_server_http_port\",\"display_name\":\"Chroma Server HTTP Port\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"chroma_server_ssl_enabled\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"chroma_server_ssl_enabled\",\"display_name\":\"Chroma Server SSL Enabled\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"collection_metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"collection_metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"collection_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"langchain\",\"password\":false,\"name\":\"collection_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"ids\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"ids\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"metadatas\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadatas\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":true},\"persist\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"persist\",\"display_name\":\"Persist\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"persist_directory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"persist_directory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"search_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"{}\",\"password\":false,\"name\":\"search_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"NestedDict\",\"list\":false},\"_type\":\"Chroma\"},\"description\":\"Create a Chroma vectorstore from a raw documents.\",\"base_classes\":[\"VectorStore\",\"Chroma\",\"BaseRetriever\",\"VectorStoreRetriever\"],\"display_name\":\"Chroma\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/vectorstores/integrations/chroma\",\"beta\":false,\"error\":null},\"id\":\"Chroma-gVhy7\"},\"selected\":false,\"positionAbsolute\":{\"x\":2110.365967257855,\"y\":805.0149521868784},\"dragging\":false},{\"width\":384,\"height\":501,\"id\":\"RecursiveCharacterTextSplitter-1eaOX\",\"type\":\"genericNode\",\"position\":{\"x\":1409.2872773444874,\"y\":19.45456141103284},\"data\":{\"type\":\"RecursiveCharacterTextSplitter\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Optional\\nfrom langflow import CustomComponent\\nfrom langchain.schema import Document\\nfrom langflow.utils.util import build_loader_repr_from_documents\\n\\n\\nclass RecursiveCharacterTextSplitterComponent(CustomComponent):\\n display_name: str = \\\"Recursive Character Text Splitter\\\"\\n description: str = \\\"Split text into chunks of a specified length.\\\"\\n documentation: str = \\\"https://docs.langflow.org/components/text-splitters#recursivecharactertextsplitter\\\"\\n\\n def build_config(self):\\n return {\\n \\\"documents\\\": {\\n \\\"display_name\\\": \\\"Documents\\\",\\n \\\"info\\\": \\\"The documents to split.\\\",\\n },\\n \\\"separators\\\": {\\n \\\"display_name\\\": \\\"Separators\\\",\\n \\\"info\\\": 'The characters to split on.\\\\nIf left empty defaults to [\\\"\\\\\\\\n\\\\\\\\n\\\", \\\"\\\\\\\\n\\\", \\\" \\\", \\\"\\\"].',\\n \\\"is_list\\\": True,\\n },\\n \\\"chunk_size\\\": {\\n \\\"display_name\\\": \\\"Chunk Size\\\",\\n \\\"info\\\": \\\"The maximum length of each chunk.\\\",\\n \\\"field_type\\\": \\\"int\\\",\\n \\\"value\\\": 1000,\\n },\\n \\\"chunk_overlap\\\": {\\n \\\"display_name\\\": \\\"Chunk Overlap\\\",\\n \\\"info\\\": \\\"The amount of overlap between chunks.\\\",\\n \\\"field_type\\\": \\\"int\\\",\\n \\\"value\\\": 200,\\n },\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n documents: list[Document],\\n separators: Optional[list[str]] = None,\\n chunk_size: Optional[int] = 1000,\\n chunk_overlap: Optional[int] = 200,\\n ) -> list[Document]:\\n \\\"\\\"\\\"\\n Split text into chunks of a specified length.\\n\\n Args:\\n separators (list[str]): The characters to split on.\\n chunk_size (int): The maximum length of each chunk.\\n chunk_overlap (int): The amount of overlap between chunks.\\n length_function (function): The function to use to calculate the length of the text.\\n\\n Returns:\\n list[str]: The chunks of text.\\n \\\"\\\"\\\"\\n from langchain.text_splitter import RecursiveCharacterTextSplitter\\n\\n if separators == \\\"\\\":\\n separators = None\\n elif separators:\\n # check if the separators list has escaped characters\\n # if there are escaped characters, unescape them\\n separators = [x.encode().decode(\\\"unicode-escape\\\") for x in separators]\\n\\n # Make sure chunk_size and chunk_overlap are ints\\n if isinstance(chunk_size, str):\\n chunk_size = int(chunk_size)\\n if isinstance(chunk_overlap, str):\\n chunk_overlap = int(chunk_overlap)\\n splitter = RecursiveCharacterTextSplitter(\\n separators=separators,\\n chunk_size=chunk_size,\\n chunk_overlap=chunk_overlap,\\n )\\n\\n docs = splitter.split_documents(documents)\\n self.repr_value = build_loader_repr_from_documents(docs)\\n return docs\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"chunk_overlap\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"50\",\"password\":false,\"name\":\"chunk_overlap\",\"display_name\":\"Chunk Overlap\",\"advanced\":false,\"dynamic\":false,\"info\":\"The amount of overlap between chunks.\",\"type\":\"int\",\"list\":false},\"chunk_size\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"400\",\"password\":false,\"name\":\"chunk_size\",\"display_name\":\"Chunk Size\",\"advanced\":false,\"dynamic\":false,\"info\":\"The maximum length of each chunk.\",\"type\":\"int\",\"list\":false},\"documents\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"documents\",\"display_name\":\"Documents\",\"advanced\":false,\"dynamic\":false,\"info\":\"The documents to split.\",\"type\":\"Document\",\"list\":true},\"separators\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"separators\",\"display_name\":\"Separators\",\"advanced\":false,\"dynamic\":false,\"info\":\"The characters to split on.\\nIf left empty defaults to [\\\"\\\\n\\\\n\\\", \\\"\\\\n\\\", \\\" \\\", \\\"\\\"].\",\"type\":\"str\",\"list\":true,\"value\":[\" \"]}},\"description\":\"Split text into chunks of a specified length.\",\"base_classes\":[\"Document\"],\"display_name\":\"Recursive Character Text Splitter\",\"custom_fields\":{\"chunk_overlap\":null,\"chunk_size\":null,\"documents\":null,\"separators\":null},\"output_types\":[\"RecursiveCharacterTextSplitter\"],\"documentation\":\"https://docs.langflow.org/components/text-splitters#recursivecharactertextsplitter\",\"beta\":true,\"error\":null},\"id\":\"RecursiveCharacterTextSplitter-1eaOX\"},\"selected\":false,\"positionAbsolute\":{\"x\":1409.2872773444874,\"y\":19.45456141103284},\"dragging\":false},{\"width\":384,\"height\":367,\"id\":\"OpenAIEmbeddings-cduOO\",\"type\":\"genericNode\",\"position\":{\"x\":1405.1176670984544,\"y\":1029.459061269321},\"data\":{\"type\":\"OpenAIEmbeddings\",\"node\":{\"template\":{\"allowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[],\"password\":false,\"name\":\"allowed_special\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Literal'all'\",\"list\":true},\"disallowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"all\",\"password\":false,\"name\":\"disallowed_special\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Literal'all'\",\"list\":true},\"chunk_size\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":1000,\"password\":false,\"name\":\"chunk_size\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"deployment\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"text-embedding-ada-002\",\"password\":false,\"name\":\"deployment\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"embedding_ctx_length\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":8191,\"password\":false,\"name\":\"embedding_ctx_length\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"{'Authorization': 'Bearer '}\",\"password\":false,\"name\":\"headers\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":6,\"password\":false,\"name\":\"max_retries\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"model\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"text-embedding-ada-002\",\"password\":false,\"name\":\"model\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_api_type\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_type\",\"display_name\":\"OpenAI API Type\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"openai_api_version\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_version\",\"display_name\":\"OpenAI API Version\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"show_progress_bar\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"show_progress_bar\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"skip_empty\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"skip_empty\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"_type\":\"OpenAIEmbeddings\"},\"description\":\"OpenAI embedding models.\",\"base_classes\":[\"Embeddings\",\"OpenAIEmbeddings\"],\"display_name\":\"OpenAIEmbeddings\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"OpenAIEmbeddings-cduOO\"},\"selected\":false,\"positionAbsolute\":{\"x\":1405.1176670984544,\"y\":1029.459061269321}},{\"width\":384,\"height\":339,\"id\":\"RetrievalQA-4PmTB\",\"type\":\"genericNode\",\"position\":{\"x\":2711.7786966415715,\"y\":709.4450828605463},\"data\":{\"type\":\"RetrievalQA\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain.callbacks.base.BaseCallbackHandler\",\"list\":true},\"combine_documents_chain\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"combine_documents_chain\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseCombineDocumentsChain\",\"list\":false},\"memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseMemory\",\"list\":false},\"retriever\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"retriever\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseRetriever\",\"list\":false},\"input_key\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"query\",\"password\":false,\"name\":\"input_key\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"output_key\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"result\",\"password\":false,\"name\":\"output_key\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"return_source_documents\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":true,\"password\":false,\"name\":\"return_source_documents\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"RetrievalQA\"},\"description\":\"Chain for question-answering against an index.\",\"base_classes\":[\"RetrievalQA\",\"Chain\",\"BaseRetrievalQA\",\"function\"],\"display_name\":\"RetrievalQA\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/chains/popular/vector_db_qa\",\"beta\":false,\"error\":null},\"id\":\"RetrievalQA-4PmTB\"},\"selected\":false,\"positionAbsolute\":{\"x\":2711.7786966415715,\"y\":709.4450828605463}},{\"width\":384,\"height\":333,\"id\":\"CombineDocsChain-yk0JF\",\"type\":\"genericNode\",\"position\":{\"x\":2125.6202053356537,\"y\":199.07708924409633},\"data\":{\"type\":\"CombineDocsChain\",\"node\":{\"template\":{\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"chain_type\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"stuff\",\"password\":false,\"options\":[\"stuff\",\"map_reduce\",\"map_rerank\",\"refine\"],\"name\":\"chain_type\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"_type\":\"load_qa_chain\"},\"description\":\"Load question answering chain.\",\"base_classes\":[\"BaseCombineDocumentsChain\",\"function\"],\"display_name\":\"CombineDocsChain\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"\",\"beta\":false,\"error\":null},\"id\":\"CombineDocsChain-yk0JF\"},\"selected\":false,\"positionAbsolute\":{\"x\":2125.6202053356537,\"y\":199.07708924409633},\"dragging\":false},{\"width\":384,\"height\":417,\"id\":\"CustomComponent-y6Wg0\",\"type\":\"genericNode\",\"position\":{\"x\":39.400034102832365,\"y\":-499.03551482195707},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\n\\nimport subprocess\\n\\nfrom langchain.llms.base import BaseLLM\\nfrom langchain.chains import LLMChain\\nfrom langchain.prompts import PromptTemplate\\nfrom langchain.schema import Document\\n\\nfrom typing import List\\n\\n\\nclass YourComponent(CustomComponent):\\n display_name: str = \\\"PIP Install\\\"\\n description: str = \\\"Create any custom component you want!\\\"\\n\\n def build(self, libs: List[str]) -> Document:\\n def install_package(package_name):\\n subprocess.check_call([\\\"pip\\\", \\\"install\\\", package_name])\\n for lib in libs:\\n install_package(lib)\\n return \\\"\\\"\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"libs\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"libs\",\"display_name\":\"libs\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"requests\",\"pytube\"]}},\"description\":\"Create any custom component you want!\",\"base_classes\":[\"Document\"],\"display_name\":\"PIP Install\",\"custom_fields\":{\"libs\":null},\"output_types\":[],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-y6Wg0\"},\"selected\":false,\"dragging\":false,\"positionAbsolute\":{\"x\":39.400034102832365,\"y\":-499.03551482195707}}],\"edges\":[{\"source\":\"ChatOpenAI-q61Y2\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“ChatOpenAIล“,ล“BaseChatModelล“,ล“BaseLanguageModelล“,ล“BaseLLMล“],ล“dataTypeล“:ล“ChatOpenAIล“,ล“idล“:ล“ChatOpenAI-q61Y2ล“}\",\"target\":\"CustomComponent-h0NSI\",\"targetHandle\":\"{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“CustomComponent-h0NSIล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLLMล“}\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-ChatOpenAI-q61Y2{ล“baseClassesล“:[ล“ChatOpenAIล“,ล“BaseChatModelล“,ล“BaseLanguageModelล“,ล“BaseLLMล“],ล“dataTypeล“:ล“ChatOpenAIล“,ล“idล“:ล“ChatOpenAI-q61Y2ล“}-CustomComponent-h0NSI{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“CustomComponent-h0NSIล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLLMล“}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"ChatOpenAI\",\"BaseChatModel\",\"BaseLanguageModel\",\"BaseLLM\"],\"dataType\":\"ChatOpenAI\",\"id\":\"ChatOpenAI-q61Y2\"},\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"CustomComponent-h0NSI\",\"inputTypes\":null,\"type\":\"BaseLLM\"}}},{\"source\":\"CustomComponent-y6Wg0\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“Documentล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-y6Wg0ล“}\",\"target\":\"CustomComponent-h0NSI\",\"targetHandle\":\"{ล“fieldNameล“:ล“dependenciesล“,ล“idล“:ล“CustomComponent-h0NSIล“,ล“inputTypesล“:null,ล“typeล“:ล“Documentล“}\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-y6Wg0{ล“baseClassesล“:[ล“Documentล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-y6Wg0ล“}-CustomComponent-h0NSI{ล“fieldNameล“:ล“dependenciesล“,ล“idล“:ล“CustomComponent-h0NSIล“,ล“inputTypesล“:null,ล“typeล“:ล“Documentล“}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"Document\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-y6Wg0\"},\"targetHandle\":{\"fieldName\":\"dependencies\",\"id\":\"CustomComponent-h0NSI\",\"inputTypes\":null,\"type\":\"Document\"}}},{\"source\":\"CustomComponent-h0NSI\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“Documentล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-h0NSIล“}\",\"target\":\"RecursiveCharacterTextSplitter-1eaOX\",\"targetHandle\":\"{ล“fieldNameล“:ล“documentsล“,ล“idล“:ล“RecursiveCharacterTextSplitter-1eaOXล“,ล“inputTypesล“:null,ล“typeล“:ล“Documentล“}\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-h0NSI{ล“baseClassesล“:[ล“Documentล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-h0NSIล“}-RecursiveCharacterTextSplitter-1eaOX{ล“fieldNameล“:ล“documentsล“,ล“idล“:ล“RecursiveCharacterTextSplitter-1eaOXล“,ล“inputTypesล“:null,ล“typeล“:ล“Documentล“}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"Document\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-h0NSI\"},\"targetHandle\":{\"fieldName\":\"documents\",\"id\":\"RecursiveCharacterTextSplitter-1eaOX\",\"inputTypes\":null,\"type\":\"Document\"}},\"selected\":false},{\"source\":\"OpenAIEmbeddings-cduOO\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“Embeddingsล“,ล“OpenAIEmbeddingsล“],ล“dataTypeล“:ล“OpenAIEmbeddingsล“,ล“idล“:ล“OpenAIEmbeddings-cduOOล“}\",\"target\":\"Chroma-gVhy7\",\"targetHandle\":\"{ล“fieldNameล“:ล“embeddingล“,ล“idล“:ล“Chroma-gVhy7ล“,ล“inputTypesล“:null,ล“typeล“:ล“Embeddingsล“}\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-OpenAIEmbeddings-cduOO{ล“baseClassesล“:[ล“Embeddingsล“,ล“OpenAIEmbeddingsล“],ล“dataTypeล“:ล“OpenAIEmbeddingsล“,ล“idล“:ล“OpenAIEmbeddings-cduOOล“}-Chroma-gVhy7{ล“fieldNameล“:ล“embeddingล“,ล“idล“:ล“Chroma-gVhy7ล“,ล“inputTypesล“:null,ล“typeล“:ล“Embeddingsล“}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"Embeddings\",\"OpenAIEmbeddings\"],\"dataType\":\"OpenAIEmbeddings\",\"id\":\"OpenAIEmbeddings-cduOO\"},\"targetHandle\":{\"fieldName\":\"embedding\",\"id\":\"Chroma-gVhy7\",\"inputTypes\":null,\"type\":\"Embeddings\"}}},{\"source\":\"RecursiveCharacterTextSplitter-1eaOX\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“Documentล“],ล“dataTypeล“:ล“RecursiveCharacterTextSplitterล“,ล“idล“:ล“RecursiveCharacterTextSplitter-1eaOXล“}\",\"target\":\"Chroma-gVhy7\",\"targetHandle\":\"{ล“fieldNameล“:ล“documentsล“,ล“idล“:ล“Chroma-gVhy7ล“,ล“inputTypesล“:null,ล“typeล“:ล“Documentล“}\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-RecursiveCharacterTextSplitter-1eaOX{ล“baseClassesล“:[ล“Documentล“],ล“dataTypeล“:ล“RecursiveCharacterTextSplitterล“,ล“idล“:ล“RecursiveCharacterTextSplitter-1eaOXล“}-Chroma-gVhy7{ล“fieldNameล“:ล“documentsล“,ล“idล“:ล“Chroma-gVhy7ล“,ล“inputTypesล“:null,ล“typeล“:ล“Documentล“}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"Document\"],\"dataType\":\"RecursiveCharacterTextSplitter\",\"id\":\"RecursiveCharacterTextSplitter-1eaOX\"},\"targetHandle\":{\"fieldName\":\"documents\",\"id\":\"Chroma-gVhy7\",\"inputTypes\":null,\"type\":\"Document\"}}},{\"source\":\"ChatOpenAI-q61Y2\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“ChatOpenAIล“,ล“BaseChatModelล“,ล“BaseLanguageModelล“,ล“BaseLLMล“],ล“dataTypeล“:ล“ChatOpenAIล“,ล“idล“:ล“ChatOpenAI-q61Y2ล“}\",\"target\":\"CombineDocsChain-yk0JF\",\"targetHandle\":\"{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“CombineDocsChain-yk0JFล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLanguageModelล“}\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-ChatOpenAI-q61Y2{ล“baseClassesล“:[ล“ChatOpenAIล“,ล“BaseChatModelล“,ล“BaseLanguageModelล“,ล“BaseLLMล“],ล“dataTypeล“:ล“ChatOpenAIล“,ล“idล“:ล“ChatOpenAI-q61Y2ล“}-CombineDocsChain-yk0JF{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“CombineDocsChain-yk0JFล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLanguageModelล“}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"ChatOpenAI\",\"BaseChatModel\",\"BaseLanguageModel\",\"BaseLLM\"],\"dataType\":\"ChatOpenAI\",\"id\":\"ChatOpenAI-q61Y2\"},\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"CombineDocsChain-yk0JF\",\"inputTypes\":null,\"type\":\"BaseLanguageModel\"}}},{\"source\":\"CombineDocsChain-yk0JF\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“BaseCombineDocumentsChainล“,ล“functionล“],ล“dataTypeล“:ล“CombineDocsChainล“,ล“idล“:ล“CombineDocsChain-yk0JFล“}\",\"target\":\"RetrievalQA-4PmTB\",\"targetHandle\":\"{ล“fieldNameล“:ล“combine_documents_chainล“,ล“idล“:ล“RetrievalQA-4PmTBล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseCombineDocumentsChainล“}\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CombineDocsChain-yk0JF{ล“baseClassesล“:[ล“BaseCombineDocumentsChainล“,ล“functionล“],ล“dataTypeล“:ล“CombineDocsChainล“,ล“idล“:ล“CombineDocsChain-yk0JFล“}-RetrievalQA-4PmTB{ล“fieldNameล“:ล“combine_documents_chainล“,ล“idล“:ล“RetrievalQA-4PmTBล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseCombineDocumentsChainล“}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"BaseCombineDocumentsChain\",\"function\"],\"dataType\":\"CombineDocsChain\",\"id\":\"CombineDocsChain-yk0JF\"},\"targetHandle\":{\"fieldName\":\"combine_documents_chain\",\"id\":\"RetrievalQA-4PmTB\",\"inputTypes\":null,\"type\":\"BaseCombineDocumentsChain\"}}},{\"source\":\"Chroma-gVhy7\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“VectorStoreล“,ล“Chromaล“,ล“BaseRetrieverล“,ล“VectorStoreRetrieverล“],ล“dataTypeล“:ล“Chromaล“,ล“idล“:ล“Chroma-gVhy7ล“}\",\"target\":\"RetrievalQA-4PmTB\",\"targetHandle\":\"{ล“fieldNameล“:ล“retrieverล“,ล“idล“:ล“RetrievalQA-4PmTBล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseRetrieverล“}\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-Chroma-gVhy7{ล“baseClassesล“:[ล“VectorStoreล“,ล“Chromaล“,ล“BaseRetrieverล“,ล“VectorStoreRetrieverล“],ล“dataTypeล“:ล“Chromaล“,ล“idล“:ล“Chroma-gVhy7ล“}-RetrievalQA-4PmTB{ล“fieldNameล“:ล“retrieverล“,ล“idล“:ล“RetrievalQA-4PmTBล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseRetrieverล“}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"VectorStore\",\"Chroma\",\"BaseRetriever\",\"VectorStoreRetriever\"],\"dataType\":\"Chroma\",\"id\":\"Chroma-gVhy7\"},\"targetHandle\":{\"fieldName\":\"retriever\",\"id\":\"RetrievalQA-4PmTB\",\"inputTypes\":null,\"type\":\"BaseRetriever\"}}}],\"viewport\":{\"x\":189.54413265004274,\"y\":259.89949657174975,\"zoom\":0.291027508374689}},\"is_component\":false,\"updated_at\":\"2023-12-04T22:59:08.830269\",\"folder\":null,\"id\":\"bc7eb94b-6fc6-49cb-9b19-35347ba51afa\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Web Scraper - Content & Links\",\"description\":\"Fetch and parse text and links from a given URL.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":338,\"id\":\"LLMChain-H7PBy\",\"type\":\"genericNode\",\"position\":{\"x\":1682.494010974207,\"y\":275.5701585623092},\"data\":{\"type\":\"LLMChain\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Callable, Optional, Union\\n\\nfrom langchain.chains import LLMChain\\n\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import (\\n BaseLanguageModel,\\n BaseMemory,\\n BasePromptTemplate,\\n Chain,\\n)\\n\\n\\nclass LLMChainComponent(CustomComponent):\\n display_name = \\\"LLMChain\\\"\\n description = \\\"Chain to run queries against LLMs\\\"\\n\\n def build_config(self):\\n return {\\n \\\"prompt\\\": {\\\"display_name\\\": \\\"Prompt\\\"},\\n \\\"llm\\\": {\\\"display_name\\\": \\\"LLM\\\"},\\n \\\"memory\\\": {\\\"display_name\\\": \\\"Memory\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n prompt: BasePromptTemplate,\\n llm: BaseLanguageModel,\\n memory: Optional[BaseMemory] = None,\\n ) -> Union[Chain, Callable]:\\n return LLMChain(prompt=prompt, llm=llm, memory=memory)\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"display_name\":\"Memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseMemory\",\"list\":false},\"prompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"prompt\",\"display_name\":\"Prompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BasePromptTemplate\",\"list\":false}},\"description\":\"Chain to run queries against LLMs\",\"base_classes\":[\"Chain\",\"Callable\"],\"display_name\":\"LLMChain\",\"custom_fields\":{\"llm\":null,\"memory\":null,\"prompt\":null},\"output_types\":[\"LLMChain\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"LLMChain-H7PBy\"},\"selected\":false,\"positionAbsolute\":{\"x\":1682.494010974207,\"y\":275.5701585623092},\"dragging\":false},{\"width\":384,\"height\":626,\"id\":\"ChatOpenAI-VSAdc\",\"type\":\"genericNode\",\"position\":{\"x\":1002.4263147022411,\"y\":-198.2305006886859},\"data\":{\"type\":\"ChatOpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain_core.callbacks.base.BaseCallbackHandler\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false,\"value\":\"\"},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"gpt-4-1106-preview\",\"password\":false,\"options\":[\"gpt-4-1106-preview\",\"gpt-4\",\"gpt-4-32k\",\"gpt-3.5-turbo\",\"gpt-3.5-turbo-16k\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"sk-...\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"0.1\",\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ChatOpenAI\"},\"description\":\"`OpenAI` Chat large language models API.\",\"base_classes\":[\"BaseLanguageModel\",\"ChatOpenAI\",\"BaseChatModel\",\"BaseLLM\"],\"display_name\":\"ChatOpenAI\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"ChatOpenAI-VSAdc\"},\"selected\":false,\"dragging\":false,\"positionAbsolute\":{\"x\":1002.4263147022411,\"y\":-198.2305006886859}},{\"width\":384,\"height\":374,\"data\":{\"id\":\"GroupNode-WXPMk\",\"type\":\"PromptTemplate\",\"node\":{\"output_types\":[],\"display_name\":\"Web Scraper\",\"documentation\":\"\",\"base_classes\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"description\":\"Fetch and parse text and links from a given URL.\",\"template\":{\"code_CustomComponent-f6nOg\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport html2text\\n\\nclass ConvertHTMLToMarkdown(CustomComponent):\\n display_name: str = \\\"HTML to Markdown\\\"\\n description: str = \\\"Converts HTML content to Markdown format.\\\"\\n\\n def build(self, html_content: Data, ignore_links: bool = False) -> str:\\n converter = html2text.HTML2Text()\\n converter.ignore_links = ignore_links\\n markdown_text = converter.handle(html_content)\\n self.status = markdown_text\\n return markdown_text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-f6nOg\",\"field\":\"code\"},\"display_name\":\"Code\"},\"ignore_links_CustomComponent-f6nOg\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"ignore_links\",\"display_name\":\"ignore_links\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-f6nOg\",\"field\":\"ignore_links\"}},\"code_CustomComponent-FGzJJ\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"Fetch HTML\\\"\\n description: str = \\\"Fetches HTML content from a specified URL.\\\"\\n \\n def build_config(self):\\n return {\\\"url\\\": {\\\"input_types\\\": [\\\"Data\\\", \\\"str\\\"]}} \\n\\n def build(self, url: str) -> Data:\\n response = requests.get(url)\\n self.status = str(response) + \\\"\\\\n\\\\n\\\" + response.text\\n return response.text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-FGzJJ\",\"field\":\"code\"},\"display_name\":\"Code\"},\"code_CustomComponent-0XtUN\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from bs4 import BeautifulSoup\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ParseHTMLContent(CustomComponent):\\n display_name: str = \\\"Parse HTML\\\"\\n description: str = \\\"Parses HTML content using Beautiful Soup.\\\"\\n\\n def build(self, html_content: Data) -> Data:\\n soup = BeautifulSoup(html_content, 'html.parser')\\n self.status = soup\\n return soup\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-0XtUN\",\"field\":\"code\"},\"display_name\":\"Code\"},\"code_CustomComponent-ODIcp\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ExtractHyperlinks(CustomComponent):\\n display_name: str = \\\"Extract Hyperlinks\\\"\\n description: str = \\\"Extracts hyperlinks from parsed HTML content.\\\"\\n\\n def build(self, soup: Data) -> list:\\n links = [link.get('href') for link in soup.find_all('a')]\\n self.status = links\\n return links\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-ODIcp\",\"field\":\"code\"},\"display_name\":\"Code\"},\"output_parser_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"output_parser\"},\"display_name\":\"Output Parser\"},\"input_types_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"input_types\"},\"display_name\":\"Input Types\"},\"input_variables_PromptTemplate-H9Udy\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"url\",\"html_markdown\",\"html_links\",\"query\"],\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"input_variables\"},\"display_name\":\"Input Variables\"},\"partial_variables_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"partial_variables\"},\"display_name\":\"Partial Variables\"},\"template_PromptTemplate-H9Udy\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"template\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"prompt\",\"list\":false,\"value\":\"Below is the HTML content (as markdown) and hyperlinks extracted from {url}\\n\\n---\\n\\nContent:\\n\\n{html_markdown}\\n\\n---\\n\\nLinks:\\n\\n{html_links}\\n\\n---\\n\\nAnswer the user query as best as possible.\\n\\nUser query:\\n\\n{query}\\n\\nAnswer:\\n\",\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"template\"},\"display_name\":\"Template\"},\"template_format_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"f-string\",\"password\":false,\"name\":\"template_format\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"template_format\"},\"display_name\":\"Template Format\"},\"validate_template_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"validate_template\"},\"display_name\":\"Validate Template\"},\"query_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"give me links\",\"password\":false,\"name\":\"query\",\"display_name\":\"query\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"query\"}},\"code_CustomComponent-OACE0\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"URL Input\\\"\\n\\n def build(self, url: str) -> str:\\n return url\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-OACE0\",\"field\":\"code\"},\"display_name\":\"Code\"},\"url_CustomComponent-OACE0\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-OACE0\",\"field\":\"url\"},\"value\":\"https://paperswithcode.com/\"},\"code_CustomComponent-whsQ5\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\n\\nclass ListToMarkdownBullets(CustomComponent):\\n display_name: str = \\\"List to Bullets\\\"\\n description: str = \\\"Converts a Python list into Markdown bullet points.\\\"\\n\\n def build(self, items: list) -> str:\\n markdown_bullets = '\\\\n'.join(f'* {item}' for item in items)\\n return markdown_bullets\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-whsQ5\",\"field\":\"code\"},\"display_name\":\"Code\"}},\"flow\":{\"data\":{\"nodes\":[{\"width\":384,\"height\":405,\"id\":\"CustomComponent-f6nOg\",\"type\":\"genericNode\",\"position\":{\"x\":665.2835942536854,\"y\":-371.7823429271119},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport html2text\\n\\nclass ConvertHTMLToMarkdown(CustomComponent):\\n display_name: str = \\\"HTML to Markdown\\\"\\n description: str = \\\"Converts HTML content to Markdown format.\\\"\\n\\n def build(self, html_content: Data, ignore_links: bool = False) -> str:\\n converter = html2text.HTML2Text()\\n converter.ignore_links = ignore_links\\n markdown_text = converter.handle(html_content)\\n self.status = markdown_text\\n return markdown_text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"html_content\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"html_content\",\"display_name\":\"html_content\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false},\"ignore_links\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"ignore_links\",\"display_name\":\"ignore_links\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false}},\"description\":\"Converts HTML content to Markdown format.\",\"base_classes\":[\"str\"],\"display_name\":\"HTML to Markdown\",\"custom_fields\":{\"html_content\":null,\"ignore_links\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-f6nOg\"},\"selected\":true,\"positionAbsolute\":{\"x\":665.2835942536854,\"y\":-371.7823429271119},\"dragging\":false},{\"width\":384,\"height\":375,\"id\":\"CustomComponent-FGzJJ\",\"type\":\"genericNode\",\"position\":{\"x\":-464.4553400967736,\"y\":-225.62715888255525},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"Fetch HTML\\\"\\n description: str = \\\"Fetches HTML content from a specified URL.\\\"\\n \\n def build_config(self):\\n return {\\\"url\\\": {\\\"input_types\\\": [\\\"Data\\\", \\\"str\\\"]}} \\n\\n def build(self, url: str) -> Data:\\n response = requests.get(url)\\n self.status = str(response) + \\\"\\\\n\\\\n\\\" + response.text\\n return response.text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"url\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"input_types\":[\"Data\",\"str\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"}},\"description\":\"Fetches HTML content from a specified URL.\",\"base_classes\":[\"Data\"],\"display_name\":\"Fetch HTML\",\"custom_fields\":{\"url\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-FGzJJ\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":-464.4553400967736,\"y\":-225.62715888255525}},{\"width\":384,\"height\":329,\"id\":\"CustomComponent-0XtUN\",\"type\":\"genericNode\",\"position\":{\"x\":214.00059169497604,\"y\":177.27071061129823},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from bs4 import BeautifulSoup\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ParseHTMLContent(CustomComponent):\\n display_name: str = \\\"Parse HTML\\\"\\n description: str = \\\"Parses HTML content using Beautiful Soup.\\\"\\n\\n def build(self, html_content: Data) -> Data:\\n soup = BeautifulSoup(html_content, 'html.parser')\\n self.status = soup\\n return soup\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"html_content\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"html_content\",\"display_name\":\"html_content\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false}},\"description\":\"Parses HTML content using Beautiful Soup.\",\"base_classes\":[\"Data\"],\"display_name\":\"Parse HTML\",\"custom_fields\":{\"html_content\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-0XtUN\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":214.00059169497604,\"y\":177.27071061129823}},{\"width\":384,\"height\":329,\"id\":\"CustomComponent-ODIcp\",\"type\":\"genericNode\",\"position\":{\"x\":845.0502195222412,\"y\":366.54344452019404},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ExtractHyperlinks(CustomComponent):\\n display_name: str = \\\"Extract Hyperlinks\\\"\\n description: str = \\\"Extracts hyperlinks from parsed HTML content.\\\"\\n\\n def build(self, soup: Data) -> list:\\n links = [link.get('href') for link in soup.find_all('a')]\\n self.status = links\\n return links\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"soup\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"soup\",\"display_name\":\"soup\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false}},\"description\":\"Extracts hyperlinks from parsed HTML content.\",\"base_classes\":[\"list\"],\"display_name\":\"Extract Hyperlinks\",\"custom_fields\":{\"soup\":null},\"output_types\":[\"list\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-ODIcp\"},\"selected\":true,\"positionAbsolute\":{\"x\":845.0502195222412,\"y\":366.54344452019404},\"dragging\":false},{\"width\":384,\"height\":657,\"id\":\"PromptTemplate-H9Udy\",\"type\":\"genericNode\",\"position\":{\"x\":2230.389721706283,\"y\":584.4905083765256},\"data\":{\"type\":\"PromptTemplate\",\"node\":{\"template\":{\"output_parser\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false},\"input_types\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"input_variables\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"url\",\"html_markdown\",\"html_links\",\"query\"]},\"partial_variables\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"template\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"prompt\",\"list\":false,\"value\":\"Below is the HTML content (as markdown) and hyperlinks extracted from {url}\\n\\n---\\n\\nContent:\\n\\n{html_markdown}\\n\\n---\\n\\nLinks:\\n\\n{html_links}\\n\\n---\\n\\nAnswer the user query as best as possible.\\n\\nUser query:\\n\\n{query}\\n\\nAnswer:\\n\"},\"template_format\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"f-string\",\"password\":false,\"name\":\"template_format\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":false},\"validate_template\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"PromptTemplate\",\"url\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"html_markdown\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"html_markdown\",\"display_name\":\"html_markdown\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"html_links\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"html_links\",\"display_name\":\"html_links\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"query\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"query\",\"display_name\":\"query\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"A prompt template for a language model.\",\"base_classes\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"name\":\"\",\"display_name\":\"PromptTemplate\",\"documentation\":\"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\"custom_fields\":{\"\":[\"url\",\"html_markdown\",\"html_links\",\"query\"]},\"output_types\":[],\"full_path\":null,\"field_formatters\":{},\"beta\":false,\"error\":null},\"id\":\"PromptTemplate-H9Udy\"},\"selected\":true,\"positionAbsolute\":{\"x\":2230.389721706283,\"y\":584.4905083765256},\"dragging\":false},{\"width\":384,\"height\":347,\"id\":\"CustomComponent-OACE0\",\"type\":\"genericNode\",\"position\":{\"x\":-1155.9497945157625,\"y\":198.13583204151553},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"URL Input\\\"\\n\\n def build(self, url: str) -> str:\\n return url\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"url\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":null,\"base_classes\":[\"str\"],\"display_name\":\"URL Input\",\"custom_fields\":{\"url\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-OACE0\"},\"selected\":true,\"positionAbsolute\":{\"x\":-1155.9497945157625,\"y\":198.13583204151553},\"dragging\":false},{\"width\":384,\"height\":329,\"id\":\"CustomComponent-whsQ5\",\"type\":\"genericNode\",\"position\":{\"x\":1396.5574076376327,\"y\":694.8308714574463},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\n\\nclass ListToMarkdownBullets(CustomComponent):\\n display_name: str = \\\"List to Bullets\\\"\\n description: str = \\\"Converts a Python list into Markdown bullet points.\\\"\\n\\n def build(self, items: list) -> str:\\n markdown_bullets = '\\\\n'.join(f'* {item}' for item in items)\\n return markdown_bullets\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"items\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"items\",\"display_name\":\"items\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"list\",\"list\":true}},\"description\":\"Converts a Python list into Markdown bullet points.\",\"base_classes\":[\"str\"],\"display_name\":\"List to Bullets\",\"custom_fields\":{\"items\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-whsQ5\"},\"selected\":true,\"positionAbsolute\":{\"x\":1396.5574076376327,\"y\":694.8308714574463},\"dragging\":false}],\"edges\":[{\"source\":\"CustomComponent-FGzJJ\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-FGzJJล“}\",\"target\":\"CustomComponent-f6nOg\",\"targetHandle\":\"{ล“fieldNameล“:ล“html_contentล“,ล“idล“:ล“CustomComponent-f6nOgล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_content\",\"id\":\"CustomComponent-f6nOg\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-FGzJJ\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-FGzJJ{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-FGzJJล“}-CustomComponent-f6nOg{ล“fieldNameล“:ล“html_contentล“,ล“idล“:ล“CustomComponent-f6nOgล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"selected\":true},{\"source\":\"CustomComponent-FGzJJ\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-FGzJJล“}\",\"target\":\"CustomComponent-0XtUN\",\"targetHandle\":\"{ล“fieldNameล“:ล“html_contentล“,ล“idล“:ล“CustomComponent-0XtUNล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_content\",\"id\":\"CustomComponent-0XtUN\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-FGzJJ\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-FGzJJ{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-FGzJJล“}-CustomComponent-0XtUN{ล“fieldNameล“:ล“html_contentล“,ล“idล“:ล“CustomComponent-0XtUNล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"selected\":true},{\"source\":\"CustomComponent-0XtUN\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-0XtUNล“}\",\"target\":\"CustomComponent-ODIcp\",\"targetHandle\":\"{ล“fieldNameล“:ล“soupล“,ล“idล“:ล“CustomComponent-ODIcpล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"soup\",\"id\":\"CustomComponent-ODIcp\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-0XtUN\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-0XtUN{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-0XtUNล“}-CustomComponent-ODIcp{ล“fieldNameล“:ล“soupล“,ล“idล“:ล“CustomComponent-ODIcpล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"selected\":true},{\"source\":\"CustomComponent-OACE0\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-OACE0ล“}\",\"target\":\"CustomComponent-FGzJJ\",\"targetHandle\":\"{ล“fieldNameล“:ล“urlล“,ล“idล“:ล“CustomComponent-FGzJJล“,ล“inputTypesล“:[ล“Dataล“,ล“strล“],ล“typeล“:ล“strล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"url\",\"id\":\"CustomComponent-FGzJJ\",\"inputTypes\":[\"Data\",\"str\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-OACE0\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-OACE0{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-OACE0ล“}-CustomComponent-FGzJJ{ล“fieldNameล“:ล“urlล“,ล“idล“:ล“CustomComponent-FGzJJล“,ล“inputTypesล“:[ล“Dataล“,ล“strล“],ล“typeล“:ล“strล“}\",\"selected\":true},{\"source\":\"CustomComponent-OACE0\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-OACE0ล“}\",\"target\":\"PromptTemplate-H9Udy\",\"targetHandle\":\"{ล“fieldNameล“:ล“urlล“,ล“idล“:ล“PromptTemplate-H9Udyล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"url\",\"id\":\"PromptTemplate-H9Udy\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-OACE0\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-OACE0{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-OACE0ล“}-PromptTemplate-H9Udy{ล“fieldNameล“:ล“urlล“,ล“idล“:ล“PromptTemplate-H9Udyล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"selected\":true},{\"source\":\"CustomComponent-ODIcp\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“listล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-ODIcpล“}\",\"target\":\"CustomComponent-whsQ5\",\"targetHandle\":\"{ล“fieldNameล“:ล“itemsล“,ล“idล“:ล“CustomComponent-whsQ5ล“,ล“inputTypesล“:null,ล“typeล“:ล“listล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"items\",\"id\":\"CustomComponent-whsQ5\",\"inputTypes\":null,\"type\":\"list\"},\"sourceHandle\":{\"baseClasses\":[\"list\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-ODIcp\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-ODIcp{ล“baseClassesล“:[ล“listล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-ODIcpล“}-CustomComponent-whsQ5{ล“fieldNameล“:ล“itemsล“,ล“idล“:ล“CustomComponent-whsQ5ล“,ล“inputTypesล“:null,ล“typeล“:ล“listล“}\",\"selected\":true},{\"source\":\"CustomComponent-whsQ5\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-whsQ5ล“}\",\"target\":\"PromptTemplate-H9Udy\",\"targetHandle\":\"{ล“fieldNameล“:ล“html_linksล“,ล“idล“:ล“PromptTemplate-H9Udyล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_links\",\"id\":\"PromptTemplate-H9Udy\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-whsQ5\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-whsQ5{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-whsQ5ล“}-PromptTemplate-H9Udy{ล“fieldNameล“:ล“html_linksล“,ล“idล“:ล“PromptTemplate-H9Udyล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"selected\":true},{\"source\":\"CustomComponent-f6nOg\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-f6nOgล“}\",\"target\":\"PromptTemplate-H9Udy\",\"targetHandle\":\"{ล“fieldNameล“:ล“html_markdownล“,ล“idล“:ล“PromptTemplate-H9Udyล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_markdown\",\"id\":\"PromptTemplate-H9Udy\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-f6nOg\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-f6nOg{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-f6nOgล“}-PromptTemplate-H9Udy{ล“fieldNameล“:ล“html_markdownล“,ล“idล“:ล“PromptTemplate-H9Udyล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"selected\":true}],\"viewport\":{\"x\":343.0346131188585,\"y\":341.89843948642147,\"zoom\":0.24148408223121196}},\"is_component\":false,\"name\":\"Fluffy Ptolemy\",\"description\":\"\",\"id\":\"W5oNW\"}}},\"id\":\"GroupNode-WXPMk\",\"position\":{\"x\":873.0737834322758,\"y\":598.8401015776466},\"type\":\"genericNode\",\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":873.0737834322758,\"y\":598.8401015776466}}],\"edges\":[{\"source\":\"ChatOpenAI-VSAdc\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“BaseLanguageModelล“,ล“ChatOpenAIล“,ล“BaseChatModelล“,ล“BaseLLMล“],ล“dataTypeล“:ล“ChatOpenAIล“,ล“idล“:ล“ChatOpenAI-VSAdcล“}\",\"target\":\"LLMChain-H7PBy\",\"targetHandle\":\"{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“LLMChain-H7PByล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLanguageModelล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"LLMChain-H7PBy\",\"inputTypes\":null,\"type\":\"BaseLanguageModel\"},\"sourceHandle\":{\"baseClasses\":[\"BaseLanguageModel\",\"ChatOpenAI\",\"BaseChatModel\",\"BaseLLM\"],\"dataType\":\"ChatOpenAI\",\"id\":\"ChatOpenAI-VSAdc\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-ChatOpenAI-VSAdc{ล“baseClassesล“:[ล“BaseLanguageModelล“,ล“ChatOpenAIล“,ล“BaseChatModelล“,ล“BaseLLMล“],ล“dataTypeล“:ล“ChatOpenAIล“,ล“idล“:ล“ChatOpenAI-VSAdcล“}-LLMChain-H7PBy{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“LLMChain-H7PByล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLanguageModelล“}\"},{\"source\":\"GroupNode-WXPMk\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“StringPromptTemplateล“,ล“BasePromptTemplateล“,ล“PromptTemplateล“],ล“dataTypeล“:ล“PromptTemplateล“,ล“idล“:ล“GroupNode-WXPMkล“}\",\"target\":\"LLMChain-H7PBy\",\"targetHandle\":\"{ล“fieldNameล“:ล“promptล“,ล“idล“:ล“LLMChain-H7PByล“,ล“inputTypesล“:null,ล“typeล“:ล“BasePromptTemplateล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"prompt\",\"id\":\"LLMChain-H7PBy\",\"inputTypes\":null,\"type\":\"BasePromptTemplate\"},\"sourceHandle\":{\"baseClasses\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"dataType\":\"PromptTemplate\",\"id\":\"GroupNode-WXPMk\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-GroupNode-WXPMk{ล“baseClassesล“:[ล“StringPromptTemplateล“,ล“BasePromptTemplateล“,ล“PromptTemplateล“],ล“dataTypeล“:ล“PromptTemplateล“,ล“idล“:ล“GroupNode-WXPMkล“}-LLMChain-H7PBy{ล“fieldNameล“:ล“promptล“,ล“idล“:ล“LLMChain-H7PByล“,ล“inputTypesล“:null,ล“typeล“:ล“BasePromptTemplateล“}\"}],\"viewport\":{\"x\":-348.6161822813733,\"y\":121.40545291211492,\"zoom\":0.6801854262029781}},\"is_component\":false,\"updated_at\":\"2023-12-04T23:22:27.784647\",\"folder\":null,\"id\":\"efc3bf27-3cf1-4561-9a83-3df347572440\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sad Joliot\",\"description\":\"Navigate the Networks of Conversation.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":338,\"id\":\"LLMChain-RQsU1\",\"type\":\"genericNode\",\"position\":{\"x\":514.4440482813261,\"y\":528.164086188516},\"data\":{\"type\":\"LLMChain\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Callable, Optional, Union\\n\\nfrom langchain.chains import LLMChain\\n\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import (\\n BaseLanguageModel,\\n BaseMemory,\\n BasePromptTemplate,\\n Chain,\\n)\\n\\n\\nclass LLMChainComponent(CustomComponent):\\n display_name = \\\"LLMChain\\\"\\n description = \\\"Chain to run queries against LLMs\\\"\\n\\n def build_config(self):\\n return {\\n \\\"prompt\\\": {\\\"display_name\\\": \\\"Prompt\\\"},\\n \\\"llm\\\": {\\\"display_name\\\": \\\"LLM\\\"},\\n \\\"memory\\\": {\\\"display_name\\\": \\\"Memory\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n prompt: BasePromptTemplate,\\n llm: BaseLanguageModel,\\n memory: Optional[BaseMemory] = None,\\n ) -> Union[Chain, Callable]:\\n return LLMChain(prompt=prompt, llm=llm, memory=memory)\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"display_name\":\"Memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseMemory\",\"list\":false},\"prompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"prompt\",\"display_name\":\"Prompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BasePromptTemplate\",\"list\":false}},\"description\":\"Chain to run queries against LLMs\",\"base_classes\":[\"Chain\",\"Callable\"],\"display_name\":\"LLMChain\",\"custom_fields\":{\"llm\":null,\"memory\":null,\"prompt\":null},\"output_types\":[\"LLMChain\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"LLMChain-RQsU1\"},\"selected\":false,\"positionAbsolute\":{\"x\":514.4440482813261,\"y\":528.164086188516}},{\"width\":384,\"height\":626,\"id\":\"ChatOpenAI-NTTcv\",\"type\":\"genericNode\",\"position\":{\"x\":-221.33853765781578,\"y\":-35.48749923706055},\"data\":{\"type\":\"ChatOpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain_core.callbacks.base.BaseCallbackHandler\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"gpt-4-1106-preview\",\"password\":false,\"options\":[\"gpt-4-1106-preview\",\"gpt-4\",\"gpt-4-32k\",\"gpt-3.5-turbo\",\"gpt-3.5-turbo-16k\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"sk-...\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"0.1\",\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ChatOpenAI\"},\"description\":\"`OpenAI` Chat large language models API.\",\"base_classes\":[\"BaseLanguageModel\",\"ChatOpenAI\",\"BaseChatModel\",\"BaseLLM\"],\"display_name\":\"ChatOpenAI\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"ChatOpenAI-NTTcv\"},\"selected\":false,\"positionAbsolute\":{\"x\":-221.33853765781578,\"y\":-35.48749923706055}},{\"width\":384,\"height\":374,\"id\":\"PromptTemplate-VELMV\",\"type\":\"genericNode\",\"position\":{\"x\":-222,\"y\":682.560723386973},\"data\":{\"id\":\"PromptTemplate-VELMV\",\"type\":\"PromptTemplate\",\"node\":{\"output_types\":[],\"display_name\":\"Web Scraper\",\"documentation\":\"\",\"base_classes\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"description\":\"Fetch and parse text and links from a given URL.\",\"template\":{\"code_CustomComponent-f6nOg\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport html2text\\n\\nclass ConvertHTMLToMarkdown(CustomComponent):\\n display_name: str = \\\"HTML to Markdown\\\"\\n description: str = \\\"Converts HTML content to Markdown format.\\\"\\n\\n def build(self, html_content: Data, ignore_links: bool = False) -> str:\\n converter = html2text.HTML2Text()\\n converter.ignore_links = ignore_links\\n markdown_text = converter.handle(html_content)\\n self.status = markdown_text\\n return markdown_text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-f6nOg\",\"field\":\"code\"},\"display_name\":\"Code\"},\"ignore_links_CustomComponent-f6nOg\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"ignore_links\",\"display_name\":\"ignore_links\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-f6nOg\",\"field\":\"ignore_links\"}},\"code_CustomComponent-FGzJJ\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"Fetch HTML\\\"\\n description: str = \\\"Fetches HTML content from a specified URL.\\\"\\n \\n def build_config(self):\\n return {\\\"url\\\": {\\\"input_types\\\": [\\\"Data\\\", \\\"str\\\"]}} \\n\\n def build(self, url: str) -> Data:\\n response = requests.get(url)\\n self.status = str(response) + \\\"\\\\n\\\\n\\\" + response.text\\n return response.text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-FGzJJ\",\"field\":\"code\"},\"display_name\":\"Code\"},\"code_CustomComponent-0XtUN\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from bs4 import BeautifulSoup\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ParseHTMLContent(CustomComponent):\\n display_name: str = \\\"Parse HTML\\\"\\n description: str = \\\"Parses HTML content using Beautiful Soup.\\\"\\n\\n def build(self, html_content: Data) -> Data:\\n soup = BeautifulSoup(html_content, 'html.parser')\\n self.status = soup\\n return soup\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-0XtUN\",\"field\":\"code\"},\"display_name\":\"Code\"},\"code_CustomComponent-ODIcp\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ExtractHyperlinks(CustomComponent):\\n display_name: str = \\\"Extract Hyperlinks\\\"\\n description: str = \\\"Extracts hyperlinks from parsed HTML content.\\\"\\n\\n def build(self, soup: Data) -> list:\\n links = [link.get('href') for link in soup.find_all('a')]\\n self.status = links\\n return links\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-ODIcp\",\"field\":\"code\"},\"display_name\":\"Code\"},\"output_parser_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"output_parser\"},\"display_name\":\"Output Parser\"},\"input_types_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"input_types\"},\"display_name\":\"Input Types\"},\"input_variables_PromptTemplate-H9Udy\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"url\",\"html_markdown\",\"html_links\",\"query\"],\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"input_variables\"},\"display_name\":\"Input Variables\"},\"partial_variables_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"partial_variables\"},\"display_name\":\"Partial Variables\"},\"template_PromptTemplate-H9Udy\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"template\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"prompt\",\"list\":false,\"value\":\"Below is the HTML content (as markdown) and hyperlinks extracted from {url}\\n\\n---\\n\\nContent:\\n\\n{html_markdown}\\n\\n---\\n\\nLinks:\\n\\n{html_links}\\n\\n---\\n\\nAnswer the user query as best as possible.\\n\\nUser query:\\n\\n{query}\\n\\nAnswer:\\n\",\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"template\"},\"display_name\":\"Template\"},\"template_format_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"f-string\",\"password\":false,\"name\":\"template_format\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"template_format\"},\"display_name\":\"Template Format\"},\"validate_template_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"validate_template\"},\"display_name\":\"Validate Template\"},\"query_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"query\",\"display_name\":\"query\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"query\"}},\"code_CustomComponent-OACE0\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"URL Input\\\"\\n\\n def build(self, url: str) -> str:\\n return url\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-OACE0\",\"field\":\"code\"},\"display_name\":\"Code\"},\"url_CustomComponent-OACE0\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-OACE0\",\"field\":\"url\"},\"value\":\"https://paperswithcode.com/\"},\"code_CustomComponent-whsQ5\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\n\\nclass ListToMarkdownBullets(CustomComponent):\\n display_name: str = \\\"List to Bullets\\\"\\n description: str = \\\"Converts a Python list into Markdown bullet points.\\\"\\n\\n def build(self, items: list) -> str:\\n markdown_bullets = '\\\\n'.join(f'* {item}' for item in items)\\n return markdown_bullets\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-whsQ5\",\"field\":\"code\"},\"display_name\":\"Code\"}},\"flow\":{\"data\":{\"nodes\":[{\"width\":384,\"height\":405,\"id\":\"CustomComponent-f6nOg\",\"type\":\"genericNode\",\"position\":{\"x\":665.2835942536854,\"y\":-371.7823429271119},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport html2text\\n\\nclass ConvertHTMLToMarkdown(CustomComponent):\\n display_name: str = \\\"HTML to Markdown\\\"\\n description: str = \\\"Converts HTML content to Markdown format.\\\"\\n\\n def build(self, html_content: Data, ignore_links: bool = False) -> str:\\n converter = html2text.HTML2Text()\\n converter.ignore_links = ignore_links\\n markdown_text = converter.handle(html_content)\\n self.status = markdown_text\\n return markdown_text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"html_content\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"html_content\",\"display_name\":\"html_content\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false},\"ignore_links\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"ignore_links\",\"display_name\":\"ignore_links\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false}},\"description\":\"Converts HTML content to Markdown format.\",\"base_classes\":[\"str\"],\"display_name\":\"HTML to Markdown\",\"custom_fields\":{\"html_content\":null,\"ignore_links\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-f6nOg\"},\"selected\":true,\"positionAbsolute\":{\"x\":665.2835942536854,\"y\":-371.7823429271119},\"dragging\":false},{\"width\":384,\"height\":375,\"id\":\"CustomComponent-FGzJJ\",\"type\":\"genericNode\",\"position\":{\"x\":-464.4553400967736,\"y\":-225.62715888255525},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"Fetch HTML\\\"\\n description: str = \\\"Fetches HTML content from a specified URL.\\\"\\n \\n def build_config(self):\\n return {\\\"url\\\": {\\\"input_types\\\": [\\\"Data\\\", \\\"str\\\"]}} \\n\\n def build(self, url: str) -> Data:\\n response = requests.get(url)\\n self.status = str(response) + \\\"\\\\n\\\\n\\\" + response.text\\n return response.text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"url\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"input_types\":[\"Data\",\"str\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"}},\"description\":\"Fetches HTML content from a specified URL.\",\"base_classes\":[\"Data\"],\"display_name\":\"Fetch HTML\",\"custom_fields\":{\"url\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-FGzJJ\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":-464.4553400967736,\"y\":-225.62715888255525}},{\"width\":384,\"height\":329,\"id\":\"CustomComponent-0XtUN\",\"type\":\"genericNode\",\"position\":{\"x\":214.00059169497604,\"y\":177.27071061129823},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from bs4 import BeautifulSoup\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ParseHTMLContent(CustomComponent):\\n display_name: str = \\\"Parse HTML\\\"\\n description: str = \\\"Parses HTML content using Beautiful Soup.\\\"\\n\\n def build(self, html_content: Data) -> Data:\\n soup = BeautifulSoup(html_content, 'html.parser')\\n self.status = soup\\n return soup\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"html_content\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"html_content\",\"display_name\":\"html_content\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false}},\"description\":\"Parses HTML content using Beautiful Soup.\",\"base_classes\":[\"Data\"],\"display_name\":\"Parse HTML\",\"custom_fields\":{\"html_content\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-0XtUN\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":214.00059169497604,\"y\":177.27071061129823}},{\"width\":384,\"height\":329,\"id\":\"CustomComponent-ODIcp\",\"type\":\"genericNode\",\"position\":{\"x\":845.0502195222412,\"y\":366.54344452019404},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ExtractHyperlinks(CustomComponent):\\n display_name: str = \\\"Extract Hyperlinks\\\"\\n description: str = \\\"Extracts hyperlinks from parsed HTML content.\\\"\\n\\n def build(self, soup: Data) -> list:\\n links = [link.get('href') for link in soup.find_all('a')]\\n self.status = links\\n return links\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"soup\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"soup\",\"display_name\":\"soup\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false}},\"description\":\"Extracts hyperlinks from parsed HTML content.\",\"base_classes\":[\"list\"],\"display_name\":\"Extract Hyperlinks\",\"custom_fields\":{\"soup\":null},\"output_types\":[\"list\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-ODIcp\"},\"selected\":true,\"positionAbsolute\":{\"x\":845.0502195222412,\"y\":366.54344452019404},\"dragging\":false},{\"width\":384,\"height\":657,\"id\":\"PromptTemplate-H9Udy\",\"type\":\"genericNode\",\"position\":{\"x\":2230.389721706283,\"y\":584.4905083765256},\"data\":{\"type\":\"PromptTemplate\",\"node\":{\"template\":{\"output_parser\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false},\"input_types\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"input_variables\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"url\",\"html_markdown\",\"html_links\",\"query\"]},\"partial_variables\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"template\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"prompt\",\"list\":false,\"value\":\"Below is the HTML content (as markdown) and hyperlinks extracted from {url}\\n\\n---\\n\\nContent:\\n\\n{html_markdown}\\n\\n---\\n\\nLinks:\\n\\n{html_links}\\n\\n---\\n\\nAnswer the user query as best as possible.\\n\\nUser query:\\n\\n{query}\\n\\nAnswer:\\n\"},\"template_format\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"f-string\",\"password\":false,\"name\":\"template_format\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":false},\"validate_template\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"PromptTemplate\",\"url\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"html_markdown\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"html_markdown\",\"display_name\":\"html_markdown\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"html_links\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"html_links\",\"display_name\":\"html_links\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"query\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"query\",\"display_name\":\"query\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"A prompt template for a language model.\",\"base_classes\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"name\":\"\",\"display_name\":\"PromptTemplate\",\"documentation\":\"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\"custom_fields\":{\"\":[\"url\",\"html_markdown\",\"html_links\",\"query\"]},\"output_types\":[],\"full_path\":null,\"field_formatters\":{},\"beta\":false,\"error\":null},\"id\":\"PromptTemplate-H9Udy\"},\"selected\":true,\"positionAbsolute\":{\"x\":2230.389721706283,\"y\":584.4905083765256},\"dragging\":false},{\"width\":384,\"height\":347,\"id\":\"CustomComponent-OACE0\",\"type\":\"genericNode\",\"position\":{\"x\":-1155.9497945157625,\"y\":198.13583204151553},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"URL Input\\\"\\n\\n def build(self, url: str) -> str:\\n return url\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"url\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":null,\"base_classes\":[\"str\"],\"display_name\":\"URL Input\",\"custom_fields\":{\"url\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-OACE0\"},\"selected\":true,\"positionAbsolute\":{\"x\":-1155.9497945157625,\"y\":198.13583204151553},\"dragging\":false},{\"width\":384,\"height\":329,\"id\":\"CustomComponent-whsQ5\",\"type\":\"genericNode\",\"position\":{\"x\":1396.5574076376327,\"y\":694.8308714574463},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\n\\nclass ListToMarkdownBullets(CustomComponent):\\n display_name: str = \\\"List to Bullets\\\"\\n description: str = \\\"Converts a Python list into Markdown bullet points.\\\"\\n\\n def build(self, items: list) -> str:\\n markdown_bullets = '\\\\n'.join(f'* {item}' for item in items)\\n return markdown_bullets\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"items\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"items\",\"display_name\":\"items\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"list\",\"list\":true}},\"description\":\"Converts a Python list into Markdown bullet points.\",\"base_classes\":[\"str\"],\"display_name\":\"List to Bullets\",\"custom_fields\":{\"items\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-whsQ5\"},\"selected\":true,\"positionAbsolute\":{\"x\":1396.5574076376327,\"y\":694.8308714574463},\"dragging\":false}],\"edges\":[{\"source\":\"CustomComponent-FGzJJ\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-FGzJJล“}\",\"target\":\"CustomComponent-f6nOg\",\"targetHandle\":\"{ล“fieldNameล“:ล“html_contentล“,ล“idล“:ล“CustomComponent-f6nOgล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_content\",\"id\":\"CustomComponent-f6nOg\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-FGzJJ\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-FGzJJ{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-FGzJJล“}-CustomComponent-f6nOg{ล“fieldNameล“:ล“html_contentล“,ล“idล“:ล“CustomComponent-f6nOgล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"selected\":true},{\"source\":\"CustomComponent-FGzJJ\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-FGzJJล“}\",\"target\":\"CustomComponent-0XtUN\",\"targetHandle\":\"{ล“fieldNameล“:ล“html_contentล“,ล“idล“:ล“CustomComponent-0XtUNล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_content\",\"id\":\"CustomComponent-0XtUN\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-FGzJJ\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-FGzJJ{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-FGzJJล“}-CustomComponent-0XtUN{ล“fieldNameล“:ล“html_contentล“,ล“idล“:ล“CustomComponent-0XtUNล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"selected\":true},{\"source\":\"CustomComponent-0XtUN\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-0XtUNล“}\",\"target\":\"CustomComponent-ODIcp\",\"targetHandle\":\"{ล“fieldNameล“:ล“soupล“,ล“idล“:ล“CustomComponent-ODIcpล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"soup\",\"id\":\"CustomComponent-ODIcp\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-0XtUN\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-0XtUN{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-0XtUNล“}-CustomComponent-ODIcp{ล“fieldNameล“:ล“soupล“,ล“idล“:ล“CustomComponent-ODIcpล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"selected\":true},{\"source\":\"CustomComponent-OACE0\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-OACE0ล“}\",\"target\":\"CustomComponent-FGzJJ\",\"targetHandle\":\"{ล“fieldNameล“:ล“urlล“,ล“idล“:ล“CustomComponent-FGzJJล“,ล“inputTypesล“:[ล“Dataล“,ล“strล“],ล“typeล“:ล“strล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"url\",\"id\":\"CustomComponent-FGzJJ\",\"inputTypes\":[\"Data\",\"str\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-OACE0\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-OACE0{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-OACE0ล“}-CustomComponent-FGzJJ{ล“fieldNameล“:ล“urlล“,ล“idล“:ล“CustomComponent-FGzJJล“,ล“inputTypesล“:[ล“Dataล“,ล“strล“],ล“typeล“:ล“strล“}\",\"selected\":true},{\"source\":\"CustomComponent-OACE0\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-OACE0ล“}\",\"target\":\"PromptTemplate-H9Udy\",\"targetHandle\":\"{ล“fieldNameล“:ล“urlล“,ล“idล“:ล“PromptTemplate-H9Udyล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"url\",\"id\":\"PromptTemplate-H9Udy\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-OACE0\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-OACE0{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-OACE0ล“}-PromptTemplate-H9Udy{ล“fieldNameล“:ล“urlล“,ล“idล“:ล“PromptTemplate-H9Udyล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"selected\":true},{\"source\":\"CustomComponent-ODIcp\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“listล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-ODIcpล“}\",\"target\":\"CustomComponent-whsQ5\",\"targetHandle\":\"{ล“fieldNameล“:ล“itemsล“,ล“idล“:ล“CustomComponent-whsQ5ล“,ล“inputTypesล“:null,ล“typeล“:ล“listล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"items\",\"id\":\"CustomComponent-whsQ5\",\"inputTypes\":null,\"type\":\"list\"},\"sourceHandle\":{\"baseClasses\":[\"list\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-ODIcp\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-ODIcp{ล“baseClassesล“:[ล“listล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-ODIcpล“}-CustomComponent-whsQ5{ล“fieldNameล“:ล“itemsล“,ล“idล“:ล“CustomComponent-whsQ5ล“,ล“inputTypesล“:null,ล“typeล“:ล“listล“}\",\"selected\":true},{\"source\":\"CustomComponent-whsQ5\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-whsQ5ล“}\",\"target\":\"PromptTemplate-H9Udy\",\"targetHandle\":\"{ล“fieldNameล“:ล“html_linksล“,ล“idล“:ล“PromptTemplate-H9Udyล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_links\",\"id\":\"PromptTemplate-H9Udy\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-whsQ5\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-whsQ5{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-whsQ5ล“}-PromptTemplate-H9Udy{ล“fieldNameล“:ล“html_linksล“,ล“idล“:ล“PromptTemplate-H9Udyล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"selected\":true},{\"source\":\"CustomComponent-f6nOg\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-f6nOgล“}\",\"target\":\"PromptTemplate-H9Udy\",\"targetHandle\":\"{ล“fieldNameล“:ล“html_markdownล“,ล“idล“:ล“PromptTemplate-H9Udyล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_markdown\",\"id\":\"PromptTemplate-H9Udy\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-f6nOg\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-f6nOg{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-f6nOgล“}-PromptTemplate-H9Udy{ล“fieldNameล“:ล“html_markdownล“,ล“idล“:ล“PromptTemplate-H9Udyล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"selected\":true}],\"viewport\":{\"x\":343.0346131188585,\"y\":341.89843948642147,\"zoom\":0.24148408223121196}},\"is_component\":false,\"name\":\"Fluffy Ptolemy\",\"description\":\"\",\"id\":\"W5oNW\"}}},\"selected\":false,\"positionAbsolute\":{\"x\":-222,\"y\":682.560723386973}}],\"edges\":[{\"source\":\"ChatOpenAI-NTTcv\",\"target\":\"LLMChain-RQsU1\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“BaseLanguageModelล“,ล“ChatOpenAIล“,ล“BaseChatModelล“,ล“BaseLLMล“],ล“dataTypeล“:ล“ChatOpenAIล“,ล“idล“:ล“ChatOpenAI-NTTcvล“}\",\"targetHandle\":\"{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“LLMChain-RQsU1ล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLanguageModelล“}\",\"id\":\"reactflow__edge-ChatOpenAI-NTTcv{ล“baseClassesล“:[ล“BaseLanguageModelล“,ล“ChatOpenAIล“,ล“BaseChatModelล“,ล“BaseLLMล“],ล“dataTypeล“:ล“ChatOpenAIล“,ล“idล“:ล“ChatOpenAI-NTTcvล“}-LLMChain-RQsU1{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“LLMChain-RQsU1ล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLanguageModelล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"LLMChain-RQsU1\",\"inputTypes\":null,\"type\":\"BaseLanguageModel\"},\"sourceHandle\":{\"baseClasses\":[\"BaseLanguageModel\",\"ChatOpenAI\",\"BaseChatModel\",\"BaseLLM\"],\"dataType\":\"ChatOpenAI\",\"id\":\"ChatOpenAI-NTTcv\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 \",\"animated\":false,\"selected\":false},{\"source\":\"PromptTemplate-VELMV\",\"target\":\"LLMChain-RQsU1\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“StringPromptTemplateล“,ล“BasePromptTemplateล“,ล“PromptTemplateล“],ล“dataTypeล“:ล“PromptTemplateล“,ล“idล“:ล“PromptTemplate-VELMVล“}\",\"targetHandle\":\"{ล“fieldNameล“:ล“promptล“,ล“idล“:ล“LLMChain-RQsU1ล“,ล“inputTypesล“:null,ล“typeล“:ล“BasePromptTemplateล“}\",\"id\":\"reactflow__edge-PromptTemplate-VELMV{ล“baseClassesล“:[ล“StringPromptTemplateล“,ล“BasePromptTemplateล“,ล“PromptTemplateล“],ล“dataTypeล“:ล“PromptTemplateล“,ล“idล“:ล“PromptTemplate-VELMVล“}-LLMChain-RQsU1{ล“fieldNameล“:ล“promptล“,ล“idล“:ล“LLMChain-RQsU1ล“,ล“inputTypesล“:null,ล“typeล“:ล“BasePromptTemplateล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"prompt\",\"id\":\"LLMChain-RQsU1\",\"inputTypes\":null,\"type\":\"BasePromptTemplate\"},\"sourceHandle\":{\"baseClasses\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"dataType\":\"PromptTemplate\",\"id\":\"PromptTemplate-VELMV\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 \",\"animated\":false,\"selected\":false}],\"viewport\":{\"x\":298.29888454238517,\"y\":96.95765543775741,\"zoom\":0.5140569133280332}},\"is_component\":false,\"updated_at\":\"2023-12-04T23:23:08.584967\",\"folder\":null,\"id\":\"5df79f1d-f592-4d59-8c0f-9f3c2f6465b1\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Silly Pasteur\",\"description\":\"Nurture NLP Nodes Here.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":338,\"id\":\"LLMChain-cHel8\",\"type\":\"genericNode\",\"position\":{\"x\":547.3876889720291,\"y\":299.2057833881307},\"data\":{\"type\":\"LLMChain\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Callable, Optional, Union\\n\\nfrom langchain.chains import LLMChain\\n\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import (\\n BaseLanguageModel,\\n BaseMemory,\\n BasePromptTemplate,\\n Chain,\\n)\\n\\n\\nclass LLMChainComponent(CustomComponent):\\n display_name = \\\"LLMChain\\\"\\n description = \\\"Chain to run queries against LLMs\\\"\\n\\n def build_config(self):\\n return {\\n \\\"prompt\\\": {\\\"display_name\\\": \\\"Prompt\\\"},\\n \\\"llm\\\": {\\\"display_name\\\": \\\"LLM\\\"},\\n \\\"memory\\\": {\\\"display_name\\\": \\\"Memory\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n prompt: BasePromptTemplate,\\n llm: BaseLanguageModel,\\n memory: Optional[BaseMemory] = None,\\n ) -> Union[Chain, Callable]:\\n return LLMChain(prompt=prompt, llm=llm, memory=memory)\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"display_name\":\"Memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseMemory\",\"list\":false},\"prompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"prompt\",\"display_name\":\"Prompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BasePromptTemplate\",\"list\":false}},\"description\":\"Chain to run queries against LLMs\",\"base_classes\":[\"Chain\",\"Callable\"],\"display_name\":\"LLMChain\",\"custom_fields\":{\"llm\":null,\"memory\":null,\"prompt\":null},\"output_types\":[\"LLMChain\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"LLMChain-cHel8\"},\"selected\":false,\"positionAbsolute\":{\"x\":547.3876889720291,\"y\":299.2057833881307},\"dragging\":false},{\"width\":384,\"height\":626,\"id\":\"ChatOpenAI-LA6y0\",\"type\":\"genericNode\",\"position\":{\"x\":-272.94405331278074,\"y\":-603.148171441675},\"data\":{\"type\":\"ChatOpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain_core.callbacks.base.BaseCallbackHandler\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"gpt-4-1106-preview\",\"password\":false,\"options\":[\"gpt-4-1106-preview\",\"gpt-4\",\"gpt-4-32k\",\"gpt-3.5-turbo\",\"gpt-3.5-turbo-16k\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"sk-...\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"0.1\",\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ChatOpenAI\"},\"description\":\"`OpenAI` Chat large language models API.\",\"base_classes\":[\"BaseLanguageModel\",\"ChatOpenAI\",\"BaseChatModel\",\"BaseLLM\"],\"display_name\":\"ChatOpenAI\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"ChatOpenAI-LA6y0\"},\"selected\":false,\"dragging\":false,\"positionAbsolute\":{\"x\":-272.94405331278074,\"y\":-603.148171441675}},{\"width\":384,\"height\":404,\"id\":\"CustomComponent-ZNoRM\",\"type\":\"genericNode\",\"position\":{\"x\":-103.65741264289085,\"y\":134.62332404764658},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport html2text\\n\\nclass ConvertHTMLToMarkdown(CustomComponent):\\n display_name: str = \\\"HTML to Markdown\\\"\\n description: str = \\\"Converts HTML content to Markdown format.\\\"\\n\\n def build(self, html_content: Data, ignore_links: bool = False) -> str:\\n converter = html2text.HTML2Text()\\n converter.ignore_links = ignore_links\\n markdown_text = converter.handle(html_content)\\n self.status = markdown_text\\n return markdown_text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"display_name\":\"code\"},\"_type\":\"CustomComponent\",\"html_content\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"html_content\",\"display_name\":\"html_content\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false},\"ignore_links\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"ignore_links\",\"display_name\":\"ignore_links\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false}},\"description\":\"Converts HTML content to Markdown format.\",\"base_classes\":[\"str\"],\"display_name\":\"HTML to Markdown\",\"custom_fields\":{\"html_content\":null,\"ignore_links\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-ZNoRM\"},\"selected\":false,\"positionAbsolute\":{\"x\":-103.65741264289085,\"y\":134.62332404764658},\"dragging\":false},{\"width\":384,\"height\":374,\"id\":\"CustomComponent-zNSTv\",\"type\":\"genericNode\",\"position\":{\"x\":-1233.3963469933499,\"y\":280.77850809220325},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"Fetch HTML\\\"\\n description: str = \\\"Fetches HTML content from a specified URL.\\\"\\n \\n def build_config(self):\\n return {\\\"url\\\": {\\\"input_types\\\": [\\\"Data\\\", \\\"str\\\"]}} \\n\\n def build(self, url: str) -> Data:\\n response = requests.get(url)\\n self.status = str(response) + \\\"\\\\n\\\\n\\\" + response.text\\n return response.text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"display_name\":\"code\"},\"_type\":\"CustomComponent\",\"url\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"input_types\":[\"Data\",\"str\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"}},\"description\":\"Fetches HTML content from a specified URL.\",\"base_classes\":[\"Data\"],\"display_name\":\"Fetch HTML\",\"custom_fields\":{\"url\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-zNSTv\"},\"selected\":false,\"dragging\":false,\"positionAbsolute\":{\"x\":-1233.3963469933499,\"y\":280.77850809220325}},{\"width\":384,\"height\":328,\"id\":\"CustomComponent-Ihm2o\",\"type\":\"genericNode\",\"position\":{\"x\":-554.9404152016002,\"y\":683.6763775860567},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from bs4 import BeautifulSoup\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ParseHTMLContent(CustomComponent):\\n display_name: str = \\\"Parse HTML\\\"\\n description: str = \\\"Parses HTML content using Beautiful Soup.\\\"\\n\\n def build(self, html_content: Data) -> Data:\\n soup = BeautifulSoup(html_content, 'html.parser')\\n self.status = soup\\n return soup\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"display_name\":\"code\"},\"_type\":\"CustomComponent\",\"html_content\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"html_content\",\"display_name\":\"html_content\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false}},\"description\":\"Parses HTML content using Beautiful Soup.\",\"base_classes\":[\"Data\"],\"display_name\":\"Parse HTML\",\"custom_fields\":{\"html_content\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-Ihm2o\"},\"selected\":false,\"dragging\":false,\"positionAbsolute\":{\"x\":-554.9404152016002,\"y\":683.6763775860567}},{\"width\":384,\"height\":328,\"id\":\"CustomComponent-6ST9l\",\"type\":\"genericNode\",\"position\":{\"x\":76.10921262566495,\"y\":872.9491114949525},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ExtractHyperlinks(CustomComponent):\\n display_name: str = \\\"Extract Hyperlinks\\\"\\n description: str = \\\"Extracts hyperlinks from parsed HTML content.\\\"\\n\\n def build(self, soup: Data) -> list:\\n links = [link.get('href') for link in soup.find_all('a')]\\n self.status = links\\n return links\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"display_name\":\"code\"},\"_type\":\"CustomComponent\",\"soup\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"soup\",\"display_name\":\"soup\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false}},\"description\":\"Extracts hyperlinks from parsed HTML content.\",\"base_classes\":[\"list\"],\"display_name\":\"Extract Hyperlinks\",\"custom_fields\":{\"soup\":null},\"output_types\":[\"list\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-6ST9l\"},\"selected\":false,\"positionAbsolute\":{\"x\":76.10921262566495,\"y\":872.9491114949525},\"dragging\":false},{\"width\":384,\"height\":654,\"id\":\"PromptTemplate-l35W1\",\"type\":\"genericNode\",\"position\":{\"x\":1461.4487148097069,\"y\":1090.896175351284},\"data\":{\"type\":\"PromptTemplate\",\"node\":{\"template\":{\"output_parser\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false,\"display_name\":\"output_parser\"},\"input_types\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false,\"display_name\":\"input_types\"},\"input_variables\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"url\",\"html_markdown\",\"html_links\",\"query\"],\"display_name\":\"input_variables\"},\"partial_variables\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false,\"display_name\":\"partial_variables\"},\"template\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"prompt\",\"list\":false,\"value\":\"Below is the HTML content (as markdown) and hyperlinks extracted from {url}\\n\\n---\\n\\nContent:\\n\\n{html_markdown}\\n\\n---\\n\\nLinks:\\n\\n{html_links}\\n\\n---\\n\\nAnswer the user query as best as possible.\\n\\nUser query:\\n\\n{query}\\n\\nAnswer:\\n\",\"display_name\":\"template\"},\"template_format\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"f-string\",\"password\":false,\"name\":\"template_format\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":false,\"display_name\":\"template_format\"},\"validate_template\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false,\"display_name\":\"validate_template\"},\"_type\":\"PromptTemplate\",\"url\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"html_markdown\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"html_markdown\",\"display_name\":\"html_markdown\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"html_links\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"html_links\",\"display_name\":\"html_links\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"query\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"query\",\"display_name\":\"query\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"A prompt template for a language model.\",\"base_classes\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"name\":\"\",\"display_name\":\"PromptTemplate\",\"documentation\":\"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\"custom_fields\":{\"\":[\"url\",\"html_markdown\",\"html_links\",\"query\"]},\"output_types\":[],\"full_path\":null,\"field_formatters\":{},\"beta\":false,\"error\":null},\"id\":\"PromptTemplate-l35W1\"},\"selected\":false,\"positionAbsolute\":{\"x\":1461.4487148097069,\"y\":1090.896175351284},\"dragging\":false},{\"width\":384,\"height\":346,\"id\":\"CustomComponent-iTLf4\",\"type\":\"genericNode\",\"position\":{\"x\":-1924.8908014123388,\"y\":704.5414990162741},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"URL Input\\\"\\n\\n def build(self, url: str) -> str:\\n return url\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"display_name\":\"code\"},\"_type\":\"CustomComponent\",\"url\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"https://paperswithcode.com/\"}},\"description\":null,\"base_classes\":[\"str\"],\"display_name\":\"URL Input\",\"custom_fields\":{\"url\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-iTLf4\"},\"selected\":false,\"positionAbsolute\":{\"x\":-1924.8908014123388,\"y\":704.5414990162741},\"dragging\":false},{\"width\":384,\"height\":328,\"id\":\"CustomComponent-jWLUz\",\"type\":\"genericNode\",\"position\":{\"x\":627.6164007410564,\"y\":1201.2365384322047},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\n\\nclass ListToMarkdownBullets(CustomComponent):\\n display_name: str = \\\"List to Bullets\\\"\\n description: str = \\\"Converts a Python list into Markdown bullet points.\\\"\\n\\n def build(self, items: list) -> str:\\n markdown_bullets = '\\\\n'.join(f'* {item}' for item in items)\\n return markdown_bullets\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"display_name\":\"code\"},\"_type\":\"CustomComponent\",\"items\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"items\",\"display_name\":\"items\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"list\",\"list\":true}},\"description\":\"Converts a Python list into Markdown bullet points.\",\"base_classes\":[\"str\"],\"display_name\":\"List to Bullets\",\"custom_fields\":{\"items\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-jWLUz\"},\"selected\":false,\"positionAbsolute\":{\"x\":627.6164007410564,\"y\":1201.2365384322047},\"dragging\":false}],\"edges\":[{\"source\":\"ChatOpenAI-LA6y0\",\"target\":\"LLMChain-cHel8\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“BaseLanguageModelล“,ล“ChatOpenAIล“,ล“BaseChatModelล“,ล“BaseLLMล“],ล“dataTypeล“:ล“ChatOpenAIล“,ล“idล“:ล“ChatOpenAI-LA6y0ล“}\",\"targetHandle\":\"{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“LLMChain-cHel8ล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLanguageModelล“}\",\"id\":\"reactflow__edge-ChatOpenAI-LA6y0{ล“baseClassesล“:[ล“BaseLanguageModelล“,ล“ChatOpenAIล“,ล“BaseChatModelล“,ล“BaseLLMล“],ล“dataTypeล“:ล“ChatOpenAIล“,ล“idล“:ล“ChatOpenAI-LA6y0ล“}-LLMChain-cHel8{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“LLMChain-cHel8ล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLanguageModelล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"LLMChain-cHel8\",\"inputTypes\":null,\"type\":\"BaseLanguageModel\"},\"sourceHandle\":{\"baseClasses\":[\"BaseLanguageModel\",\"ChatOpenAI\",\"BaseChatModel\",\"BaseLLM\"],\"dataType\":\"ChatOpenAI\",\"id\":\"ChatOpenAI-LA6y0\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"selected\":false},{\"source\":\"CustomComponent-zNSTv\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-zNSTvล“}\",\"target\":\"CustomComponent-ZNoRM\",\"targetHandle\":\"{ล“fieldNameล“:ล“html_contentล“,ล“idล“:ล“CustomComponent-ZNoRMล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_content\",\"id\":\"CustomComponent-ZNoRM\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-zNSTv\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-zNSTv{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-zNSTvล“}-CustomComponent-ZNoRM{ล“fieldNameล“:ล“html_contentล“,ล“idล“:ล“CustomComponent-ZNoRMล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"selected\":false},{\"source\":\"CustomComponent-zNSTv\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-zNSTvล“}\",\"target\":\"CustomComponent-Ihm2o\",\"targetHandle\":\"{ล“fieldNameล“:ล“html_contentล“,ล“idล“:ล“CustomComponent-Ihm2oล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_content\",\"id\":\"CustomComponent-Ihm2o\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-zNSTv\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-zNSTv{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-zNSTvล“}-CustomComponent-Ihm2o{ล“fieldNameล“:ล“html_contentล“,ล“idล“:ล“CustomComponent-Ihm2oล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"selected\":false},{\"source\":\"CustomComponent-Ihm2o\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-Ihm2oล“}\",\"target\":\"CustomComponent-6ST9l\",\"targetHandle\":\"{ล“fieldNameล“:ล“soupล“,ล“idล“:ล“CustomComponent-6ST9lล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"soup\",\"id\":\"CustomComponent-6ST9l\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-Ihm2o\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-Ihm2o{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-Ihm2oล“}-CustomComponent-6ST9l{ล“fieldNameล“:ล“soupล“,ล“idล“:ล“CustomComponent-6ST9lล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"selected\":false},{\"source\":\"CustomComponent-iTLf4\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-iTLf4ล“}\",\"target\":\"CustomComponent-zNSTv\",\"targetHandle\":\"{ล“fieldNameล“:ล“urlล“,ล“idล“:ล“CustomComponent-zNSTvล“,ล“inputTypesล“:[ล“Dataล“,ล“strล“],ล“typeล“:ล“strล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"url\",\"id\":\"CustomComponent-zNSTv\",\"inputTypes\":[\"Data\",\"str\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-iTLf4\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-iTLf4{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-iTLf4ล“}-CustomComponent-zNSTv{ล“fieldNameล“:ล“urlล“,ล“idล“:ล“CustomComponent-zNSTvล“,ล“inputTypesล“:[ล“Dataล“,ล“strล“],ล“typeล“:ล“strล“}\",\"selected\":false},{\"source\":\"CustomComponent-iTLf4\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-iTLf4ล“}\",\"target\":\"PromptTemplate-l35W1\",\"targetHandle\":\"{ล“fieldNameล“:ล“urlล“,ล“idล“:ล“PromptTemplate-l35W1ล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"url\",\"id\":\"PromptTemplate-l35W1\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-iTLf4\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-iTLf4{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-iTLf4ล“}-PromptTemplate-l35W1{ล“fieldNameล“:ล“urlล“,ล“idล“:ล“PromptTemplate-l35W1ล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"selected\":false},{\"source\":\"CustomComponent-6ST9l\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“listล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-6ST9lล“}\",\"target\":\"CustomComponent-jWLUz\",\"targetHandle\":\"{ล“fieldNameล“:ล“itemsล“,ล“idล“:ล“CustomComponent-jWLUzล“,ล“inputTypesล“:null,ล“typeล“:ล“listล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"items\",\"id\":\"CustomComponent-jWLUz\",\"inputTypes\":null,\"type\":\"list\"},\"sourceHandle\":{\"baseClasses\":[\"list\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-6ST9l\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-6ST9l{ล“baseClassesล“:[ล“listล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-6ST9lล“}-CustomComponent-jWLUz{ล“fieldNameล“:ล“itemsล“,ล“idล“:ล“CustomComponent-jWLUzล“,ล“inputTypesล“:null,ล“typeล“:ล“listล“}\",\"selected\":false},{\"source\":\"CustomComponent-jWLUz\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-jWLUzล“}\",\"target\":\"PromptTemplate-l35W1\",\"targetHandle\":\"{ล“fieldNameล“:ล“html_linksล“,ล“idล“:ล“PromptTemplate-l35W1ล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_links\",\"id\":\"PromptTemplate-l35W1\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-jWLUz\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-jWLUz{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-jWLUzล“}-PromptTemplate-l35W1{ล“fieldNameล“:ล“html_linksล“,ล“idล“:ล“PromptTemplate-l35W1ล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"selected\":false},{\"source\":\"CustomComponent-ZNoRM\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-ZNoRMล“}\",\"target\":\"PromptTemplate-l35W1\",\"targetHandle\":\"{ล“fieldNameล“:ล“html_markdownล“,ล“idล“:ล“PromptTemplate-l35W1ล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_markdown\",\"id\":\"PromptTemplate-l35W1\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-ZNoRM\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-ZNoRM{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-ZNoRMล“}-PromptTemplate-l35W1{ล“fieldNameล“:ล“html_markdownล“,ล“idล“:ล“PromptTemplate-l35W1ล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"selected\":false},{\"source\":\"PromptTemplate-l35W1\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“StringPromptTemplateล“,ล“BasePromptTemplateล“,ล“PromptTemplateล“],ล“dataTypeล“:ล“PromptTemplateล“,ล“idล“:ล“PromptTemplate-l35W1ล“}\",\"target\":\"LLMChain-cHel8\",\"targetHandle\":\"{ล“fieldNameล“:ล“promptล“,ล“idล“:ล“LLMChain-cHel8ล“,ล“inputTypesล“:null,ล“typeล“:ล“BasePromptTemplateล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"prompt\",\"id\":\"LLMChain-cHel8\",\"inputTypes\":null,\"type\":\"BasePromptTemplate\"},\"sourceHandle\":{\"baseClasses\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"dataType\":\"PromptTemplate\",\"id\":\"PromptTemplate-l35W1\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-PromptTemplate-mJqEg{ล“baseClassesล“:[ล“StringPromptTemplateล“,ล“BasePromptTemplateล“,ล“PromptTemplateล“],ล“dataTypeล“:ล“PromptTemplateล“,ล“idล“:ล“PromptTemplate-mJqEgล“}-LLMChain-cHel8{ล“fieldNameล“:ล“promptล“,ล“idล“:ล“LLMChain-cHel8ล“,ล“inputTypesล“:null,ล“typeล“:ล“BasePromptTemplateล“}\"}],\"viewport\":{\"x\":206.6159172940935,\"y\":79.94375811155385,\"zoom\":0.5140569133280333}},\"is_component\":false,\"updated_at\":\"2023-12-06T00:23:04.515144\",\"folder\":null,\"id\":\"ecfb377a-7e88-405d-8d66-7560735ce446\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lonely Lovelace\",\"description\":\"Smart Chains, Smarter Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-04T23:43:25.925753\",\"folder\":null,\"id\":\"30e71767-6128-40e4-9a6d-b9197b679971\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Custom Component\",\"description\":\"Create any custom component you want!\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\n\\nclass Component(CustomComponent):\\n display_name: str = \\\"Custom Component\\\"\\n description: str = \\\"Create any custom component you want!\\\"\\n documentation: str = \\\"http://docs.langflow.org/components/custom\\\"\\n\\n def build_config(self):\\n return {\\\"param\\\": {\\\"display_name\\\": \\\"Parameter\\\"}}\\n\\n def build(self, param: Data) -> Data:\\n return param\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"param\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"param\",\"display_name\":\"Parameter\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false}},\"description\":\"Create any custom component you want!\",\"base_classes\":[\"Data\"],\"display_name\":\"Custom Component\",\"custom_fields\":{\"param\":null},\"output_types\":[\"CustomComponent\"],\"documentation\":\"http://docs.langflow.org/components/custom\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"CustomComponent-IxJqc\"},\"id\":\"CustomComponent-IxJqc\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-05T22:08:27.080204\",\"folder\":null,\"id\":\"f3c56abb-96d8-4a09-80d3-f60181661b3c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Amazing Wilson\",\"description\":\"Unfolding Linguistic Possibilities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-05T23:49:58.272677\",\"folder\":null,\"id\":\"324499a6-17a6-49de-96b1-b88955ed2c3d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Nauseous Kowalevski\",\"description\":\"Create, Curate, Communicate with Langflow.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:45:27.084387\",\"folder\":null,\"id\":\"e3168485-d31b-472a-907f-faf833bf7824\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Silly Fermi\",\"description\":\"Craft Meaningful Interactions, Generate Value.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:45:57.134463\",\"folder\":null,\"id\":\"d0ecea5d-bcf9-4b8e-88f0-3c243d309336\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Friendly Ardinghelli\",\"description\":\"Smart Chains, Smarter Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:45:57.138184\",\"folder\":null,\"id\":\"a406912d-b0e2-4954-bef3-ee80c29eca3c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gleeful Easley\",\"description\":\"Bridging Prompts for Brilliance.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:45:57.162908\",\"folder\":null,\"id\":\"57b32155-4c6e-4823-ad03-8dd09d8abc62\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Effervescent Varahamihira\",\"description\":\"Create, Chain, Communicate.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:45:57.135644\",\"folder\":null,\"id\":\"18daa0ff-2e5d-457a-95d7-710affec5c4d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Jubilant Joliot\",\"description\":\"Language Architect at Work!\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:45:57.139496\",\"folder\":null,\"id\":\"9255e938-280e-4ce7-91cd-8622126a7d02\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Adoring Carroll\",\"description\":\"Nurture NLP Nodes Here.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:45:57.162240\",\"folder\":null,\"id\":\"a7a680b9-30b1-4438-ac24-da597de443aa\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Berserk Herschel\",\"description\":\"Your Hub for Text Generation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:46:02.593504\",\"folder\":null,\"id\":\"37a439b0-7b1d-45e3-b4fa-5c73669bae3b\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Distracted Joliot\",\"description\":\"Conversational Cartography Unlocked.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:04.845238\",\"folder\":null,\"id\":\"4d23fd0a-8ad5-46b9-bb99-eed4138e7426\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Happy Babbage\",\"description\":\"Flow into the Future of Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:41.899665\",\"folder\":null,\"id\":\"1c8ad5b9-5524-41fe-a762-52c75126b832\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Adoring Brown\",\"description\":\"Unlock the Power of AI in Your Business Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:42.702031\",\"folder\":null,\"id\":\"9d4c8e79-4904-4a51-a4bb-146c3d8db10e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Focused Mahavira\",\"description\":\"Design, Develop, Dialogize.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:42.786331\",\"folder\":null,\"id\":\"4ba370d1-1f8e-4a23-99aa-99e2cd9b7cbf\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Mad Gates\",\"description\":\"Where Language Meets Logic.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:42.838989\",\"folder\":null,\"id\":\"992c3cd3-1d79-4986-8c04-88a34130fa30\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Serene Mcclintock\",\"description\":\"Unlock the Power of AI in Your Business Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:42.932723\",\"folder\":null,\"id\":\"a65bfd13-44df-4090-aca0-5057e21e9997\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Berserk Feynman\",\"description\":\"Text Generation Meets Business Transformation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:42.931359\",\"folder\":null,\"id\":\"7a05dac5-c005-411d-9994-19d61e71ce78\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sprightly Perlman\",\"description\":\"Interactive Language Weaving.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:43.054687\",\"folder\":null,\"id\":\"6db24541-7211-48e6-a792-1a4a99a0ef90\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Jolly Colden\",\"description\":\"Flow into the Future of Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:43.078384\",\"folder\":null,\"id\":\"13ac42e8-9124-4bf4-9ea2-28671ef2d9a4\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gleeful Kaku\",\"description\":\"The Power of Language at Your Fingertips.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:50:33.156776\",\"folder\":null,\"id\":\"79262d75-5c62-4b14-b067-f4297f5c912f\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Jovial Khayyam\",\"description\":\"Empowering Communication, Enabling Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:51:13.295375\",\"folder\":null,\"id\":\"3b397e74-d8be-4728-9d6c-05f7c78106a7\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Goofy Mccarthy\",\"description\":\"Building Powerful Solutions with Language Models.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:51:27.632685\",\"folder\":null,\"id\":\"13f4e1fd-45eb-4271-92fd-0d70a31c61d2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cocky Lalande\",\"description\":\"Building Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:51:54.628983\",\"folder\":null,\"id\":\"9cfd60d8-9311-47b0-b71b-f488f1940bc7\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Romantic Mirzakhani\",\"description\":\"Innovation in Interaction with Langflow.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:52:52.622698\",\"folder\":null,\"id\":\"0d849403-0f75-455d-b4e4-0d622ee3305a\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Grinning Brown\",\"description\":\"Building Powerful Solutions with Language Models.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:53:06.056636\",\"folder\":null,\"id\":\"8643ba14-52d6-4d36-9981-5fd37de5dd76\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Kickass Watt\",\"description\":\"Transform Your Business with Smart Dialogues.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:53:23.338727\",\"folder\":null,\"id\":\"818d3066-bf08-4bf9-adcd-739f8abbfa5d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Goofy Bose\",\"description\":\"Unravel the Art of Articulation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:53:41.218861\",\"folder\":null,\"id\":\"28eff43e-0ecf-47bf-9851-f1492589978e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Optimistic Jennings\",\"description\":\"Create Powerful Connections, Boost Business Value.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:55:03.681106\",\"folder\":null,\"id\":\"68f59069-bc2a-464f-a983-4b61e32e01af\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Pedantic Mirzakhani\",\"description\":\"Language Chainlink Master.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:55:31.761949\",\"folder\":null,\"id\":\"5d981c0e-81b3-44cc-a5be-8f55b92bfed5\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Peppy Murdock\",\"description\":\"Create Powerful Connections, Boost Business Value.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:56:45.548598\",\"folder\":null,\"id\":\"e812ad47-47e8-422b-b94c-84fd0263c9c8\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Berserk Fermat\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:58:50.234270\",\"folder\":null,\"id\":\"82aaf449-e737-4699-9360-929ab6108dc7\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Tiny Albattani\",\"description\":\"Your Toolkit for Text Generation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:59:53.946035\",\"folder\":null,\"id\":\"097cb080-274b-40ca-8dde-7900a949568a\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cranky Kirch\",\"description\":\"Sculpting Language with Precision.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:00:51.745350\",\"folder\":null,\"id\":\"837d7b5f-8495-46a9-b00e-ad1b7ebb52f4\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Effervescent Kowalevski\",\"description\":\"Empowering Language Engineering.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:02:53.336102\",\"folder\":null,\"id\":\"3ff079c2-d9f9-4da6-a22a-423fa35670ff\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Radiant Stallman\",\"description\":\"Navigate the Linguistic Landscape, Discover Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:03:28.268357\",\"folder\":null,\"id\":\"c8b204dd-3d57-4bc8-aa13-1d559672e75b\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Grinning Swirles\",\"description\":\"Unleashing Linguistic Creativity.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:03:51.194455\",\"folder\":null,\"id\":\"a097f083-5880-4cf7-986b-51898bc68e11\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Dreamy Williams\",\"description\":\"Interactive Language Weaving.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:04:36.678251\",\"folder\":null,\"id\":\"d9585f63-ce76-42ce-87bc-8e69601ea5c6\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Zany Hawking\",\"description\":\"Flow into the Future of Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:05:13.672479\",\"folder\":null,\"id\":\"612a01d5-8c8d-4cc1-8c54-35626b7f4a6d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Amazing Kilby\",\"description\":\"Your Toolkit for Text Generation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:10:37.047955\",\"folder\":null,\"id\":\"2d05a598-3cdf-452a-bd5d-b0e569e562e3\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Insane Cori\",\"description\":\"Empowering Communication, Enabling Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:18:12.426578\",\"folder\":null,\"id\":\"d1769a4a-c1e9-4d74-9273-1e76cfcf21f3\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Compassionate Tesla\",\"description\":\"Graph Your Way to Great Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:18:52.806238\",\"folder\":null,\"id\":\"28c5d9dd-0466-4c80-9e58-b1e061cd358d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Jubilant Goldstine\",\"description\":\"Harness the Power of Conversational AI.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:21:44.488510\",\"folder\":null,\"id\":\"b3c57e4f-28a1-4580-bf08-a9484bdd66e8\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Elegant Curie\",\"description\":\"Building Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:23:47.610237\",\"folder\":null,\"id\":\"28fb024e-6ba1-4f5b-83b3-4742b3b8117c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Twinkly Chandrasekhar\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:24:29.824530\",\"folder\":null,\"id\":\"d2b87cf7-9167-4030-8e9f-b8d9aa0cadee\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Pensive Nobel\",\"description\":\"Crafting Dialogues that Drive Business Success.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:26:51.210699\",\"folder\":null,\"id\":\"c2c9fbac-7d97-40c2-8055-dff608df9414\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Elated Edison\",\"description\":\"Advanced NLP for Groundbreaking Business Solutions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:27:35.822482\",\"folder\":null,\"id\":\"a55561cd-4b25-473f-bde5-884cbabb0d24\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Dazzling Lichterman\",\"description\":\"Building Linguistic Labyrinths.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:29:09.259381\",\"folder\":null,\"id\":\"9c6fe6d4-8311-4fc6-8b02-2a816d7c059d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Distracted Bhaskara\",\"description\":\"Navigate the Networks of Conversation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:31:36.053452\",\"folder\":null,\"id\":\"ef6fc1ab-aff8-45a1-8cd5-bc8e38565e4d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Evil Watt\",\"description\":\"Building Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:32:26.765250\",\"folder\":null,\"id\":\"499b5351-9c09-4934-9f9d-a24be2fd8b24\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Jolly Wien\",\"description\":\"Bridging Prompts for Brilliance.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:33:23.648859\",\"folder\":null,\"id\":\"a57eda91-7f6e-410d-9990-385fe0c724f3\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Nostalgic Spence\",\"description\":\"Mapping Meaningful Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:34:22.576407\",\"folder\":null,\"id\":\"685f685e-8a1b-4b7e-9e21-6cdd72163c91\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Comical Fermat\",\"description\":\"Create, Connect, Converse.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:35:44.920540\",\"folder\":null,\"id\":\"3e061766-b834-4fa4-ba9c-b060925d9703\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Grave Volta\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:36:33.001572\",\"folder\":null,\"id\":\"135f2fd9-e005-40bc-a9bf-c25107388415\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gleeful Davinci\",\"description\":\"Create Powerful Connections, Boost Business Value.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:37:16.208823\",\"folder\":null,\"id\":\"167cdb24-7e1c-475b-893a-cca2f125426c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Hilarious Sinoussi\",\"description\":\"Language Chainlink Master.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:38:07.215401\",\"folder\":null,\"id\":\"48113cab-2c04-493f-8c2e-c8d067826aa2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Grave Sagan\",\"description\":\"Connect the Dots, Craft Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:39:19.479656\",\"folder\":null,\"id\":\"28d292dc-e094-4ffe-a657-178892933267\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cranky Hoover\",\"description\":\"Crafting Dialogues that Drive Business Success.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:40:02.895859\",\"folder\":null,\"id\":\"0c9849b7-b2d6-4d0e-8334-abfb3ae183dd\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Evil Mendeleev\",\"description\":\"Unfolding Linguistic Possibilities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:40:27.867247\",\"folder\":null,\"id\":\"d78c52e9-1941-4555-9bb9-abd01f176705\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Effervescent Dubinsky\",\"description\":\"Where Language Meets Logic.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:41:23.177402\",\"folder\":null,\"id\":\"5277a04c-b5da-4597-aaa2-a6b66ea11d02\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cocky Poitras\",\"description\":\"Where Language Meets Logic.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:42:08.731865\",\"folder\":null,\"id\":\"b0d0c8de-4eea-484a-a068-b13e63f7e71c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Pedantic Ptolemy\",\"description\":\"Crafting Conversations, One Node at a Time.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:42:25.658996\",\"folder\":null,\"id\":\"b6f155e2-03eb-4232-9bab-145463382fe9\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Loving Cray\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:43:57.530112\",\"folder\":null,\"id\":\"b75c10ca-9ecb-432b-88ab-e1847e836e22\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Effervescent Pasteur\",\"description\":\"Language Models, Mapped and Mastered.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:44:58.979393\",\"folder\":null,\"id\":\"3710eccb-e7a7-41d5-9339-d9c301515d17\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Pensive Gates\",\"description\":\"The Power of Language at Your Fingertips.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:45:42.744174\",\"folder\":null,\"id\":\"fdd2271e-92f6-4349-8c01-2ec0e9e73f13\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Determined Khorana\",\"description\":\"Beyond Text Generation - Unleashing Business Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:46:10.084684\",\"folder\":null,\"id\":\"88b49a97-0888-4fea-8d9b-6ac2cc6d158e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lonely Booth\",\"description\":\"Design Dialogues with Langflow.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:46:41.577750\",\"folder\":null,\"id\":\"629afe54-8796-45be-a570-e3ac79c60792\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Jubilant Mendeleev\",\"description\":\"Chain the Words, Master Language!\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:47:22.631243\",\"folder\":null,\"id\":\"7bf481b0-73fe-4f5b-a3d4-1263d9d8e827\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Clever Varahamihira\",\"description\":\"Building Powerful Solutions with Language Models.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:49:51.026960\",\"folder\":null,\"id\":\"df9e86b6-56c9-4848-9010-102615314766\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sleepy Stallman\",\"description\":\"Empowering Language Engineering.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:50:14.932236\",\"folder\":null,\"id\":\"3e66994c-9b7a-4b85-a917-65d1959d7352\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Modest Wozniak\",\"description\":\"Advanced NLP for Groundbreaking Business Solutions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:51:13.811894\",\"folder\":null,\"id\":\"d10f924a-5780-4255-9f41-3e102ae03e84\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Hopeful Mirzakhani\",\"description\":\"Graph Your Way to Great Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:52:23.906908\",\"folder\":null,\"id\":\"f3378fa8-ccaf-4a3b-90d6-b8ab0c4e481f\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Awesome Joule\",\"description\":\"Design, Develop, Dialogize.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:52:43.863440\",\"folder\":null,\"id\":\"deaa50e7-a8b1-46b1-856c-334ee781e1c2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Peppy Shockley\",\"description\":\"Generate, Innovate, Communicate.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:53:43.299699\",\"folder\":null,\"id\":\"c72eac2c-d924-40c6-a102-da524216d090\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Zany Dewey\",\"description\":\"Flow into the Future of Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:54:18.848827\",\"folder\":null,\"id\":\"d9425324-bb60-462e-b431-90a536f2bc76\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gloomy Joliot\",\"description\":\"Language Engineering Excellence.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:58:12.348608\",\"folder\":null,\"id\":\"621ba134-3fac-487c-98cd-96941439f1be\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Backstabbing Franklin\",\"description\":\"Craft Language Connections Here.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:58:13.491824\",\"folder\":null,\"id\":\"86ca9773-c7b7-4a1a-859a-6cbe0ddff206\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sharp Swartz\",\"description\":\"Beyond Text Generation - Unleashing Business Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:58:13.524414\",\"folder\":null,\"id\":\"da1c02b7-d608-4498-9946-7d02f55fa103\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Serene Volta\",\"description\":\"Connect the Dots, Craft Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:58:13.641432\",\"folder\":null,\"id\":\"8d5dd998-6b51-4f65-8331-086a7f3b11d7\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Focused Lichterman\",\"description\":\"Crafting Dialogues that Drive Business Success.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:58:13.746120\",\"folder\":null,\"id\":\"942027d3-e2ea-48c6-8279-0a41b54e8862\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lively Einstein\",\"description\":\"Unleashing Linguistic Creativity.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:58:13.746904\",\"folder\":null,\"id\":\"9e9b6298-1073-4297-8ecc-3c620b432e70\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cocky Planck\",\"description\":\"Empowering Language Engineering.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:58:13.747420\",\"folder\":null,\"id\":\"7cd60c83-b797-4e60-af6d-cbc540657943\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Suspicious Zobell\",\"description\":\"Innovation in Interaction, Revolution in Revenue.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:58:13.749951\",\"folder\":null,\"id\":\"dab08306-9521-4e15-aa11-e6a6a4e210f8\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Small Knuth\",\"description\":\"Nurture NLP Nodes Here.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:16.772119\",\"folder\":null,\"id\":\"c9149590-636a-44f5-aaae-45a4e78fe4df\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Evil Wright\",\"description\":\"Unfolding Linguistic Possibilities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:52.954568\",\"folder\":null,\"id\":\"6b23b2ad-c07c-46f6-b9ad-268783d1712e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Vibrant Lalande\",\"description\":\"Language Models, Mapped and Mastered.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:53.656156\",\"folder\":null,\"id\":\"ece3bcf6-a147-4559-862e-cacff9db5f48\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Happy Gauss\",\"description\":\"The Pinnacle of Prompt Generation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:53.717991\",\"folder\":null,\"id\":\"252b6021-ecad-4eaf-9e2f-106c4c89c496\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gigantic Rosalind\",\"description\":\"Building Powerful Solutions with Language Models.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:53.736261\",\"folder\":null,\"id\":\"b8cb6d8d-c0fb-4e8d-a46e-2c608dc8a714\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Adoring Hubble\",\"description\":\"Powerful Prompts, Perfectly Positioned.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:53.769546\",\"folder\":null,\"id\":\"553a67db-7225-474c-978e-8a40cde2bfb2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Pensive Mclean\",\"description\":\"Unlock the Power of AI in Your Business Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:53.981063\",\"folder\":null,\"id\":\"e0865007-4d80-4edf-87ab-9e8d2892d719\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Trusting Murdock\",\"description\":\"Uncover Business Opportunities with NLP.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:53.982286\",\"folder\":null,\"id\":\"1021cd20-66e0-4b81-9c79-bfe729774d20\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Perky Riemann\",\"description\":\"Powerful Prompts, Perfectly Positioned.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:53.983216\",\"folder\":null,\"id\":\"089074d3-8a1e-4d85-a59d-b4717090e4d3\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Small Tesla\",\"description\":\"Language Models, Unleashed.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:00:35.704142\",\"folder\":null,\"id\":\"beb49d88-255e-4db4-931b-4ab4358f1097\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Effervescent Boyd\",\"description\":\"Smart Chains, Smarter Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:01:13.569507\",\"folder\":null,\"id\":\"75b5ab8d-e0c0-43cf-912b-8578550e198a\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Small Babbage\",\"description\":\"Interactive Language Weaving.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:01:27.944868\",\"folder\":null,\"id\":\"503edd55-8f70-43e5-87fb-2324eaf62336\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lonely Bose\",\"description\":\"Crafting Dialogues that Drive Business Success.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:02:40.122079\",\"folder\":null,\"id\":\"ae4f2992-1a23-4a43-bec6-68b823935762\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Mirthful Coulomb\",\"description\":\"Craft Meaningful Interactions, Generate Value.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:03:15.263237\",\"folder\":null,\"id\":\"a2a464db-b02a-4440-ad9e-7b552ee6c027\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Drunk Newton\",\"description\":\"Craft Meaningful Interactions, Generate Value.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:03:15.883766\",\"folder\":null,\"id\":\"1a5d9af7-5a96-4035-a09c-e15741785828\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Jovial Pasteur\",\"description\":\"Your Hub for Text Generation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:03:15.933083\",\"folder\":null,\"id\":\"04b94873-0828-41dc-a850-fd4132c9b9f1\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Playful Spence\",\"description\":\"Connect the Dots, Craft Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:03:15.967685\",\"folder\":null,\"id\":\"47003dc2-7884-48a3-aa66-e4185079f4d9\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cheerful Noyce\",\"description\":\"Your Passport to Linguistic Landscapes.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:03:15.983198\",\"folder\":null,\"id\":\"13769cb4-2e15-4d54-a28a-c97dc15db58c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Awesome Edison\",\"description\":\"Unfolding Linguistic Possibilities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:03:16.018879\",\"folder\":null,\"id\":\"453dacde-6b10-406b-a5b3-f90f44be6899\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Upbeat Snyder\",\"description\":\"Powerful Prompts, Perfectly Positioned.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:03:16.205689\",\"folder\":null,\"id\":\"9544fac9-3002-47aa-86b9-102844fe9649\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Tender Khorana\",\"description\":\"Chain the Words, Master Language!\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:03:16.243434\",\"folder\":null,\"id\":\"90498ef6-34f9-45c8-8cd0-fe6a36a26f41\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Elated Albattani\",\"description\":\"Interactive Language Weaving.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:05:07.775497\",\"folder\":null,\"id\":\"9577c416-8ce8-48f6-ad6d-ab2e003bb415\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Charming Goodall\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:07:52.139318\",\"folder\":null,\"id\":\"f10dc08e-b9c7-44b3-8837-b95aee2f6dbb\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Hilarious Ramanujan\",\"description\":\"Harness the Power of Conversational AI.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:08:22.448480\",\"folder\":null,\"id\":\"c864bd8c-67cd-465f-bf7d-7a35c7df37f3\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Tender Mclean\",\"description\":\"Unleashing Linguistic Creativity.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:09:56.507826\",\"folder\":null,\"id\":\"f0c13b19-ae23-40e6-88d6-d135897ee100\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Grave Hawking\",\"description\":\"Building Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:10:27.169757\",\"folder\":null,\"id\":\"0afb91b4-8f41-4270-900a-f5de647d45ad\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gloomy Lovelace\",\"description\":\"Your Passport to Linguistic Landscapes.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:11:02.292233\",\"folder\":null,\"id\":\"0f1e5dcf-8769-4157-b495-5f215b490107\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Fervent Kilby\",\"description\":\"Empowering Enterprises with Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:11:46.960966\",\"folder\":null,\"id\":\"310d03d9-dd50-4946-9a27-38ee06906212\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Admiring Almeida\",\"description\":\"Language Models, Mapped and Mastered.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:12:24.475101\",\"folder\":null,\"id\":\"3cbc8fc2-a86f-4177-9a1c-a833b2a24283\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Elated Roentgen\",\"description\":\"Empowering Enterprises with Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:06.753571\",\"folder\":null,\"id\":\"c508e922-29e9-4234-84ae-505c5bdf41c1\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Perky Poitras\",\"description\":\"Chain the Words, Master Language!\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:07.754605\",\"folder\":null,\"id\":\"1431df05-1b6f-41af-a063-a18d26a946ef\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Tender Khayyam\",\"description\":\"Navigate the Linguistic Landscape, Discover Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:07.791627\",\"folder\":null,\"id\":\"344e03fb-fd49-4e87-be67-7dce04ba655b\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Zealous Mayer\",\"description\":\"Navigate the Linguistic Landscape, Discover Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:07.803889\",\"folder\":null,\"id\":\"8b3ff1cb-3a6c-46ee-b09a-0e9f9f13a8b9\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Tiny Ramanujan\",\"description\":\"Empowering Communication, Enabling Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:07.822583\",\"folder\":null,\"id\":\"18961e76-f4b1-4968-926a-fed22cb04f69\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cheerful Franklin\",\"description\":\"Building Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:07.854440\",\"folder\":null,\"id\":\"0e0ee854-ab46-4333-a848-2e1239a24334\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Serene Swirles\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:07.988932\",\"folder\":null,\"id\":\"cc7b8238-3d15-4f78-bd0c-8311691c9ff8\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sleepy Swartz\",\"description\":\"Uncover Business Opportunities with NLP.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:08.028688\",\"folder\":null,\"id\":\"123369f9-c83c-4ed3-93b6-78ca29c271cf\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cranky Kowalevski\",\"description\":\"Unleashing Linguistic Creativity.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:59.097607\",\"folder\":null,\"id\":\"ed4b1490-e9e5-46bf-b337-166b48eaadd6\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sprightly Golick\",\"description\":\"Building Powerful Solutions with Language Models.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:59.617772\",\"folder\":null,\"id\":\"9d1be311-c618-4e3e-aeb1-4161ab37850e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Boring Newton\",\"description\":\"Generate, Innovate, Communicate.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:59.646124\",\"folder\":null,\"id\":\"63a75f99-1745-40d3-9e27-3d19a143be45\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sprightly Noyce\",\"description\":\"Beyond Text Generation - Unleashing Business Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:59.685781\",\"folder\":null,\"id\":\"b418ca87-eb17-42e8-b789-3fcb0cab3ddb\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Fluffy Fermat\",\"description\":\"Text Generation Meets Business Transformation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:59.705984\",\"folder\":null,\"id\":\"93802b07-eee9-4a2b-8691-7d9a231bd67e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Stoic Payne\",\"description\":\"Beyond Text Generation - Unleashing Business Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:59.723990\",\"folder\":null,\"id\":\"d62df661-0ae5-4b41-a9fb-71cb2e46ad52\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Effervescent Darwin\",\"description\":\"Unleashing Linguistic Creativity.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:59.818343\",\"folder\":null,\"id\":\"d1f62248-415c-474a-bfa6-3509a528a33b\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Focused Thompson\",\"description\":\"Transform Your Business with Smart Dialogues.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:59.925999\",\"folder\":null,\"id\":\"d2267176-f020-4c52-90a4-7f944d7c1749\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Admiring Dewey\",\"description\":\"Navigate the Networks of Conversation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:15:07.400402\",\"folder\":null,\"id\":\"8cf1ac8d-d34d-4e8a-a9da-be44672e1dfb\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Prickly Zuse\",\"description\":\"Where Language Meets Logic.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:15:08.384611\",\"folder\":null,\"id\":\"bae3cb5b-0f1b-4e95-bf58-7eab38da3d73\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Hungry Zuse\",\"description\":\"The Pinnacle of Prompt Generation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:15:08.436591\",\"folder\":null,\"id\":\"4dfafe3e-e9ef-405d-be72-550084411d69\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lonely Khayyam\",\"description\":\"Design Dialogues with Langflow.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:15:08.435958\",\"folder\":null,\"id\":\"e0f81215-dc55-4b5a-b8cf-6e2fcbf297a7\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Big Mendel\",\"description\":\"Innovation in Interaction with Langflow.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:15:08.470080\",\"folder\":null,\"id\":\"5022a71c-da47-4975-a4d0-6d2d9e760d3d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Inquisitive Poitras\",\"description\":\"Navigate the Networks of Conversation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:15:08.484430\",\"folder\":null,\"id\":\"4f1ff9e3-3500-404c-80af-2010bc46cdcb\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Joyous Jones\",\"description\":\"The Power of Language at Your Fingertips.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:15:08.661306\",\"folder\":null,\"id\":\"77af3e47-c2cc-42f6-99e1-78589439a447\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Exuberant Khayyam\",\"description\":\"Empowering Communication, Enabling Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:15:08.662877\",\"folder\":null,\"id\":\"6f3e2e56-b329-47e3-86cc-024c29203016\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Dazzling Visvesvaraya\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:16:10.092917\",\"folder\":null,\"id\":\"449ac0ee-ee29-4a9f-9aff-fd6a86624457\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Nostalgic Tesla\",\"description\":\"Nurture NLP Nodes Here.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:16:10.630382\",\"folder\":null,\"id\":\"a2136ed3-dc75-4a8f-ab34-6887ff955b23\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Goofy Noether\",\"description\":\"Language Models, Unleashed.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:16:10.652058\",\"folder\":null,\"id\":\"fd1080f8-db07-481a-b2ba-60f67fcb20a6\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Dazzling Pasteur\",\"description\":\"Language Models, Unleashed.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:16:10.688661\",\"folder\":null,\"id\":\"d534d5e1-92aa-4fb2-a795-7071c4feba47\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Comical Sinoussi\",\"description\":\"Bridging Prompts for Brilliance.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:16:10.741385\",\"folder\":null,\"id\":\"85323170-c066-4d8f-acb0-1b142241389e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Small Ramanujan\",\"description\":\"Uncover Business Opportunities with NLP.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:16:10.790086\",\"folder\":null,\"id\":\"b0d18432-21ab-404b-acb6-57ef97353fad\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sick Joliot\",\"description\":\"Text Generation Meets Business Transformation.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":442,\"id\":\"OpenAIEmbeddings-rVj1B\",\"type\":\"genericNode\",\"position\":{\"x\":-100.23754663035719,\"y\":-718.7575880388187},\"data\":{\"type\":\"OpenAIEmbeddings\",\"node\":{\"template\":{\"allowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[],\"password\":false,\"name\":\"allowed_special\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"chunk_size\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":1000,\"password\":false,\"name\":\"chunk_size\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"deployment\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"text-embedding-ada-002\",\"password\":false,\"name\":\"deployment\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"disallowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"all\",\"password\":false,\"name\":\"disallowed_special\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"embedding_ctx_length\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":8191,\"password\":false,\"name\":\"embedding_ctx_length\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"{\\\"Authorization\\\": \\\"Bearer \\\"}\",\"password\":false,\"name\":\"headers\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"model\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"text-embedding-ada-002\",\"password\":false,\"name\":\"model\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_api_type\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_type\",\"display_name\":\"OpenAI API Type\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_api_version\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_version\",\"display_name\":\"OpenAI API Version\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"show_progress_bar\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"show_progress_bar\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"skip_empty\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"skip_empty\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tiktoken_enabled\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":true,\"password\":true,\"name\":\"tiktoken_enabled\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"_type\":\"OpenAIEmbeddings\"},\"description\":\"OpenAI embedding models.\",\"base_classes\":[\"OpenAIEmbeddings\",\"Embeddings\"],\"display_name\":\"OpenAIEmbeddings\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"OpenAIEmbeddings-rVj1B\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":-100.23754663035719,\"y\":-718.7575880388187}}],\"edges\":[],\"viewport\":{\"x\":267.7156633365312,\"y\":716.9644817529361,\"zoom\":0.7169776240079139}},\"is_component\":false,\"updated_at\":\"2023-12-08T18:52:26.999440\",\"folder\":null,\"id\":\"be39958a-ef42-4fa8-8e54-b611e56b5c97\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Graceful Lumiere\",\"description\":\"Conversational Cartography Unlocked.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:16:11.012069\",\"folder\":null,\"id\":\"f7dcecfd-533c-4f40-9dcb-f213962ed1a2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"aaaaa\",\"description\":\"Text Generation Meets Business Transformation.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":442,\"id\":\"OpenAIEmbeddings-P6Z0D\",\"type\":\"genericNode\",\"position\":{\"x\":-100.23754663035719,\"y\":-718.7575880388187},\"data\":{\"type\":\"OpenAIEmbeddings\",\"node\":{\"template\":{\"allowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[],\"password\":false,\"name\":\"allowed_special\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"chunk_size\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":1000,\"password\":false,\"name\":\"chunk_size\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"deployment\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"text-embedding-ada-002\",\"password\":false,\"name\":\"deployment\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"disallowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"all\",\"password\":false,\"name\":\"disallowed_special\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"embedding_ctx_length\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":8191,\"password\":false,\"name\":\"embedding_ctx_length\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"{\\\"Authorization\\\": \\\"Bearer \\\"}\",\"password\":false,\"name\":\"headers\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"model\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"text-embedding-ada-002\",\"password\":false,\"name\":\"model\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_api_type\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_type\",\"display_name\":\"OpenAI API Type\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"openai_api_version\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_version\",\"display_name\":\"OpenAI API Version\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"show_progress_bar\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"show_progress_bar\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"skip_empty\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"skip_empty\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tiktoken_enabled\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":true,\"password\":true,\"name\":\"tiktoken_enabled\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"_type\":\"OpenAIEmbeddings\"},\"description\":\"OpenAI embedding models.\",\"base_classes\":[\"OpenAIEmbeddings\",\"Embeddings\"],\"display_name\":\"OpenAIEmbeddings\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"OpenAIEmbeddings-P6Z0D\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":-100.23754663035719,\"y\":-718.7575880388187}}],\"edges\":[],\"viewport\":{\"x\":266.7156633365312,\"y\":657.9644817529361,\"zoom\":0.7169776240079139}},\"is_component\":false,\"updated_at\":\"2023-12-08T19:05:14.503144\",\"folder\":null,\"id\":\"c2411a20-57c6-44cc-a0d0-2c857453633d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lively Aryabhata\",\"description\":\"Design, Develop, Dialogize.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":459,\"id\":\"CustomComponent-Qhbd7\",\"type\":\"genericNode\",\"position\":{\"x\":-224.36198532285903,\"y\":-39.03047722134913},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nfrom openai import OpenAI\\n\\n\\nclass Component(CustomComponent):\\n display_name: str = \\\"OpenAI STT english translator\\\"\\n description: str = \\\"Transcript and translate any audio to english\\\"\\n documentation: str = \\\"http://docs.langflow.org/components/custom\\\"\\n\\n def build_config(self):\\n return {\\\"audio_path\\\":{\\\"display_name\\\":\\\"Audio path\\\",\\\"input_types\\\":[\\\"str\\\"]},\\\"openAI_key\\\":{\\\"display_name\\\":\\\"OpenAI key\\\",\\\"password\\\":True}}\\n\\n def build(self,audio_path:str,openAI_key:str) -> str:\\n client = OpenAI(api_key=openAI_key)\\n audio_file= open(audio_path, \\\"rb\\\")\\n transcript = client.audio.translations.create(\\n model=\\\"whisper-1\\\", \\n file=audio_file\\n )\\n self.status = transcript.text\\n return transcript.text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"audio_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"audio_path\",\"display_name\":\"Audio path\",\"advanced\":false,\"input_types\":[\"str\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"aaaaa\"},\"openAI_key\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openAI_key\",\"display_name\":\"OpenAI key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"}},\"description\":\"Transcript and translate any audio to english\",\"base_classes\":[\"str\"],\"display_name\":\"OpenAI STT english tra\",\"custom_fields\":{\"audio_path\":null,\"openAI_key\":null},\"output_types\":[\"str\"],\"documentation\":\"http://docs.langflow.org/components/custom\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"CustomComponent-Qhbd7\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":-224.36198532285903,\"y\":-39.03047722134913}}],\"edges\":[],\"viewport\":{\"x\":433.8372868055629,\"y\":250.9611989970935,\"zoom\":0.8467453123625275}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:16:56.971879\",\"folder\":null,\"id\":\"122eee5d-9734-4e51-9da5-b39bead64a8d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Goofy Wing\",\"description\":\"Your Toolkit for Text Generation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:18:23.227017\",\"folder\":null,\"id\":\"171d0063-6446-4c6a-8f5b-786a38951d44\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Mad Boyd\",\"description\":\"Empowering Language Engineering.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:18:24.063781\",\"folder\":null,\"id\":\"3a7af50c-6555-4004-a86e-1ea37e477900\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Boring Dewey\",\"description\":\"Unleashing Linguistic Creativity.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:18:24.065404\",\"folder\":null,\"id\":\"dc4b4235-a550-41e2-9ddb-bcb352a1bc03\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Nauseous Carroll\",\"description\":\"Navigate the Networks of Conversation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:18:24.087501\",\"folder\":null,\"id\":\"9550e2bf-db7a-41f5-84e5-177a181bbeda\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Silly Engelbart\",\"description\":\"Generate, Innovate, Communicate.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:18:24.112543\",\"folder\":null,\"id\":\"6a3a24bb-01cb-4d8e-8d17-0dc92d257322\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sassy Khayyam\",\"description\":\"Innovation in Interaction, Revolution in Revenue.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:18:24.147631\",\"folder\":null,\"id\":\"8d372f5e-ca12-4ea8-a1a1-8846afa72692\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Mirthful Bell\",\"description\":\"Connect the Dots, Craft Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:18:24.212921\",\"folder\":null,\"id\":\"800f8785-0f41-4db3-aef8-9e3de5250526\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sleepy Bassi\",\"description\":\"Unleashing Business Potential through Language Engineering.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:18:24.395729\",\"folder\":null,\"id\":\"4589607a-065b-4a8f-ba52-5045d7b04086\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lonely Volhard\",\"description\":\"Where Language Meets Logic.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:20:33.263971\",\"folder\":null,\"id\":\"b2440ed8-44fa-4684-adf7-b5e84bff6577\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Ecstatic Poincare\",\"description\":\"Your Passport to Linguistic Landscapes.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:20:33.377270\",\"folder\":null,\"id\":\"b996f514-e0b8-432f-969b-7276630a8f4b\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Grave Zuse\",\"description\":\"Text Generation Meets Business Transformation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:20:33.406385\",\"folder\":null,\"id\":\"6e2e9c12-0afc-499e-acdd-adf4b5f7d4fc\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Big Hopper\",\"description\":\"Conversation Catalyst Engine.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:20:33.413014\",\"folder\":null,\"id\":\"e020f1a5-aa12-45e7-ba50-6eb64a735e60\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gleeful Jang\",\"description\":\"Conversation Catalyst Engine.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:20:33.433045\",\"folder\":null,\"id\":\"ee58f892-b7b2-408e-b4b9-9d862fc315aa\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Twinkly Ohm\",\"description\":\"Promptly Ingenious!\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:20:33.403404\",\"folder\":null,\"id\":\"023a1fc3-8807-4167-b6b2-f4e5daf036f1\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Distracted Degrasse\",\"description\":\"Bridging Prompts for Brilliance.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:20:33.411655\",\"folder\":null,\"id\":\"085f106f-c1e9-4a0f-ba31-d2fafe685d9c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Exuberant Volta\",\"description\":\"Catalyzing Business Growth through Conversational AI.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:20:33.408697\",\"folder\":null,\"id\":\"14481bb5-1353-452f-9359-d38c9419d79c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Goofy Bose\",\"description\":\"Conversational Cartography Unlocked.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:22:21.774940\",\"folder\":null,\"id\":\"e9316292-4ee1-441b-8327-0b09a7831fe9\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Thirsty Easley\",\"description\":\"Language Models, Mapped and Mastered.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:22:22.416556\",\"folder\":null,\"id\":\"668806ba-3efa-44de-aeb7-4ac082ba9172\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Joyous Mestorf\",\"description\":\"Generate, Innovate, Communicate.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:22:22.484048\",\"folder\":null,\"id\":\"3fc0a371-aada-4450-9d17-33d3cc05c870\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Playful Franklin\",\"description\":\"Empowering Language Engineering.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:22:22.509095\",\"folder\":null,\"id\":\"af967c98-5f08-4ee2-b1ce-6c16b4f9ebe2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Goofy Bhaskara\",\"description\":\"Empowering Enterprises with Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:22:22.508465\",\"folder\":null,\"id\":\"758c4164-b521-45d0-a15f-d49480e312eb\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Funky Edison\",\"description\":\"Unravel the Art of Articulation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:22:22.602296\",\"folder\":null,\"id\":\"f9d3d30f-8859-433f-bafc-ccf1a7196e35\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Silly Ride\",\"description\":\"Unfolding Linguistic Possibilities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:22:22.604061\",\"folder\":null,\"id\":\"0142bca5-eb61-42ed-9917-70c4c0f54eb0\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Goofy Noyce\",\"description\":\"Text Generation Meets Business Transformation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:22:22.603113\",\"folder\":null,\"id\":\"0b63d036-4669-4ceb-8ea4-34035340df77\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cocky Bhabha\",\"description\":\"Language Engineering Excellence.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:23:07.345767\",\"folder\":null,\"id\":\"8b9a66d4-a924-4b84-a2b5-5dd0645ac07a\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Thirsty Zobell\",\"description\":\"Unleashing Business Potential through Language Engineering.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:23:07.722319\",\"folder\":null,\"id\":\"c912fd6b-b32d-409f-a0e5-c6249b066429\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Fervent Shaw\",\"description\":\"Language Architect at Work!\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:23:07.750779\",\"folder\":null,\"id\":\"9d755cd4-c652-43e0-a68d-75a5475ce7a3\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Giggly Newton\",\"description\":\"Navigate the Linguistic Landscape, Discover Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:23:07.786602\",\"folder\":null,\"id\":\"0d3af7de-1ada-4c43-a69f-1bfad370ccfc\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Modest Yalow\",\"description\":\"Text Generation Meets Business Transformation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:23:07.792245\",\"folder\":null,\"id\":\"b6444376-4162-436b-8b40-f5a6afc850db\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sad Bhabha\",\"description\":\"Empowering Enterprises with Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:23:07.890349\",\"folder\":null,\"id\":\"d90af439-fb34-4d27-98f2-06f7f9a9ed8c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Spirited Hoover\",\"description\":\"The Pinnacle of Prompt Generation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:23:07.905750\",\"folder\":null,\"id\":\"31597ce2-de3c-490b-9ead-3f702f63cfd9\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Trusting Davinci\",\"description\":\"Design, Develop, Dialogize.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:23:08.001400\",\"folder\":null,\"id\":\"b43c63e9-a257-4a53-8acc-049e13706ac2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"23\",\"description\":\"23\",\"data\":{\"nodes\":[{\"width\":384,\"height\":467,\"id\":\"PromptTemplate-K7xiS\",\"type\":\"genericNode\",\"position\":{\"x\":-658.2250903773149,\"y\":809.352046606987},\"data\":{\"type\":\"PromptTemplate\",\"node\":{\"template\":{\"output_parser\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false},\"input_types\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"input_variables\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"dasdas\",\"dasdasd\"]},\"partial_variables\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"template\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"prompt\",\"list\":false,\"value\":\"{dasdas}\\n{dasdasd}\\n\"},\"template_format\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"f-string\",\"password\":false,\"name\":\"template_format\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":false},\"validate_template\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"PromptTemplate\",\"dasdas\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"dasdas\",\"display_name\":\"dasdas\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"dasdasd\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"dasdasd\",\"display_name\":\"dasdasd\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"A prompt template for a language model.\",\"base_classes\":[\"PromptTemplate\",\"BasePromptTemplate\",\"StringPromptTemplate\"],\"name\":\"\",\"display_name\":\"PromptTemplate\",\"documentation\":\"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\"custom_fields\":{\"\":[\"dasdas\",\"dasdasd\"]},\"output_types\":[],\"full_path\":null,\"field_formatters\":{},\"beta\":false,\"error\":null},\"id\":\"PromptTemplate-K7xiS\"},\"selected\":false,\"positionAbsolute\":{\"x\":-658.2250903773149,\"y\":809.352046606987},\"dragging\":false},{\"width\":384,\"height\":366,\"id\":\"AirbyteJSONLoader-DXfcM\",\"type\":\"genericNode\",\"position\":{\"x\":-1110.8267574563533,\"y\":569.1107380883907},\"data\":{\"type\":\"AirbyteJSONLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"suffixes\":[\".json\"],\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\"json\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"\":\"\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"AirbyteJSONLoader\"},\"description\":\"Load local `Airbyte` json files.\",\"base_classes\":[\"Document\"],\"display_name\":\"AirbyteJSONLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/airbyte_json\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"AirbyteJSONLoader-DXfcM\"},\"selected\":false,\"positionAbsolute\":{\"x\":-1110.8267574563533,\"y\":569.1107380883907},\"dragging\":false},{\"width\":384,\"height\":376,\"id\":\"PromptRunner-ckWMH\",\"type\":\"genericNode\",\"position\":{\"x\":-1149.4746387825978,\"y\":992.3970573758324},\"data\":{\"type\":\"PromptRunner\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\n\\nfrom langchain.llms.base import BaseLLM\\nfrom langchain.prompts import PromptTemplate\\nfrom langchain.schema import Document\\n\\n\\nclass PromptRunner(CustomComponent):\\n display_name: str = \\\"Prompt Runner\\\"\\n description: str = \\\"Run a Chain with the given PromptTemplate\\\"\\n beta: bool = True\\n field_config = {\\n \\\"llm\\\": {\\\"display_name\\\": \\\"LLM\\\"},\\n \\\"prompt\\\": {\\n \\\"display_name\\\": \\\"Prompt Template\\\",\\n \\\"info\\\": \\\"Make sure the prompt has all variables filled.\\\",\\n },\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(self, llm: BaseLLM, prompt: PromptTemplate, inputs: dict = {}) -> Document:\\n chain = prompt | llm\\n # The input is an empty dict because the prompt is already filled\\n result = chain.invoke(input=inputs)\\n if hasattr(result, \\\"content\\\"):\\n result = result.content\\n self.repr_value = result\\n return Document(page_content=str(result))\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"inputs\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"\":\"\"}],\"password\":false,\"name\":\"inputs\",\"display_name\":\"inputs\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLLM\",\"list\":false},\"prompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"prompt\",\"display_name\":\"Prompt Template\",\"advanced\":false,\"dynamic\":false,\"info\":\"Make sure the prompt has all variables filled.\",\"type\":\"PromptTemplate\",\"list\":false}},\"description\":\"Run a Chain with the given PromptTemplate\",\"base_classes\":[\"Document\"],\"display_name\":\"Prompt Runner\",\"custom_fields\":{\"inputs\":null,\"llm\":null,\"prompt\":null},\"output_types\":[\"PromptRunner\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"PromptRunner-ckWMH\"},\"selected\":false,\"positionAbsolute\":{\"x\":-1149.4746387825978,\"y\":992.3970573758324},\"dragging\":false}],\"edges\":[{\"source\":\"PromptRunner-ckWMH\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“Documentล“],ล“dataTypeล“:ล“PromptRunnerล“,ล“idล“:ล“PromptRunner-ckWMHล“}\",\"target\":\"PromptTemplate-K7xiS\",\"targetHandle\":\"{ล“fieldNameล“:ล“dasdasdล“,ล“idล“:ล“PromptTemplate-K7xiSล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"dasdasd\",\"id\":\"PromptTemplate-K7xiS\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"Document\"],\"dataType\":\"PromptRunner\",\"id\":\"PromptRunner-ckWMH\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-PromptRunner-ckWMH{ล“baseClassesล“:[ล“Documentล“],ล“dataTypeล“:ล“PromptRunnerล“,ล“idล“:ล“PromptRunner-ckWMHล“}-PromptTemplate-K7xiS{ล“fieldNameล“:ล“dasdasdล“,ล“idล“:ล“PromptTemplate-K7xiSล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\"},{\"source\":\"AirbyteJSONLoader-DXfcM\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“Documentล“],ล“dataTypeล“:ล“AirbyteJSONLoaderล“,ล“idล“:ล“AirbyteJSONLoader-DXfcMล“}\",\"target\":\"PromptTemplate-K7xiS\",\"targetHandle\":\"{ล“fieldNameล“:ล“dasdasล“,ล“idล“:ล“PromptTemplate-K7xiSล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"dasdas\",\"id\":\"PromptTemplate-K7xiS\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"Document\"],\"dataType\":\"AirbyteJSONLoader\",\"id\":\"AirbyteJSONLoader-DXfcM\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-AirbyteJSONLoader-DXfcM{ล“baseClassesล“:[ล“Documentล“],ล“dataTypeล“:ล“AirbyteJSONLoaderล“,ล“idล“:ล“AirbyteJSONLoader-DXfcMล“}-PromptTemplate-K7xiS{ล“fieldNameล“:ล“dasdasล“,ล“idล“:ล“PromptTemplate-K7xiSล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\"}],\"viewport\":{\"x\":721.09842496776,\"y\":-303.59762799439625,\"zoom\":0.6417129487814537}},\"is_component\":false,\"updated_at\":\"2023-12-08T22:52:14.560323\",\"folder\":null,\"id\":\"8533c46e-21fd-4b92-b68e-1086ea86c72d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Twinkly Stonebraker\",\"description\":\"Navigate the Linguistic Landscape, Discover Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-09T13:26:42.332360\",\"folder\":null,\"id\":\"92bc0875-4a73-44f2-9410-3b8342e404bf\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Metaphor Search (1)\",\"description\":\"Search in Metaphor with a custom string.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom typing import List, Union\\nfrom langchain.llms.base import BaseLLM\\nfrom langchain.chains import LLMChain\\nfrom langchain import PromptTemplate\\nfrom langchain.schema import Document\\nfrom metaphor_python import Metaphor\\nimport json\\n\\nfrom typing import List\\nfrom langflow.field_typing import Data\\n\\nclass MetaphorSearch(CustomComponent):\\n display_name: str = \\\"Metaphor Search\\\"\\n description: str = \\\"Search in Metaphor with a custom string.\\\"\\n beta = True\\n \\n def build_config(self):\\n return {\\n \\\"metaphor_client\\\": {\\\"display_name\\\": \\\"Metaphor Wrapper\\\"}, \\n \\\"search_num_results\\\": {\\\"display_name\\\": \\\"Number of Results (per domain)\\\"},\\n \\\"include_domains\\\": {\\\"display_name\\\": \\\"Include Domains\\\", \\\"is_list\\\": True},\\n \\\"start_date\\\": {\\\"display_name\\\": \\\"Start Date\\\"},\\n \\\"use_autoprompt\\\": {\\\"display_name\\\": \\\"Use Autoprompt\\\", \\\"type\\\": \\\"boolean\\\"},\\n \\\"search_type\\\": {\\\"display_name\\\": \\\"Search Type\\\", \\\"options\\\": [\\\"neural\\\", \\\"keyword\\\"]},\\n \\\"start_date\\\": {\\\"input_types\\\": [\\\"Data\\\"]}\\n }\\n\\n def build(\\n self,\\n methaphor_client: Data,\\n query: str,\\n search_type: str='keyword',\\n search_num_results: int = 5,\\n include_domains: List[str]= [\\\"youtube.com\\\"],\\n use_autoprompt: bool = False,\\n start_date: str=\\\"2023-01-01\\\",\\n \\n ) -> Data:\\n \\n results = []\\n for domain in include_domains:\\n response = methaphor_client.search(\\n query,\\n num_results=int(search_num_results),\\n include_domains=[domain],\\n use_autoprompt=use_autoprompt,\\n type=search_type,\\n # start_crawl_date=start_date,\\n start_published_date=start_date\\n )\\n results.extend(response.results)\\n \\n self.repr_value = results\\n\\n return results\\n\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"include_domains\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[\"yout\"],\"password\":false,\"name\":\"include_domains\",\"display_name\":\"Include Domains\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"methaphor_client\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"methaphor_client\",\"display_name\":\"methaphor_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false},\"query\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"query\",\"display_name\":\"query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"pasteldasdasdas\"},\"search_num_results\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":5,\"password\":false,\"name\":\"search_num_results\",\"display_name\":\"Number of Results (per domain)\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"search_type\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"keyword\",\"password\":false,\"options\":[\"neural\",\"keyword\"],\"name\":\"search_type\",\"display_name\":\"Search Type\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"start_date\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"start_date\",\"display_name\":\"start_date\",\"advanced\":false,\"input_types\":[\"Data\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"use_autoprompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"use_autoprompt\",\"display_name\":\"Use Autoprompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false}},\"description\":\"Search in Metaphor with a custom string.\",\"base_classes\":[\"Data\"],\"display_name\":\"Metaphor Search\",\"custom_fields\":{\"include_domains\":null,\"methaphor_client\":null,\"query\":null,\"search_num_results\":null,\"search_type\":null,\"start_date\":null,\"use_autoprompt\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"CustomComponent-dMB5d\"},\"id\":\"CustomComponent-dMB5d\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:26:43.668665\",\"folder\":null,\"id\":\"912265df-9b87-4b30-a585-1ca59b944391\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Metaphor Search (2)\",\"description\":\"Search in Metaphor with a custom string.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom typing import List, Union\\nfrom langchain.llms.base import BaseLLM\\nfrom langchain.chains import LLMChain\\nfrom langchain import PromptTemplate\\nfrom langchain.schema import Document\\nfrom metaphor_python import Metaphor\\nimport json\\n\\nfrom typing import List\\nfrom langflow.field_typing import Data\\n\\nclass MetaphorSearch(CustomComponent):\\n display_name: str = \\\"Metaphor Search\\\"\\n description: str = \\\"Search in Metaphor with a custom string.\\\"\\n beta = True\\n \\n def build_config(self):\\n return {\\n \\\"metaphor_client\\\": {\\\"display_name\\\": \\\"Metaphor Wrapper\\\"}, \\n \\\"search_num_results\\\": {\\\"display_name\\\": \\\"Number of Results (per domain)\\\"},\\n \\\"include_domains\\\": {\\\"display_name\\\": \\\"Include Domains\\\", \\\"is_list\\\": True},\\n \\\"start_date\\\": {\\\"display_name\\\": \\\"Start Date\\\"},\\n \\\"use_autoprompt\\\": {\\\"display_name\\\": \\\"Use Autoprompt\\\", \\\"type\\\": \\\"boolean\\\"},\\n \\\"search_type\\\": {\\\"display_name\\\": \\\"Search Type\\\", \\\"options\\\": [\\\"neural\\\", \\\"keyword\\\"]},\\n \\\"start_date\\\": {\\\"input_types\\\": [\\\"Data\\\"]}\\n }\\n\\n def build(\\n self,\\n methaphor_client: Data,\\n query: str,\\n search_type: str='keyword',\\n search_num_results: int = 5,\\n include_domains: List[str]= [\\\"youtube.com\\\"],\\n use_autoprompt: bool = False,\\n start_date: str=\\\"2023-01-01\\\",\\n \\n ) -> Data:\\n \\n results = []\\n for domain in include_domains:\\n response = methaphor_client.search(\\n query,\\n num_results=int(search_num_results),\\n include_domains=[domain],\\n use_autoprompt=use_autoprompt,\\n type=search_type,\\n # start_crawl_date=start_date,\\n start_published_date=start_date\\n )\\n results.extend(response.results)\\n \\n self.repr_value = results\\n\\n return results\\n\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"include_domains\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[\"yout\"],\"password\":false,\"name\":\"include_domains\",\"display_name\":\"Include Domains\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"methaphor_client\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"methaphor_client\",\"display_name\":\"methaphor_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false},\"query\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"query\",\"display_name\":\"query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"pasteldasdasdas\"},\"search_num_results\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":5,\"password\":false,\"name\":\"search_num_results\",\"display_name\":\"Number of Results (per domain)\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"search_type\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"keyword\",\"password\":false,\"options\":[\"neural\",\"keyword\"],\"name\":\"search_type\",\"display_name\":\"Search Type\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"start_date\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"start_date\",\"display_name\":\"start_date\",\"advanced\":false,\"input_types\":[\"Data\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"use_autoprompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"use_autoprompt\",\"display_name\":\"Use Autoprompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false}},\"description\":\"Search in Metaphor with a custom string.\",\"base_classes\":[\"Data\"],\"display_name\":\"Metaphor Search\",\"custom_fields\":{\"include_domains\":null,\"methaphor_client\":null,\"query\":null,\"search_num_results\":null,\"search_type\":null,\"start_date\":null,\"use_autoprompt\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"CustomComponent-ipifC\"},\"id\":\"CustomComponent-ipifC\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:26:49.799612\",\"folder\":null,\"id\":\"ca83ee08-2f93-427d-9897-80fef6dd5447\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Metaphor Search\",\"description\":\"Search in Metaphor with a custom string.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom typing import List, Union\\nfrom langchain.llms.base import BaseLLM\\nfrom langchain.chains import LLMChain\\nfrom langchain import PromptTemplate\\nfrom langchain.schema import Document\\nfrom metaphor_python import Metaphor\\nimport json\\n\\nfrom typing import List\\nfrom langflow.field_typing import Data\\n\\nclass MetaphorSearch(CustomComponent):\\n display_name: str = \\\"Metaphor Search\\\"\\n description: str = \\\"Search in Metaphor with a custom string.\\\"\\n beta = True\\n \\n def build_config(self):\\n return {\\n \\\"metaphor_client\\\": {\\\"display_name\\\": \\\"Metaphor Wrapper\\\"}, \\n \\\"search_num_results\\\": {\\\"display_name\\\": \\\"Number of Results (per domain)\\\"},\\n \\\"include_domains\\\": {\\\"display_name\\\": \\\"Include Domains\\\", \\\"is_list\\\": True},\\n \\\"start_date\\\": {\\\"display_name\\\": \\\"Start Date\\\"},\\n \\\"use_autoprompt\\\": {\\\"display_name\\\": \\\"Use Autoprompt\\\", \\\"type\\\": \\\"boolean\\\"},\\n \\\"search_type\\\": {\\\"display_name\\\": \\\"Search Type\\\", \\\"options\\\": [\\\"neural\\\", \\\"keyword\\\"]},\\n \\\"start_date\\\": {\\\"input_types\\\": [\\\"Data\\\"]}\\n }\\n\\n def build(\\n self,\\n methaphor_client: Data,\\n query: str,\\n search_type: str='keyword',\\n search_num_results: int = 5,\\n include_domains: List[str]= [\\\"youtube.com\\\"],\\n use_autoprompt: bool = False,\\n start_date: str=\\\"2023-01-01\\\",\\n \\n ) -> Data:\\n \\n results = []\\n for domain in include_domains:\\n response = methaphor_client.search(\\n query,\\n num_results=int(search_num_results),\\n include_domains=[domain],\\n use_autoprompt=use_autoprompt,\\n type=search_type,\\n # start_crawl_date=start_date,\\n start_published_date=start_date\\n )\\n results.extend(response.results)\\n \\n self.repr_value = results\\n\\n return results\\n\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"include_domains\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[\"yout\"],\"password\":false,\"name\":\"include_domains\",\"display_name\":\"Include Domains\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"methaphor_client\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"methaphor_client\",\"display_name\":\"methaphor_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false},\"query\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"query\",\"display_name\":\"query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"pasteldasdasdas\"},\"search_num_results\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":5,\"password\":false,\"name\":\"search_num_results\",\"display_name\":\"Number of Results (per domain)\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"search_type\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"keyword\",\"password\":false,\"options\":[\"neural\",\"keyword\"],\"name\":\"search_type\",\"display_name\":\"Search Type\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"start_date\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"start_date\",\"display_name\":\"start_date\",\"advanced\":false,\"input_types\":[\"Data\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"use_autoprompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"use_autoprompt\",\"display_name\":\"Use Autoprompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false}},\"description\":\"Search in Metaphor with a custom string.\",\"base_classes\":[\"Data\"],\"display_name\":\"Metaphor Search\",\"custom_fields\":{\"include_domains\":null,\"methaphor_client\":null,\"query\":null,\"search_num_results\":null,\"search_type\":null,\"start_date\":null,\"use_autoprompt\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"CustomComponent-Y4qL7\"},\"id\":\"CustomComponent-Y4qL7\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:26:53.719960\",\"folder\":null,\"id\":\"5847602b-769a-4a82-82e8-a70f54a59929\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lively Williams\",\"description\":\"Conversational Cartography Unlocked.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-09T13:27:45.691254\",\"folder\":null,\"id\":\"0e3bdba9-127a-4399-81a4-2865b70a4a47\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Shared Component\",\"description\":\"Conversational Cartography Unlocked.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":328,\"id\":\"CSVAgent-TK9Ea\",\"type\":\"genericNode\",\"position\":{\"x\":251.25514772667083,\"y\":160.7424529887874},\"data\":{\"type\":\"CSVAgent\",\"node\":{\"template\":{\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"_type\":\"csv_agent\"},\"description\":\"Construct a CSV agent from a CSV and tools.\",\"base_classes\":[\"AgentExecutor\"],\"display_name\":\"CSVAgent\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/agents/toolkits/csv\",\"beta\":false,\"error\":null},\"id\":\"CSVAgent-TK9Ea\"},\"positionAbsolute\":{\"x\":251.25514772667083,\"y\":160.7424529887874}}],\"edges\":[],\"viewport\":{\"x\":104.85568116317398,\"y\":88.26375874183478,\"zoom\":0.7169776240079145}},\"is_component\":false,\"updated_at\":\"2023-12-09T13:28:34.119070\",\"folder\":null,\"id\":\"29c1a247-47b0-457b-8666-7c0a67dc72b0\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"teste cristhian\",\"description\":\"11111\",\"data\":{\"nodes\":[{\"width\":384,\"height\":328,\"id\":\"CSVAgent-P5wrB\",\"type\":\"genericNode\",\"position\":{\"x\":251.25514772667083,\"y\":160.7424529887874},\"data\":{\"type\":\"CSVAgent\",\"node\":{\"template\":{\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"_type\":\"csv_agent\"},\"description\":\"Construct a CSV agent from a CSV and tools.\",\"base_classes\":[\"AgentExecutor\"],\"display_name\":\"CSVAgent\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/agents/toolkits/csv\",\"beta\":false,\"error\":null},\"id\":\"CSVAgent-P5wrB\"},\"positionAbsolute\":{\"x\":251.25514772667083,\"y\":160.7424529887874}},{\"width\":384,\"height\":626,\"id\":\"OpenAI-zpihD\",\"type\":\"genericNode\",\"position\":{\"x\":-56.983202536768374,\"y\":61.715652677908665},\"data\":{\"type\":\"OpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain_core.callbacks.base.BaseCallbackHandler\",\"list\":true},\"allowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":[],\"password\":false,\"name\":\"allowed_special\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"batch_size\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":20,\"password\":false,\"name\":\"batch_size\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"best_of\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"best_of\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"disallowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"all\",\"password\":false,\"name\":\"disallowed_special\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"frequency_penalty\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":0,\"password\":false,\"name\":\"frequency_penalty\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"logit_bias\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"logit_bias\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"text-babbage-001\",\"password\":false,\"options\":[\"text-davinci-003\",\"text-davinci-002\",\"text-curie-001\",\"text-babbage-001\",\"text-ada-001\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false,\"value\":\"dasdasdasdsadasdas\"},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"presence_penalty\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":0,\"password\":false,\"name\":\"presence_penalty\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"1.4\",\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"top_p\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"top_p\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"OpenAI\"},\"description\":\"OpenAI large language models.\",\"base_classes\":[\"OpenAI\",\"BaseLanguageModel\",\"BaseLLM\",\"BaseOpenAI\"],\"display_name\":\"OpenAI\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/llms/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"OpenAI-zpihD\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":-56.983202536768374,\"y\":61.715652677908665}}],\"edges\":[],\"viewport\":{\"x\":104.85568116317398,\"y\":88.26375874183478,\"zoom\":0.7169776240079145}},\"is_component\":false,\"updated_at\":\"2023-12-09T13:40:48.453096\",\"folder\":null,\"id\":\"2e59d013-2acb-49a6-915b-9231a7e6eb58\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVAgent (1)\",\"description\":\"Construct a CSV agent from a CSV and tools.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVAgent\",\"node\":{\"template\":{\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"_type\":\"csv_agent\"},\"description\":\"Construct a CSV agent from a CSV and tools.\",\"base_classes\":[\"AgentExecutor\"],\"display_name\":\"CSVAgent\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/agents/toolkits/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVAgent-jsHqy\"},\"id\":\"CSVAgent-jsHqy\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:31:17.317322\",\"folder\":null,\"id\":\"ab1034a9-9b5b-4c65-bf6e-9f098a403942\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Suspicious Wilsonfasdfsd\",\"description\":\"Building Linguistic Labyrinths.fasdfads\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-09T14:43:45.298121\",\"folder\":null,\"id\":\"7d91c0c5-fba6-4c60-b4d1-11d430ef357a\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"AirbyteJSONLoader (1)\",\"description\":\"Load local `Airbyte` json files.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AirbyteJSONLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".json\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"\":\"\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"AirbyteJSONLoader\"},\"description\":\"Load local `Airbyte` json files.\",\"base_classes\":[\"Document\"],\"display_name\":\"AirbyteJSONLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/airbyte_json\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"AirbyteJSONLoader-pAHh6\"},\"id\":\"AirbyteJSONLoader-pAHh6\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:47:58.573137\",\"folder\":null,\"id\":\"f0cc4292-97cc-4748-803d-949e30dcf661\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"AirbyteJSONLoader\",\"description\":\"Load local `Airbyte` json files.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AirbyteJSONLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".json\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"ff2\":\"d3bbd\"},{\"w\":\"bvd\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"AirbyteJSONLoader\"},\"description\":\"Load local `Airbyte` json files.\",\"base_classes\":[\"Document\"],\"display_name\":\"AirbyteJSONLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/airbyte_json\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"AirbyteJSONLoader-0zU2Q\"},\"id\":\"AirbyteJSONLoader-0zU2Q\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:50:09.035318\",\"folder\":null,\"id\":\"5e3c0d55-1a00-4e15-9821-0c625c6415ff\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVAgent\",\"description\":\"Construct a CSV agent from a CSV and tools.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVAgent\",\"node\":{\"template\":{\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"_type\":\"csv_agent\"},\"description\":\"Construct a CSV agent from a CSV and tools.\",\"base_classes\":[\"AgentExecutor\"],\"display_name\":\"CSVAgent\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/agents/toolkits/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVAgent-Ub1Xe\"},\"id\":\"CSVAgent-Ub1Xe\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:50:16.985419\",\"folder\":null,\"id\":\"baee8061-4788-4ce6-928f-c6ce1ecb443c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lively Heisenberg\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":366,\"id\":\"CSVLoader-RMUx9\",\"type\":\"genericNode\",\"position\":{\"x\":111,\"y\":345.51250076293945},\"data\":{\"type\":\"CSVLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"z2b\":\"z9\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"CSVLoader\"},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\",\"beta\":false,\"error\":null},\"id\":\"CSVLoader-RMUx9\"},\"positionAbsolute\":{\"x\":111,\"y\":345.51250076293945}}],\"edges\":[],\"viewport\":{\"x\":0,\"y\":0,\"zoom\":1}},\"is_component\":false,\"updated_at\":\"2023-12-09T14:38:40.291137\",\"folder\":null,\"id\":\"109e9629-d569-4555-9d40-42203a5ed035\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CohereEmbeddings\",\"description\":\"Cohere embedding models.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CohereEmbeddings\",\"node\":{\"template\":{\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"cohere_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"cohere_api_key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"max_retries\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"model\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"embed-english-v2.0\",\"password\":false,\"name\":\"model\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"truncate\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"truncate\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"user_agent\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"langchain\",\"password\":false,\"name\":\"user_agent\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"_type\":\"CohereEmbeddings\"},\"description\":\"Cohere embedding models.\",\"base_classes\":[\"CohereEmbeddings\",\"Embeddings\"],\"display_name\":\"CohereEmbeddings\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/cohere\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CohereEmbeddings-HFUAf\"},\"id\":\"CohereEmbeddings-HFUAf\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:50:46.172344\",\"folder\":null,\"id\":\"662d8040-d47c-40db-bda1-66489a1c9d24\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVLoader (1)\",\"description\":\"Load a `CSV` file into a list of Documents.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"cddscz23\":\"aaqd\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"CSVLoader\"},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVLoader-3wrib\"},\"id\":\"CSVLoader-3wrib\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:56:11.662526\",\"folder\":null,\"id\":\"4fae6aec-ddbd-498d-a4d1-ca0290f6a5ad\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVLoader (2)\",\"description\":\"Load a `CSV` file into a list of Documents.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"cddscz23\":\"aaqd\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"CSVLoader\"},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVLoader-VEjyx\"},\"id\":\"CSVLoader-VEjyx\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:57:37.560784\",\"folder\":null,\"id\":\"d80635ee-966c-41f2-981c-afa2c388ac6e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVLoader (3)\",\"description\":\"Load a `CSV` file into a list of Documents.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"cddscz23\":\"aaqd\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"CSVLoader\"},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVLoader-PIhOc\"},\"id\":\"CSVLoader-PIhOc\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:00:27.991966\",\"folder\":null,\"id\":\"c5cc4c32-77c8-4889-a9f8-2632466b7366\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVLoader (4)\",\"description\":\"Load a `CSV` file into a list of Documents.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"cddscz23\":\"aaqd\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"CSVLoader\"},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVLoader-deB43\"},\"id\":\"CSVLoader-deB43\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:00:42.509243\",\"folder\":null,\"id\":\"0ab59938-ccf4-4bb9-b285-1f5da38648f0\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVLoader\",\"description\":\"Load a `CSV` file into a list of Documents.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"\":\"aaqd\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"CSVLoader\"},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVLoader-mdkLm\"},\"id\":\"CSVLoader-mdkLm\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:02:17.458354\",\"folder\":null,\"id\":\"f127b7e7-4149-492e-8998-6b1b35ec4153\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVLoader (5)\",\"description\":\"Load a `CSV` file into a list of Documents.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"cddscz23\":\"aaqd\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"CSVLoader\"},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVLoader-FRc6Y\"},\"id\":\"CSVLoader-FRc6Y\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:02:26.958867\",\"folder\":null,\"id\":\"a870a096-725c-4914-add0-8d57d710b7e5\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"AirbyteJSONLoader (2)\",\"description\":\"Load local `Airbyte` json files.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AirbyteJSONLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".json\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"\":\"\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"AirbyteJSONLoader\"},\"description\":\"Load local `Airbyte` json files.\",\"base_classes\":[\"Document\"],\"display_name\":\"AirbyteJSONLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/airbyte_json\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"AirbyteJSONLoader-Z0uol\"},\"id\":\"AirbyteJSONLoader-Z0uol\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:03:33.764117\",\"folder\":null,\"id\":\"2a37c76c-65c8-4c01-a72d-eb46f3d41a56\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Amazon Bedrock Embeddings\",\"description\":\"Embeddings model from Amazon Bedrock.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AmazonBedrockEmbeddings\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Optional\\n\\nfrom langchain.embeddings import BedrockEmbeddings\\nfrom langchain.embeddings.base import Embeddings\\nfrom langflow import CustomComponent\\n\\n\\nclass AmazonBedrockEmeddingsComponent(CustomComponent):\\n \\\"\\\"\\\"\\n A custom component for implementing an Embeddings Model using Amazon Bedrock.\\n \\\"\\\"\\\"\\n\\n display_name: str = \\\"Amazon Bedrock Embeddings\\\"\\n description: str = \\\"Embeddings model from Amazon Bedrock.\\\"\\n documentation = \\\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\\\"\\n beta = True\\n\\n def build_config(self):\\n return {\\n \\\"model_id\\\": {\\n \\\"display_name\\\": \\\"Model Id\\\",\\n \\\"options\\\": [\\\"amazon.titan-embed-text-v1\\\"],\\n },\\n \\\"credentials_profile_name\\\": {\\\"display_name\\\": \\\"Credentials Profile Name\\\"},\\n \\\"endpoint_url\\\": {\\\"display_name\\\": \\\"Bedrock Endpoint URL\\\"},\\n \\\"region_name\\\": {\\\"display_name\\\": \\\"AWS Region\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n model_id: str = \\\"amazon.titan-embed-text-v1\\\",\\n credentials_profile_name: Optional[str] = None,\\n endpoint_url: Optional[str] = None,\\n region_name: Optional[str] = None,\\n ) -> Embeddings:\\n try:\\n output = BedrockEmbeddings(\\n credentials_profile_name=credentials_profile_name,\\n model_id=model_id,\\n endpoint_url=endpoint_url,\\n region_name=region_name,\\n ) # type: ignore\\n except Exception as e:\\n raise ValueError(\\\"Could not connect to AmazonBedrock API.\\\") from e\\n return output\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"credentials_profile_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"credentials_profile_name\",\"display_name\":\"Credentials Profile Name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"endpoint_url\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"endpoint_url\",\"display_name\":\"Bedrock Endpoint URL\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"model_id\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"amazon.titan-embed-text-v1\",\"password\":false,\"options\":[\"amazon.titan-embed-text-v1\"],\"name\":\"model_id\",\"display_name\":\"Model Id\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"region_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"region_name\",\"display_name\":\"AWS Region\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"Embeddings model from Amazon Bedrock.\",\"base_classes\":[\"Embeddings\"],\"display_name\":\"Amazon Bedrock Embeddings\",\"custom_fields\":{\"credentials_profile_name\":null,\"endpoint_url\":null,\"model_id\":null,\"region_name\":null},\"output_types\":[\"AmazonBedrockEmbeddings\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"AmazonBedrockEmbeddings-28ASv\"},\"id\":\"AmazonBedrockEmbeddings-28ASv\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:03:41.066618\",\"folder\":null,\"id\":\"850ba4e6-96ca-49a7-9b0c-4b7048fd52c8\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"ConversationBufferMemory\",\"description\":\"Buffer for storing conversation memory.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"ConversationBufferMemory\",\"node\":{\"template\":{\"chat_memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"chat_memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseChatMessageHistory\",\"list\":false},\"ai_prefix\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"AI\",\"password\":false,\"name\":\"ai_prefix\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"human_prefix\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"Human\",\"password\":false,\"name\":\"human_prefix\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"input_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"input_key\",\"advanced\":false,\"dynamic\":false,\"info\":\"The variable to be used as Chat Input when more than one variable is available.\",\"type\":\"str\",\"list\":false},\"memory_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"chat_history\",\"password\":false,\"name\":\"memory_key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"output_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"output_key\",\"advanced\":false,\"dynamic\":false,\"info\":\"The variable to be used as Chat Output (e.g. answer in a ConversationalRetrievalChain)\",\"type\":\"str\",\"list\":false},\"return_messages\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"return_messages\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ConversationBufferMemory\"},\"description\":\"Buffer for storing conversation memory.\",\"base_classes\":[\"BaseMemory\",\"BaseChatMemory\",\"ConversationBufferMemory\"],\"display_name\":\"ConversationBufferMemory\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/memory/how_to/buffer\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"ConversationBufferMemory-WaoLx\"},\"id\":\"ConversationBufferMemory-WaoLx\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:04:46.058568\",\"folder\":null,\"id\":\"be650940-0449-4eb0-a708-056310f924fd\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Amazon Bedrock Embeddings (1)\",\"description\":\"Embeddings model from Amazon Bedrock.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AmazonBedrockEmbeddings\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Optional\\n\\nfrom langchain.embeddings import BedrockEmbeddings\\nfrom langchain.embeddings.base import Embeddings\\nfrom langflow import CustomComponent\\n\\n\\nclass AmazonBedrockEmeddingsComponent(CustomComponent):\\n \\\"\\\"\\\"\\n A custom component for implementing an Embeddings Model using Amazon Bedrock.\\n \\\"\\\"\\\"\\n\\n display_name: str = \\\"Amazon Bedrock Embeddings\\\"\\n description: str = \\\"Embeddings model from Amazon Bedrock.\\\"\\n documentation = \\\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\\\"\\n beta = True\\n\\n def build_config(self):\\n return {\\n \\\"model_id\\\": {\\n \\\"display_name\\\": \\\"Model Id\\\",\\n \\\"options\\\": [\\\"amazon.titan-embed-text-v1\\\"],\\n },\\n \\\"credentials_profile_name\\\": {\\\"display_name\\\": \\\"Credentials Profile Name\\\"},\\n \\\"endpoint_url\\\": {\\\"display_name\\\": \\\"Bedrock Endpoint URL\\\"},\\n \\\"region_name\\\": {\\\"display_name\\\": \\\"AWS Region\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n model_id: str = \\\"amazon.titan-embed-text-v1\\\",\\n credentials_profile_name: Optional[str] = None,\\n endpoint_url: Optional[str] = None,\\n region_name: Optional[str] = None,\\n ) -> Embeddings:\\n try:\\n output = BedrockEmbeddings(\\n credentials_profile_name=credentials_profile_name,\\n model_id=model_id,\\n endpoint_url=endpoint_url,\\n region_name=region_name,\\n ) # type: ignore\\n except Exception as e:\\n raise ValueError(\\\"Could not connect to AmazonBedrock API.\\\") from e\\n return output\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"credentials_profile_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"credentials_profile_name\",\"display_name\":\"Credentials Profile Name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"endpoint_url\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"endpoint_url\",\"display_name\":\"Bedrock Endpoint URL\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"model_id\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"amazon.titan-embed-text-v1\",\"password\":false,\"options\":[\"amazon.titan-embed-text-v1\"],\"name\":\"model_id\",\"display_name\":\"Model Id\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"region_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"region_name\",\"display_name\":\"AWS Region\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"Embeddings model from Amazon Bedrock.\",\"base_classes\":[\"Embeddings\"],\"display_name\":\"Amazon Bedrock Embeddings\",\"custom_fields\":{\"credentials_profile_name\":null,\"endpoint_url\":null,\"model_id\":null,\"region_name\":null},\"output_types\":[\"AmazonBedrockEmbeddings\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"AmazonBedrockEmbeddings-Bs5PG\"},\"id\":\"AmazonBedrockEmbeddings-Bs5PG\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:05:50.570800\",\"folder\":null,\"id\":\"53ad1fe2-f3af-4354-86e0-eb141ce12859\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Amazon Bedrock Embeddings (2)\",\"description\":\"Embeddings model from Amazon Bedrock.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AmazonBedrockEmbeddings\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Optional\\n\\nfrom langchain.embeddings import BedrockEmbeddings\\nfrom langchain.embeddings.base import Embeddings\\nfrom langflow import CustomComponent\\n\\n\\nclass AmazonBedrockEmeddingsComponent(CustomComponent):\\n \\\"\\\"\\\"\\n A custom component for implementing an Embeddings Model using Amazon Bedrock.\\n \\\"\\\"\\\"\\n\\n display_name: str = \\\"Amazon Bedrock Embeddings\\\"\\n description: str = \\\"Embeddings model from Amazon Bedrock.\\\"\\n documentation = \\\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\\\"\\n beta = True\\n\\n def build_config(self):\\n return {\\n \\\"model_id\\\": {\\n \\\"display_name\\\": \\\"Model Id\\\",\\n \\\"options\\\": [\\\"amazon.titan-embed-text-v1\\\"],\\n },\\n \\\"credentials_profile_name\\\": {\\\"display_name\\\": \\\"Credentials Profile Name\\\"},\\n \\\"endpoint_url\\\": {\\\"display_name\\\": \\\"Bedrock Endpoint URL\\\"},\\n \\\"region_name\\\": {\\\"display_name\\\": \\\"AWS Region\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n model_id: str = \\\"amazon.titan-embed-text-v1\\\",\\n credentials_profile_name: Optional[str] = None,\\n endpoint_url: Optional[str] = None,\\n region_name: Optional[str] = None,\\n ) -> Embeddings:\\n try:\\n output = BedrockEmbeddings(\\n credentials_profile_name=credentials_profile_name,\\n model_id=model_id,\\n endpoint_url=endpoint_url,\\n region_name=region_name,\\n ) # type: ignore\\n except Exception as e:\\n raise ValueError(\\\"Could not connect to AmazonBedrock API.\\\") from e\\n return output\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"credentials_profile_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"credentials_profile_name\",\"display_name\":\"Credentials Profile Name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"endpoint_url\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"endpoint_url\",\"display_name\":\"Bedrock Endpoint URL\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"model_id\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"amazon.titan-embed-text-v1\",\"password\":false,\"options\":[\"amazon.titan-embed-text-v1\"],\"name\":\"model_id\",\"display_name\":\"Model Id\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"region_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"region_name\",\"display_name\":\"AWS Region\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"Embeddings model from Amazon Bedrock.\",\"base_classes\":[\"Embeddings\"],\"display_name\":\"Amazon Bedrock Embeddings\",\"custom_fields\":{\"credentials_profile_name\":null,\"endpoint_url\":null,\"model_id\":null,\"region_name\":null},\"output_types\":[\"AmazonBedrockEmbeddings\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"AmazonBedrockEmbeddings-zSZ4t\"},\"id\":\"AmazonBedrockEmbeddings-zSZ4t\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:06:11.415088\",\"folder\":null,\"id\":\"e9ed1c90-146e-452d-8ccd-ebf2e0da4331\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Amazon Bedrock Embeddings (3)\",\"description\":\"Embeddings model from Amazon Bedrock.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AmazonBedrockEmbeddings\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Optional\\n\\nfrom langchain.embeddings import BedrockEmbeddings\\nfrom langchain.embeddings.base import Embeddings\\nfrom langflow import CustomComponent\\n\\n\\nclass AmazonBedrockEmeddingsComponent(CustomComponent):\\n \\\"\\\"\\\"\\n A custom component for implementing an Embeddings Model using Amazon Bedrock.\\n \\\"\\\"\\\"\\n\\n display_name: str = \\\"Amazon Bedrock Embeddings\\\"\\n description: str = \\\"Embeddings model from Amazon Bedrock.\\\"\\n documentation = \\\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\\\"\\n beta = True\\n\\n def build_config(self):\\n return {\\n \\\"model_id\\\": {\\n \\\"display_name\\\": \\\"Model Id\\\",\\n \\\"options\\\": [\\\"amazon.titan-embed-text-v1\\\"],\\n },\\n \\\"credentials_profile_name\\\": {\\\"display_name\\\": \\\"Credentials Profile Name\\\"},\\n \\\"endpoint_url\\\": {\\\"display_name\\\": \\\"Bedrock Endpoint URL\\\"},\\n \\\"region_name\\\": {\\\"display_name\\\": \\\"AWS Region\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n model_id: str = \\\"amazon.titan-embed-text-v1\\\",\\n credentials_profile_name: Optional[str] = None,\\n endpoint_url: Optional[str] = None,\\n region_name: Optional[str] = None,\\n ) -> Embeddings:\\n try:\\n output = BedrockEmbeddings(\\n credentials_profile_name=credentials_profile_name,\\n model_id=model_id,\\n endpoint_url=endpoint_url,\\n region_name=region_name,\\n ) # type: ignore\\n except Exception as e:\\n raise ValueError(\\\"Could not connect to AmazonBedrock API.\\\") from e\\n return output\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"credentials_profile_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"credentials_profile_name\",\"display_name\":\"Credentials Profile Name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"endpoint_url\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"endpoint_url\",\"display_name\":\"Bedrock Endpoint URL\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"model_id\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"amazon.titan-embed-text-v1\",\"password\":false,\"options\":[\"amazon.titan-embed-text-v1\"],\"name\":\"model_id\",\"display_name\":\"Model Id\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"region_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"region_name\",\"display_name\":\"AWS Region\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"Embeddings model from Amazon Bedrock.\",\"base_classes\":[\"Embeddings\"],\"display_name\":\"Amazon Bedrock Embeddings\",\"custom_fields\":{\"credentials_profile_name\":null,\"endpoint_url\":null,\"model_id\":null,\"region_name\":null},\"output_types\":[\"AmazonBedrockEmbeddings\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"AmazonBedrockEmbeddings-Bxhlt\"},\"id\":\"AmazonBedrockEmbeddings-Bxhlt\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:07:06.411108\",\"folder\":null,\"id\":\"83783c57-64e3-41a6-aa7e-ed82f80f1e53\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVLoader (6)\",\"description\":\"Load a `CSV` file into a list of Documents.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"z2b\":\"z9\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"CSVLoader\"},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVLoader-2pn2o\"},\"id\":\"CSVLoader-2pn2o\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:38:30.706258\",\"folder\":null,\"id\":\"c4ae9de6-9df3-4d3c-afc9-1752af4fecd7\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Agent Initializer\",\"description\":\"Initialize a Langchain Agent.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AgentInitializer\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from typing import Callable, List, Union\\n\\nfrom langchain.agents import AgentExecutor, AgentType, initialize_agent, types\\n\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import BaseChatMemory, BaseLanguageModel, Tool\\n\\n\\nclass AgentInitializerComponent(CustomComponent):\\n display_name: str = \\\"Agent Initializer\\\"\\n description: str = \\\"Initialize a Langchain Agent.\\\"\\n documentation: str = \\\"https://python.langchain.com/docs/modules/agents/agent_types/\\\"\\n\\n def build_config(self):\\n agents = list(types.AGENT_TO_CLASS.keys())\\n # field_type and required are optional\\n return {\\n \\\"agent\\\": {\\\"options\\\": agents, \\\"value\\\": agents[0], \\\"display_name\\\": \\\"Agent Type\\\"},\\n \\\"max_iterations\\\": {\\\"display_name\\\": \\\"Max Iterations\\\", \\\"value\\\": 10},\\n \\\"memory\\\": {\\\"display_name\\\": \\\"Memory\\\"},\\n \\\"tools\\\": {\\\"display_name\\\": \\\"Tools\\\"},\\n \\\"llm\\\": {\\\"display_name\\\": \\\"Language Model\\\"},\\n }\\n\\n def build(\\n self, agent: str, llm: BaseLanguageModel, memory: BaseChatMemory, tools: List[Tool], max_iterations: int\\n ) -> Union[AgentExecutor, Callable]:\\n agent = AgentType(agent)\\n return initialize_agent(\\n tools=tools,\\n llm=llm,\\n agent=agent,\\n memory=memory,\\n return_intermediate_steps=True,\\n handle_parsing_errors=True,\\n max_iterations=max_iterations,\\n )\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"agent\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"zero-shot-react-description\",\"password\":false,\"options\":[\"zero-shot-react-description\",\"react-docstore\",\"self-ask-with-search\",\"conversational-react-description\",\"chat-zero-shot-react-description\",\"chat-conversational-react-description\",\"structured-chat-zero-shot-react-description\",\"openai-functions\",\"openai-multi-functions\",\"JsonAgent\",\"CSVAgent\",\"AgentInitializer\",\"VectorStoreAgent\",\"VectorStoreRouterAgent\",\"SQLAgent\"],\"name\":\"agent\",\"display_name\":\"Agent Type\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"Language Model\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"max_iterations\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":10,\"password\":false,\"name\":\"max_iterations\",\"display_name\":\"Max Iterations\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"memory\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"display_name\":\"Memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseChatMemory\",\"list\":false},\"tools\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"tools\",\"display_name\":\"Tools\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Tool\",\"list\":true}},\"description\":\"Initialize a Langchain Agent.\",\"base_classes\":[\"Chain\",\"AgentExecutor\",\"Callable\"],\"display_name\":\"Agent Initializer\",\"custom_fields\":{\"agent\":null,\"llm\":null,\"max_iterations\":null,\"memory\":null,\"tools\":null},\"output_types\":[\"AgentInitializer\"],\"documentation\":\"https://python.langchain.com/docs/modules/agents/agent_types/\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"AgentInitializer-MJrAC\"},\"id\":\"AgentInitializer-MJrAC\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:42:54.715163\",\"folder\":null,\"id\":\"ff84b5f9-5680-4084-a9f1-7d94fe675486\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Agent Initializer (1)\",\"description\":\"Initialize a Langchain Agent.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AgentInitializer\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from typing import Callable, List, Union\\n\\nfrom langchain.agents import AgentExecutor, AgentType, initialize_agent, types\\n\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import BaseChatMemory, BaseLanguageModel, Tool\\n\\n\\nclass AgentInitializerComponent(CustomComponent):\\n display_name: str = \\\"Agent Initializer\\\"\\n description: str = \\\"Initialize a Langchain Agent.\\\"\\n documentation: str = \\\"https://python.langchain.com/docs/modules/agents/agent_types/\\\"\\n\\n def build_config(self):\\n agents = list(types.AGENT_TO_CLASS.keys())\\n # field_type and required are optional\\n return {\\n \\\"agent\\\": {\\\"options\\\": agents, \\\"value\\\": agents[0], \\\"display_name\\\": \\\"Agent Type\\\"},\\n \\\"max_iterations\\\": {\\\"display_name\\\": \\\"Max Iterations\\\", \\\"value\\\": 10},\\n \\\"memory\\\": {\\\"display_name\\\": \\\"Memory\\\"},\\n \\\"tools\\\": {\\\"display_name\\\": \\\"Tools\\\"},\\n \\\"llm\\\": {\\\"display_name\\\": \\\"Language Model\\\"},\\n }\\n\\n def build(\\n self, agent: str, llm: BaseLanguageModel, memory: BaseChatMemory, tools: List[Tool], max_iterations: int\\n ) -> Union[AgentExecutor, Callable]:\\n agent = AgentType(agent)\\n return initialize_agent(\\n tools=tools,\\n llm=llm,\\n agent=agent,\\n memory=memory,\\n return_intermediate_steps=True,\\n handle_parsing_errors=True,\\n max_iterations=max_iterations,\\n )\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"agent\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"zero-shot-react-description\",\"password\":false,\"options\":[\"zero-shot-react-description\",\"react-docstore\",\"self-ask-with-search\",\"conversational-react-description\",\"chat-zero-shot-react-description\",\"chat-conversational-react-description\",\"structured-chat-zero-shot-react-description\",\"openai-functions\",\"openai-multi-functions\",\"JsonAgent\",\"CSVAgent\",\"AgentInitializer\",\"VectorStoreAgent\",\"VectorStoreRouterAgent\",\"SQLAgent\"],\"name\":\"agent\",\"display_name\":\"Agent Type\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"Language Model\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"max_iterations\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":10,\"password\":false,\"name\":\"max_iterations\",\"display_name\":\"Max Iterations\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"memory\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"display_name\":\"Memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseChatMemory\",\"list\":false},\"tools\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"tools\",\"display_name\":\"Tools\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Tool\",\"list\":true}},\"description\":\"Initialize a Langchain Agent.\",\"base_classes\":[\"Chain\",\"AgentExecutor\",\"Callable\"],\"display_name\":\"Agent Initializer\",\"custom_fields\":{\"agent\":null,\"llm\":null,\"max_iterations\":null,\"memory\":null,\"tools\":null},\"output_types\":[\"AgentInitializer\"],\"documentation\":\"https://python.langchain.com/docs/modules/agents/agent_types/\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"AgentInitializer-3lcZ4\"},\"id\":\"AgentInitializer-3lcZ4\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:43:20.819934\",\"folder\":null,\"id\":\"97f5db9f-d6cc-4555-88fb-3be102c67814\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Exuberant Banach\",\"description\":\"Unfolding Linguistic Possibilities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-09T14:52:49.951416\",\"folder\":null,\"id\":\"a600acd1-213a-4ce7-8648-ab2ee59f5918\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"AirbyteJSONLoader (3)\",\"description\":\"Load local `Airbyte` json files.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AirbyteJSONLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".json\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"\":\"\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"AirbyteJSONLoader\"},\"description\":\"Load local `Airbyte` json files.\",\"base_classes\":[\"Document\"],\"display_name\":\"AirbyteJSONLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/airbyte_json\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"AirbyteJSONLoader-JhQtx\"},\"id\":\"AirbyteJSONLoader-JhQtx\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:44:49.587337\",\"folder\":null,\"id\":\"07c52ad7-ca52-4cdd-ab40-74a91dbad0dd\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"AirbyteJSONLoader (4)\",\"description\":\"Load local `Airbyte` json files.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AirbyteJSONLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".json\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"\":\"\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"AirbyteJSONLoader\"},\"description\":\"Load local `Airbyte` json files.\",\"base_classes\":[\"Document\"],\"display_name\":\"AirbyteJSONLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/airbyte_json\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"AirbyteJSONLoader-bIvDc\"},\"id\":\"AirbyteJSONLoader-bIvDc\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:45:13.458500\",\"folder\":null,\"id\":\"53e4d256-3653-444b-b8e0-fb97b3ae5c7e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"AirbyteJSONLoader (5)\",\"description\":\"Load local `Airbyte` json files.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AirbyteJSONLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".json\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"\":\"\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"AirbyteJSONLoader\"},\"description\":\"Load local `Airbyte` json files.\",\"base_classes\":[\"Document\"],\"display_name\":\"AirbyteJSONLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/airbyte_json\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"AirbyteJSONLoader-2BLS8\"},\"id\":\"AirbyteJSONLoader-2BLS8\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:45:44.461699\",\"folder\":null,\"id\":\"b5158cc1-c6b8-4e25-907a-bc7e7637aa38\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Amazon Bedrock Embeddings (4)\",\"description\":\"Embeddings model from Amazon Bedrock.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AmazonBedrockEmbeddings\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Optional\\n\\nfrom langchain.embeddings import BedrockEmbeddings\\nfrom langchain.embeddings.base import Embeddings\\nfrom langflow import CustomComponent\\n\\n\\nclass AmazonBedrockEmeddingsComponent(CustomComponent):\\n \\\"\\\"\\\"\\n A custom component for implementing an Embeddings Model using Amazon Bedrock.\\n \\\"\\\"\\\"\\n\\n display_name: str = \\\"Amazon Bedrock Embeddings\\\"\\n description: str = \\\"Embeddings model from Amazon Bedrock.\\\"\\n documentation = \\\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\\\"\\n beta = True\\n\\n def build_config(self):\\n return {\\n \\\"model_id\\\": {\\n \\\"display_name\\\": \\\"Model Id\\\",\\n \\\"options\\\": [\\\"amazon.titan-embed-text-v1\\\"],\\n },\\n \\\"credentials_profile_name\\\": {\\\"display_name\\\": \\\"Credentials Profile Name\\\"},\\n \\\"endpoint_url\\\": {\\\"display_name\\\": \\\"Bedrock Endpoint URL\\\"},\\n \\\"region_name\\\": {\\\"display_name\\\": \\\"AWS Region\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n model_id: str = \\\"amazon.titan-embed-text-v1\\\",\\n credentials_profile_name: Optional[str] = None,\\n endpoint_url: Optional[str] = None,\\n region_name: Optional[str] = None,\\n ) -> Embeddings:\\n try:\\n output = BedrockEmbeddings(\\n credentials_profile_name=credentials_profile_name,\\n model_id=model_id,\\n endpoint_url=endpoint_url,\\n region_name=region_name,\\n ) # type: ignore\\n except Exception as e:\\n raise ValueError(\\\"Could not connect to AmazonBedrock API.\\\") from e\\n return output\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"credentials_profile_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"credentials_profile_name\",\"display_name\":\"Credentials Profile Name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"endpoint_url\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"endpoint_url\",\"display_name\":\"Bedrock Endpoint URL\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"model_id\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"amazon.titan-embed-text-v1\",\"password\":false,\"options\":[\"amazon.titan-embed-text-v1\"],\"name\":\"model_id\",\"display_name\":\"Model Id\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"region_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"region_name\",\"display_name\":\"AWS Region\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"Embeddings model from Amazon Bedrock.\",\"base_classes\":[\"Embeddings\"],\"display_name\":\"Amazon Bedrock Embeddings\",\"custom_fields\":{\"credentials_profile_name\":null,\"endpoint_url\":null,\"model_id\":null,\"region_name\":null},\"output_types\":[\"AmazonBedrockEmbeddings\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"AmazonBedrockEmbeddings-NsBzN\"},\"id\":\"AmazonBedrockEmbeddings-NsBzN\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:50:29.791575\",\"folder\":null,\"id\":\"3fb77f72-1be7-4ce0-ae89-a82b0eee9acf\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Evil Golick\",\"description\":\"Where Language Meets Logic.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:19:02.707854\",\"folder\":null,\"id\":\"9c5d21c2-ea82-4cf4-a591-c3d3fd3f13e6\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gleeful Davinci (1)\",\"description\":\"Unleashing Linguistic Creativity.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:19:02.761150\",\"folder\":null,\"id\":\"f8e2e16e-129c-4116-9626-2c6b524d97b7\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Effervescent Degrasse\",\"description\":\"Language Models, Mapped and Mastered.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:19:02.764440\",\"folder\":null,\"id\":\"d7f4f7b5-effe-4834-8cab-4f2fc4f6e9de\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Prickly Archimedes\",\"description\":\"Language Chainlink Master.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:19:02.767546\",\"folder\":null,\"id\":\"2265d813-4a87-410f-b06a-65e35db8219e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Boring Heyrovsky\",\"description\":\"Building Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:19:02.765105\",\"folder\":null,\"id\":\"10bfd881-e67e-4c33-965d-ee041695edce\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Nostalgic Carroll\",\"description\":\"Unfolding Linguistic Possibilities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:19:02.811794\",\"folder\":null,\"id\":\"63fa5653-4513-47f2-8dfa-baeb1d981f93\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Pensive Perlman\",\"description\":\"Empowering Communication, Enabling Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:19:02.814993\",\"folder\":null,\"id\":\"f4bc5945-20d9-4703-a5bb-6a4a3ef7fc8e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Hilarious Stallman\",\"description\":\"Connect the Dots, Craft Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:19:02.813144\",\"folder\":null,\"id\":\"8d8b80f9-4b74-4cd5-bc5c-08a32c4d2b95\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Awesome Einstein\",\"description\":\"The Power of Language at Your Fingertips.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:20:19.518262\",\"folder\":null,\"id\":\"21808fd7-a492-4e29-8863-301c2785f542\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Funky Swanson\",\"description\":\"Sculpting Language with Precision.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:20:20.185637\",\"folder\":null,\"id\":\"7752299a-4aa9-44db-8d9c-5c4a2ac1b071\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Romantic Pascal\",\"description\":\"Unlock the Power of AI in Your Business Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:20:20.223064\",\"folder\":null,\"id\":\"78f48a13-6a9f-42ce-9d58-ec9b63b381d2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Twinkly Bartik\",\"description\":\"Sculpting Language with Precision.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:20:20.239758\",\"folder\":null,\"id\":\"38074091-3d7c-4d42-b61b-ae195c1b8a4e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Condescending Joliot\",\"description\":\"Language Models, Unleashed.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:20:20.271996\",\"folder\":null,\"id\":\"773020aa-5c2d-4632-ad9e-21276861ab93\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gleeful Kalam\",\"description\":\"The Power of Language at Your Fingertips.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:20:20.283929\",\"folder\":null,\"id\":\"0092d077-6d31-401f-a739-b164476b90ed\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Grinning Bhabha\",\"description\":\"Your Passport to Linguistic Landscapes.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:20:20.467739\",\"folder\":null,\"id\":\"4a395211-712d-4dd2-b3bb-e6b19200f15d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Mirthful Babbage\",\"description\":\"Design Dialogues with Langflow.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:20:20.742990\",\"folder\":null,\"id\":\"3f086a82-3e29-4328-9da8-e02dc9201744\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Tiny Volta\",\"description\":\"Nurture NLP Nodes Here.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:24:18.594247\",\"folder\":null,\"id\":\"659b8289-c8e8-413d-9b2b-51e68411f170\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Radiant Jennings\",\"description\":\"Design, Develop, Dialogize.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:24:42.640309\",\"folder\":null,\"id\":\"f55f0640-d47e-4471-b1ba-3411d38ecac5\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Distracted Shaw\",\"description\":\"Interactive Language Weaving.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:24:58.376247\",\"folder\":null,\"id\":\"a039811e-449a-4244-83ed-4ddd731a0921\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Peppy Murdock (1)\",\"description\":\"Language Chainlink Master.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:25:14.674524\",\"folder\":null,\"id\":\"0faf6144-6ca6-4f64-a343-665ae54774ef\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lively Volta\",\"description\":\"Language Models, Mapped and Mastered.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:26:50.418029\",\"folder\":null,\"id\":\"c5d149d0-c401-4f5e-b79f-2abcc7b8d98d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Bubbly Curie\",\"description\":\"Navigate the Networks of Conversation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:27:10.900899\",\"folder\":null,\"id\":\"7bb2d226-9740-433d-861f-a499632c5a13\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Radiant Nobel\",\"description\":\"Navigate the Linguistic Landscape, Discover Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:29:11.541630\",\"folder\":null,\"id\":\"947906d8-75ea-470c-a8e2-cc80c5d3bdbb\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cheerful Northcutt\",\"description\":\"Unleashing Business Potential through Language Engineering.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:29:37.169791\",\"folder\":null,\"id\":\"56f109fd-2c18-42ed-a9b2-089a678a0c11\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Suspicious Khayyam\",\"description\":\"Crafting Dialogues that Drive Business Success.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:30:24.686359\",\"folder\":null,\"id\":\"551d7bfa-49aa-43f1-a779-e47eabc2aaf2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Twinkly Spence\",\"description\":\"Create, Curate, Communicate with Langflow.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:30:47.738472\",\"folder\":null,\"id\":\"12aef128-130e-492e-bf84-62d4cb4cd456\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Mirthful Lavoisier\",\"description\":\"Nurture NLP Nodes Here.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:31:43.272365\",\"folder\":null,\"id\":\"9952c044-6903-4fba-a270-6ed0b90c93c9\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Upbeat Bose\",\"description\":\"Unravel the Art of Articulation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:32:23.972035\",\"folder\":null,\"id\":\"65f49582-c9fa-4c67-a2bc-4e8fa73ca731\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Tender Perlman\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:33:26.984083\",\"folder\":null,\"id\":\"9ae57fe2-c677-47fa-a059-7d3d915a1178\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sharp Cori\",\"description\":\"Conversation Catalyst Engine.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:33:52.377359\",\"folder\":null,\"id\":\"2920dde2-5c24-4fe0-9c06-ef86b5a16a99\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"}]" }, "headersSize": -1, "bodySize": -1, @@ -336,16 +378,28 @@ { "name": "Accept", "value": "application/json, text/plain, */*" }, { "name": "Accept-Encoding", "value": "gzip, deflate, br" }, { "name": "Accept-Language", "value": "en-US,en;q=0.9" }, - { "name": "Authorization", "value": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkMjUzYmZiYS02MzY4LTQ0ZGMtODVmNy0wZDZkYTllNDU5NjgiLCJleHAiOjE3MzM4NTY4OTh9.5MFFb0JCck3ITSKXbxhwO9yAscnXcwXNTV70ZYBRB20" }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkMjUzYmZiYS02MzY4LTQ0ZGMtODVmNy0wZDZkYTllNDU5NjgiLCJleHAiOjE3MzM4NTY4OTh9.5MFFb0JCck3ITSKXbxhwO9yAscnXcwXNTV70ZYBRB20" + }, { "name": "Connection", "value": "keep-alive" }, - { "name": "Cookie", "value": "access_tkn_lflw=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkMjUzYmZiYS02MzY4LTQ0ZGMtODVmNy0wZDZkYTllNDU5NjgiLCJleHAiOjE3MzM4NTY4OTh9.5MFFb0JCck3ITSKXbxhwO9yAscnXcwXNTV70ZYBRB20; refresh_tkn_lflw=auto" }, + { + "name": "Cookie", + "value": "access_tkn_lflw=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkMjUzYmZiYS02MzY4LTQ0ZGMtODVmNy0wZDZkYTllNDU5NjgiLCJleHAiOjE3MzM4NTY4OTh9.5MFFb0JCck3ITSKXbxhwO9yAscnXcwXNTV70ZYBRB20; refresh_tkn_lflw=auto" + }, { "name": "Host", "value": "localhost:3000" }, { "name": "Referer", "value": "http://localhost:3000/flows" }, { "name": "Sec-Fetch-Dest", "value": "empty" }, { "name": "Sec-Fetch-Mode", "value": "cors" }, { "name": "Sec-Fetch-Site", "value": "same-origin" }, - { "name": "User-Agent", "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36" }, - { "name": "sec-ch-ua", "value": "\"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"" }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36" + }, + { + "name": "sec-ch-ua", + "value": "\"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"" + }, { "name": "sec-ch-ua-mobile", "value": "?0" }, { "name": "sec-ch-ua-platform", "value": "\"Linux\"" } ], @@ -390,16 +444,28 @@ { "name": "Accept", "value": "application/json, text/plain, */*" }, { "name": "Accept-Encoding", "value": "gzip, deflate, br" }, { "name": "Accept-Language", "value": "en-US,en;q=0.9" }, - { "name": "Authorization", "value": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkMjUzYmZiYS02MzY4LTQ0ZGMtODVmNy0wZDZkYTllNDU5NjgiLCJleHAiOjE3MzM4NTY4OTh9.5MFFb0JCck3ITSKXbxhwO9yAscnXcwXNTV70ZYBRB20" }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkMjUzYmZiYS02MzY4LTQ0ZGMtODVmNy0wZDZkYTllNDU5NjgiLCJleHAiOjE3MzM4NTY4OTh9.5MFFb0JCck3ITSKXbxhwO9yAscnXcwXNTV70ZYBRB20" + }, { "name": "Connection", "value": "keep-alive" }, - { "name": "Cookie", "value": "access_tkn_lflw=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkMjUzYmZiYS02MzY4LTQ0ZGMtODVmNy0wZDZkYTllNDU5NjgiLCJleHAiOjE3MzM4NTY4OTh9.5MFFb0JCck3ITSKXbxhwO9yAscnXcwXNTV70ZYBRB20; refresh_tkn_lflw=auto" }, + { + "name": "Cookie", + "value": "access_tkn_lflw=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkMjUzYmZiYS02MzY4LTQ0ZGMtODVmNy0wZDZkYTllNDU5NjgiLCJleHAiOjE3MzM4NTY4OTh9.5MFFb0JCck3ITSKXbxhwO9yAscnXcwXNTV70ZYBRB20; refresh_tkn_lflw=auto" + }, { "name": "Host", "value": "localhost:3000" }, { "name": "Referer", "value": "http://localhost:3000/flows" }, { "name": "Sec-Fetch-Dest", "value": "empty" }, { "name": "Sec-Fetch-Mode", "value": "cors" }, { "name": "Sec-Fetch-Site", "value": "same-origin" }, - { "name": "User-Agent", "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36" }, - { "name": "sec-ch-ua", "value": "\"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"" }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36" + }, + { + "name": "sec-ch-ua", + "value": "\"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"" + }, { "name": "sec-ch-ua-mobile", "value": "?0" }, { "name": "sec-ch-ua-platform", "value": "\"Linux\"" } ], @@ -444,16 +510,31 @@ { "name": "Accept", "value": "application/json, text/plain, */*" }, { "name": "Accept-Encoding", "value": "gzip, deflate, br" }, { "name": "Accept-Language", "value": "en-US,en;q=0.9" }, - { "name": "Authorization", "value": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkMjUzYmZiYS02MzY4LTQ0ZGMtODVmNy0wZDZkYTllNDU5NjgiLCJleHAiOjE3MzM4NTY4OTh9.5MFFb0JCck3ITSKXbxhwO9yAscnXcwXNTV70ZYBRB20" }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkMjUzYmZiYS02MzY4LTQ0ZGMtODVmNy0wZDZkYTllNDU5NjgiLCJleHAiOjE3MzM4NTY4OTh9.5MFFb0JCck3ITSKXbxhwO9yAscnXcwXNTV70ZYBRB20" + }, { "name": "Connection", "value": "keep-alive" }, - { "name": "Cookie", "value": "access_tkn_lflw=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkMjUzYmZiYS02MzY4LTQ0ZGMtODVmNy0wZDZkYTllNDU5NjgiLCJleHAiOjE3MzM4NTY4OTh9.5MFFb0JCck3ITSKXbxhwO9yAscnXcwXNTV70ZYBRB20; refresh_tkn_lflw=auto" }, + { + "name": "Cookie", + "value": "access_tkn_lflw=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkMjUzYmZiYS02MzY4LTQ0ZGMtODVmNy0wZDZkYTllNDU5NjgiLCJleHAiOjE3MzM4NTY4OTh9.5MFFb0JCck3ITSKXbxhwO9yAscnXcwXNTV70ZYBRB20; refresh_tkn_lflw=auto" + }, { "name": "Host", "value": "localhost:3000" }, - { "name": "Referer", "value": "http://localhost:3000/flow/2920dde2-5c24-4fe0-9c06-ef86b5a16a99" }, + { + "name": "Referer", + "value": "http://localhost:3000/flow/2920dde2-5c24-4fe0-9c06-ef86b5a16a99" + }, { "name": "Sec-Fetch-Dest", "value": "empty" }, { "name": "Sec-Fetch-Mode", "value": "cors" }, { "name": "Sec-Fetch-Site", "value": "same-origin" }, - { "name": "User-Agent", "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36" }, - { "name": "sec-ch-ua", "value": "\"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"" }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36" + }, + { + "name": "sec-ch-ua", + "value": "\"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"" + }, { "name": "sec-ch-ua-mobile", "value": "?0" }, { "name": "sec-ch-ua-platform", "value": "\"Linux\"" } ], @@ -498,16 +579,31 @@ { "name": "Accept", "value": "application/json, text/plain, */*" }, { "name": "Accept-Encoding", "value": "gzip, deflate, br" }, { "name": "Accept-Language", "value": "en-US,en;q=0.9" }, - { "name": "Authorization", "value": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkMjUzYmZiYS02MzY4LTQ0ZGMtODVmNy0wZDZkYTllNDU5NjgiLCJleHAiOjE3MzM4NTY4OTh9.5MFFb0JCck3ITSKXbxhwO9yAscnXcwXNTV70ZYBRB20" }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkMjUzYmZiYS02MzY4LTQ0ZGMtODVmNy0wZDZkYTllNDU5NjgiLCJleHAiOjE3MzM4NTY4OTh9.5MFFb0JCck3ITSKXbxhwO9yAscnXcwXNTV70ZYBRB20" + }, { "name": "Connection", "value": "keep-alive" }, - { "name": "Cookie", "value": "access_tkn_lflw=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkMjUzYmZiYS02MzY4LTQ0ZGMtODVmNy0wZDZkYTllNDU5NjgiLCJleHAiOjE3MzM4NTY4OTh9.5MFFb0JCck3ITSKXbxhwO9yAscnXcwXNTV70ZYBRB20; refresh_tkn_lflw=auto" }, + { + "name": "Cookie", + "value": "access_tkn_lflw=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkMjUzYmZiYS02MzY4LTQ0ZGMtODVmNy0wZDZkYTllNDU5NjgiLCJleHAiOjE3MzM4NTY4OTh9.5MFFb0JCck3ITSKXbxhwO9yAscnXcwXNTV70ZYBRB20; refresh_tkn_lflw=auto" + }, { "name": "Host", "value": "localhost:3000" }, - { "name": "Referer", "value": "http://localhost:3000/flow/2920dde2-5c24-4fe0-9c06-ef86b5a16a99" }, + { + "name": "Referer", + "value": "http://localhost:3000/flow/2920dde2-5c24-4fe0-9c06-ef86b5a16a99" + }, { "name": "Sec-Fetch-Dest", "value": "empty" }, { "name": "Sec-Fetch-Mode", "value": "cors" }, { "name": "Sec-Fetch-Site", "value": "same-origin" }, - { "name": "User-Agent", "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36" }, - { "name": "sec-ch-ua", "value": "\"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"" }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36" + }, + { + "name": "sec-ch-ua", + "value": "\"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"" + }, { "name": "sec-ch-ua-mobile", "value": "?0" }, { "name": "sec-ch-ua-platform", "value": "\"Linux\"" } ], @@ -531,7 +627,7 @@ "content": { "size": -1, "mimeType": "application/json", - "text": "[{\"name\":\"Awesome Euclid\",\"description\":\"Language Models, Mapped and Mastered.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":374,\"id\":\"PromptTemplate-m2yFu\",\"type\":\"genericNode\",\"position\":{\"x\":462.6456058272081,\"y\":1033.9314297130313},\"data\":{\"type\":\"PromptTemplate\",\"node\":{\"template\":{\"output_parser\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false},\"input_types\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"input_variables\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"transcription\"]},\"partial_variables\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"template\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"prompt\",\"list\":false,\"value\":\"create an image prompt based on the song's lyrics to be used as the album cover of this song:\\n\\nlyrics:\\n{transcription}\"},\"template_format\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"f-string\",\"password\":false,\"name\":\"template_format\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":false},\"validate_template\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"PromptTemplate\",\"transcription\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"transcription\",\"display_name\":\"transcription\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"A prompt template for a language model.\",\"base_classes\":[\"PromptTemplate\",\"StringPromptTemplate\",\"BasePromptTemplate\"],\"name\":\"\",\"display_name\":\"PromptTemplate\",\"documentation\":\"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\"custom_fields\":{\"\":[\"transcription\"],\"template\":[\"transcription\",\"question\"]},\"output_types\":[],\"full_path\":null,\"field_formatters\":{},\"beta\":false,\"error\":null},\"id\":\"PromptTemplate-m2yFu\"},\"selected\":false,\"positionAbsolute\":{\"x\":462.6456058272081,\"y\":1033.9314297130313},\"dragging\":false},{\"width\":384,\"height\":626,\"id\":\"ChatOpenAI-urapv\",\"type\":\"genericNode\",\"position\":{\"x\":189.94856095084924,\"y\":-85.06556385338186},\"data\":{\"type\":\"ChatOpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain_core.callbacks.base.BaseCallbackHandler\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false,\"value\":\"\"},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"gpt-4-1106-preview\",\"password\":false,\"options\":[\"gpt-4-1106-preview\",\"gpt-4\",\"gpt-4-32k\",\"gpt-3.5-turbo\",\"gpt-3.5-turbo-16k\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":0.7,\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ChatOpenAI\"},\"description\":\"`OpenAI` Chat large language models API.\",\"base_classes\":[\"ChatOpenAI\",\"BaseChatModel\",\"BaseLanguageModel\",\"BaseLLM\"],\"display_name\":\"ChatOpenAI\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"ChatOpenAI-urapv\"},\"selected\":false,\"positionAbsolute\":{\"x\":189.94856095084924,\"y\":-85.06556385338186},\"dragging\":false},{\"width\":384,\"height\":806,\"id\":\"CustomComponent-IEIUl\",\"type\":\"genericNode\",\"position\":{\"x\":2364.865919667005,\"y\":88.43094097025096},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nfrom platformdirs import user_cache_dir\\nimport base64\\nfrom PIL import Image\\nfrom io import BytesIO\\nfrom openai import OpenAI\\nfrom pathlib import Path\\n\\nclass Component(CustomComponent):\\n display_name: str = \\\"Image generator\\\"\\n description: str = \\\"generate images using Dall-E\\\"\\n documentation: str = \\\"http://docs.langflow.org/components/custom\\\"\\n\\n def build_config(self):\\n return {\\\"prompt\\\": {\\\"display_name\\\": \\\"Prompt\\\",\\\"input_types\\\":[\\\"str\\\"]},\\n \\\"api_key\\\":{\\\"display_name\\\":\\\"OpenAI API key\\\",\\\"password\\\":True},\\n \\\"model\\\":{\\\"display_name\\\":\\\"Model name\\\",\\\"advanced\\\":True,\\\"options\\\":[\\\"dall-e-2\\\",\\\"dall-e-3\\\"], \\\"value\\\":\\\"dall-e-3\\\"},\\n \\\"file_name\\\":{\\\"display_name\\\":\\\"File Name\\\"},\\n \\\"output_format\\\":{\\\"display_name\\\":\\\"Output format\\\",\\\"options\\\":[\\\"jpeg\\\",\\\"png\\\"],\\\"value\\\":\\\"jpeg\\\"},\\n \\\"width\\\":{\\\"display_name\\\":\\\"Width\\\" ,\\\"value\\\":1024},\\n \\\"height\\\":{\\\"display_name\\\":\\\"Height\\\", \\\"value\\\":1024}\\n }\\n\\n def build(self, prompt:str,api_key:str,model:str,file_name:str,output_format:str,width:int,height:int):\\n client = OpenAI(api_key=api_key)\\n cache_dir = Path(user_cache_dir(\\\"langflow\\\"))\\n images_dir = cache_dir / \\\"images\\\"\\n images_dir.mkdir(parents=True, exist_ok=True)\\n image_path = images_dir / f\\\"{file_name}.{output_format}\\\"\\n response = client.images.generate(\\n model=model,\\n prompt=prompt,\\n size=f\\\"{height}x{width}\\\",\\n response_format=\\\"b64_json\\\",\\n n=1,\\n )\\n # Decode base64-encoded image string\\n binary_data = base64.b64decode(response.data[0].b64_json)\\n # Create PIL Image object from binary image data\\n image_pil = Image.open(BytesIO(binary_data))\\n image_pil.save(image_path, format=output_format.upper())\\n return \\\"\\\"\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"api_key\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"api_key\",\"display_name\":\"OpenAI API key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"file_name\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"file_name\",\"display_name\":\"File Name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"album\"},\"height\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":1024,\"password\":false,\"name\":\"height\",\"display_name\":\"Height\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"model\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"dall-e-3\",\"password\":false,\"options\":[\"dall-e-2\",\"dall-e-3\"],\"name\":\"model\",\"display_name\":\"Model name\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"output_format\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"jpeg\",\"password\":false,\"options\":[\"jpeg\",\"png\"],\"name\":\"output_format\",\"display_name\":\"Output format\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"prompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"prompt\",\"display_name\":\"Prompt\",\"advanced\":false,\"input_types\":[\"str\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"width\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":1024,\"password\":false,\"name\":\"width\",\"display_name\":\"Width\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false}},\"description\":\"generate images using Dall-E\",\"base_classes\":[\"Data\"],\"display_name\":\"Image generator\",\"custom_fields\":{\"api_key\":null,\"file_name\":null,\"height\":null,\"model\":null,\"output_format\":null,\"prompt\":null,\"width\":null},\"output_types\":[\"Data\"],\"documentation\":\"http://docs.langflow.org/components/custom\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-IEIUl\"},\"selected\":false,\"positionAbsolute\":{\"x\":2364.865919667005,\"y\":88.43094097025096}},{\"width\":384,\"height\":338,\"id\":\"LLMChain-KlJb3\",\"type\":\"genericNode\",\"position\":{\"x\":1242.9851164540805,\"y\":-139.74634696823108},\"data\":{\"type\":\"LLMChain\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Callable, Optional, Union\\n\\nfrom langchain.chains import LLMChain\\n\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import (\\n BaseLanguageModel,\\n BaseMemory,\\n BasePromptTemplate,\\n Chain,\\n)\\n\\n\\nclass LLMChainComponent(CustomComponent):\\n display_name = \\\"LLMChain\\\"\\n description = \\\"Chain to run queries against LLMs\\\"\\n\\n def build_config(self):\\n return {\\n \\\"prompt\\\": {\\\"display_name\\\": \\\"Prompt\\\"},\\n \\\"llm\\\": {\\\"display_name\\\": \\\"LLM\\\"},\\n \\\"memory\\\": {\\\"display_name\\\": \\\"Memory\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n prompt: BasePromptTemplate,\\n llm: BaseLanguageModel,\\n memory: Optional[BaseMemory] = None,\\n ) -> Union[Chain, Callable]:\\n return LLMChain(prompt=prompt, llm=llm, memory=memory)\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"display_name\":\"code\"},\"_type\":\"CustomComponent\",\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"display_name\":\"Memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseMemory\",\"list\":false},\"prompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"prompt\",\"display_name\":\"Prompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BasePromptTemplate\",\"list\":false}},\"description\":\"Chain to run queries against LLMs\",\"base_classes\":[\"Chain\",\"Callable\"],\"display_name\":\"LLMChain\",\"custom_fields\":{\"llm\":null,\"memory\":null,\"prompt\":null},\"output_types\":[\"LLMChain\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"LLMChain-KlJb3\"},\"selected\":false,\"positionAbsolute\":{\"x\":1242.9851164540805,\"y\":-139.74634696823108},\"dragging\":false},{\"width\":384,\"height\":328,\"id\":\"CustomComponent-bCuc0\",\"type\":\"genericNode\",\"position\":{\"x\":1747.8107777342625,\"y\":319.13729017446667},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\n\\nclass Component(CustomComponent):\\n display_name: str = \\\"Custom Component\\\"\\n description: str = \\\"Create any custom component you want!\\\"\\n documentation: str = \\\"http://docs.langflow.org/components/custom\\\"\\n\\n def build_config(self):\\n return {\\\"param\\\": {\\\"display_name\\\": \\\"Parameter\\\"}}\\n\\n def build(self, param: Chain) -> str:\\n result = param.run({})\\n self.status = result\\n return result\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"param\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"param\",\"display_name\":\"Parameter\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Chain\",\"list\":false}},\"description\":\"Create any custom component you want!\",\"base_classes\":[\"str\"],\"display_name\":\"Custom Component\",\"custom_fields\":{\"param\":null},\"output_types\":[\"str\"],\"documentation\":\"http://docs.langflow.org/components/custom\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-bCuc0\"},\"selected\":false,\"positionAbsolute\":{\"x\":1747.8107777342625,\"y\":319.13729017446667}}],\"edges\":[{\"source\":\"LLMChain-KlJb3\",\"target\":\"CustomComponent-bCuc0\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“Chainล“,ล“Callableล“],ล“dataTypeล“:ล“LLMChainล“,ล“idล“:ล“LLMChain-KlJb3ล“}\",\"targetHandle\":\"{ล“fieldNameล“:ล“paramล“,ล“idล“:ล“CustomComponent-bCuc0ล“,ล“inputTypesล“:null,ล“typeล“:ล“Chainล“}\",\"id\":\"reactflow__edge-LLMChain-KlJb3{ล“baseClassesล“:[ล“Chainล“,ล“Callableล“],ล“dataTypeล“:ล“LLMChainล“,ล“idล“:ล“LLMChain-KlJb3ล“}-CustomComponent-bCuc0{ล“fieldNameล“:ล“paramล“,ล“idล“:ล“CustomComponent-bCuc0ล“,ล“inputTypesล“:null,ล“typeล“:ล“Chainล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"param\",\"id\":\"CustomComponent-bCuc0\",\"inputTypes\":null,\"type\":\"Chain\"},\"sourceHandle\":{\"baseClasses\":[\"Chain\",\"Callable\"],\"dataType\":\"LLMChain\",\"id\":\"LLMChain-KlJb3\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"selected\":false},{\"source\":\"ChatOpenAI-urapv\",\"target\":\"LLMChain-KlJb3\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“ChatOpenAIล“,ล“BaseChatModelล“,ล“BaseLanguageModelล“,ล“BaseLLMล“],ล“dataTypeล“:ล“ChatOpenAIล“,ล“idล“:ล“ChatOpenAI-urapvล“}\",\"targetHandle\":\"{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“LLMChain-KlJb3ล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLanguageModelล“}\",\"id\":\"reactflow__edge-ChatOpenAI-urapv{ล“baseClassesล“:[ล“ChatOpenAIล“,ล“BaseChatModelล“,ล“BaseLanguageModelล“,ล“BaseLLMล“],ล“dataTypeล“:ล“ChatOpenAIล“,ล“idล“:ล“ChatOpenAI-urapvล“}-LLMChain-KlJb3{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“LLMChain-KlJb3ล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLanguageModelล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"LLMChain-KlJb3\",\"inputTypes\":null,\"type\":\"BaseLanguageModel\"},\"sourceHandle\":{\"baseClasses\":[\"ChatOpenAI\",\"BaseChatModel\",\"BaseLanguageModel\",\"BaseLLM\"],\"dataType\":\"ChatOpenAI\",\"id\":\"ChatOpenAI-urapv\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"selected\":false},{\"source\":\"PromptTemplate-m2yFu\",\"target\":\"LLMChain-KlJb3\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“PromptTemplateล“,ล“StringPromptTemplateล“,ล“BasePromptTemplateล“],ล“dataTypeล“:ล“PromptTemplateล“,ล“idล“:ล“PromptTemplate-m2yFuล“}\",\"targetHandle\":\"{ล“fieldNameล“:ล“promptล“,ล“idล“:ล“LLMChain-KlJb3ล“,ล“inputTypesล“:null,ล“typeล“:ล“BasePromptTemplateล“}\",\"id\":\"reactflow__edge-PromptTemplate-m2yFu{ล“baseClassesล“:[ล“PromptTemplateล“,ล“StringPromptTemplateล“,ล“BasePromptTemplateล“],ล“dataTypeล“:ล“PromptTemplateล“,ล“idล“:ล“PromptTemplate-m2yFuล“}-LLMChain-KlJb3{ล“fieldNameล“:ล“promptล“,ล“idล“:ล“LLMChain-KlJb3ล“,ล“inputTypesล“:null,ล“typeล“:ล“BasePromptTemplateล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"prompt\",\"id\":\"LLMChain-KlJb3\",\"inputTypes\":null,\"type\":\"BasePromptTemplate\"},\"sourceHandle\":{\"baseClasses\":[\"PromptTemplate\",\"StringPromptTemplate\",\"BasePromptTemplate\"],\"dataType\":\"PromptTemplate\",\"id\":\"PromptTemplate-m2yFu\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"selected\":false},{\"source\":\"CustomComponent-bCuc0\",\"target\":\"CustomComponent-IEIUl\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-bCuc0ล“}\",\"targetHandle\":\"{ล“fieldNameล“:ล“promptล“,ล“idล“:ล“CustomComponent-IEIUlล“,ล“inputTypesล“:[ล“strล“],ล“typeล“:ล“strล“}\",\"id\":\"reactflow__edge-CustomComponent-bCuc0{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-bCuc0ล“}-CustomComponent-IEIUl{ล“fieldNameล“:ล“promptล“,ล“idล“:ล“CustomComponent-IEIUlล“,ล“inputTypesล“:[ล“strล“],ล“typeล“:ล“strล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"prompt\",\"id\":\"CustomComponent-IEIUl\",\"inputTypes\":[\"str\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-bCuc0\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"selected\":false}],\"viewport\":{\"x\":92.23454077990459,\"y\":183.8125619056221,\"zoom\":0.6070974421975234}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:33:18.503954\",\"folder\":null,\"id\":\"fe142ce5-32dc-4955-b186-672ced662f13\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Goofy Darwin\",\"description\":\"Conversation Catalyst Engine.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":626,\"id\":\"OpenAI-3ZVDh\",\"type\":\"genericNode\",\"position\":{\"x\":-4.0041891741949485,\"y\":-114.02615182719649},\"data\":{\"type\":\"OpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain_core.callbacks.base.BaseCallbackHandler\",\"list\":true},\"allowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":[],\"password\":false,\"name\":\"allowed_special\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"batch_size\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":20,\"password\":false,\"name\":\"batch_size\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"best_of\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"best_of\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"disallowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"all\",\"password\":false,\"name\":\"disallowed_special\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"frequency_penalty\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":0,\"password\":false,\"name\":\"frequency_penalty\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"logit_bias\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"logit_bias\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":256,\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"text-davinci-003\",\"password\":false,\"options\":[\"text-davinci-003\",\"text-davinci-002\",\"text-curie-001\",\"text-babbage-001\",\"text-ada-001\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"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\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"presence_penalty\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":0,\"password\":false,\"name\":\"presence_penalty\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":0.7,\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"top_p\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"top_p\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"OpenAI\"},\"description\":\"OpenAI large language models.\",\"base_classes\":[\"OpenAI\",\"BaseLLM\",\"BaseOpenAI\",\"BaseLanguageModel\"],\"display_name\":\"OpenAI\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/llms/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"OpenAI-3ZVDh\"},\"selected\":true,\"positionAbsolute\":{\"x\":-4.0041891741949485,\"y\":-114.02615182719649},\"dragging\":false},{\"width\":384,\"height\":338,\"id\":\"LLMChain-RFYXY\",\"type\":\"genericNode\",\"position\":{\"x\":586.672100458868,\"y\":10.967049167706678},\"data\":{\"type\":\"LLMChain\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Callable, Optional, Union\\n\\nfrom langchain.chains import LLMChain\\n\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import (\\n BaseLanguageModel,\\n BaseMemory,\\n BasePromptTemplate,\\n Chain,\\n)\\n\\n\\nclass LLMChainComponent(CustomComponent):\\n display_name = \\\"LLMChain\\\"\\n description = \\\"Chain to run queries against LLMs\\\"\\n\\n def build_config(self):\\n return {\\n \\\"prompt\\\": {\\\"display_name\\\": \\\"Prompt\\\"},\\n \\\"llm\\\": {\\\"display_name\\\": \\\"LLM\\\"},\\n \\\"memory\\\": {\\\"display_name\\\": \\\"Memory\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n prompt: BasePromptTemplate,\\n llm: BaseLanguageModel,\\n memory: Optional[BaseMemory] = None,\\n ) -> Union[Chain, Callable]:\\n return LLMChain(prompt=prompt, llm=llm, memory=memory)\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"display_name\":\"Memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseMemory\",\"list\":false},\"prompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"prompt\",\"display_name\":\"Prompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BasePromptTemplate\",\"list\":false}},\"description\":\"Chain to run queries against LLMs\",\"base_classes\":[\"Chain\",\"Callable\"],\"display_name\":\"LLMChain\",\"custom_fields\":{\"llm\":null,\"memory\":null,\"prompt\":null},\"output_types\":[\"LLMChain\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"LLMChain-RFYXY\"},\"positionAbsolute\":{\"x\":586.672100458868,\"y\":10.967049167706678}},{\"width\":384,\"height\":242,\"id\":\"ChatPromptTemplate-ce1sg\",\"type\":\"genericNode\",\"position\":{\"x\":395.598984452791,\"y\":612.188491773035},\"data\":{\"type\":\"ChatPromptTemplate\",\"node\":{\"template\":{\"messages\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"messages\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseMessagePromptTemplate\",\"list\":true},\"output_parser\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false},\"input_types\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"input_variables\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true},\"partial_variables\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"validate_template\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ChatPromptTemplate\"},\"description\":\"A prompt template for chat models.\",\"base_classes\":[\"ChatPromptTemplate\",\"BaseChatPromptTemplate\",\"BasePromptTemplate\"],\"display_name\":\"ChatPromptTemplate\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/chat/how_to/prompts\",\"beta\":false,\"error\":null},\"id\":\"ChatPromptTemplate-ce1sg\"},\"selected\":false,\"positionAbsolute\":{\"x\":395.598984452791,\"y\":612.188491773035},\"dragging\":false}],\"edges\":[{\"source\":\"OpenAI-3ZVDh\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“OpenAIล“,ล“BaseLLMล“,ล“BaseOpenAIล“,ล“BaseLanguageModelล“],ล“dataTypeล“:ล“OpenAIล“,ล“idล“:ล“OpenAI-3ZVDhล“}\",\"target\":\"LLMChain-RFYXY\",\"targetHandle\":\"{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“LLMChain-RFYXYล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLanguageModelล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"LLMChain-RFYXY\",\"inputTypes\":null,\"type\":\"BaseLanguageModel\"},\"sourceHandle\":{\"baseClasses\":[\"OpenAI\",\"BaseLLM\",\"BaseOpenAI\",\"BaseLanguageModel\"],\"dataType\":\"OpenAI\",\"id\":\"OpenAI-3ZVDh\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-OpenAI-3ZVDh{ล“baseClassesล“:[ล“OpenAIล“,ล“BaseLLMล“,ล“BaseOpenAIล“,ล“BaseLanguageModelล“],ล“dataTypeล“:ล“OpenAIล“,ล“idล“:ล“OpenAI-3ZVDhล“}-LLMChain-RFYXY{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“LLMChain-RFYXYล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLanguageModelล“}\"},{\"source\":\"ChatPromptTemplate-ce1sg\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“ChatPromptTemplateล“,ล“BaseChatPromptTemplateล“,ล“BasePromptTemplateล“],ล“dataTypeล“:ล“ChatPromptTemplateล“,ล“idล“:ล“ChatPromptTemplate-ce1sgล“}\",\"target\":\"LLMChain-RFYXY\",\"targetHandle\":\"{ล“fieldNameล“:ล“promptล“,ล“idล“:ล“LLMChain-RFYXYล“,ล“inputTypesล“:null,ล“typeล“:ล“BasePromptTemplateล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"prompt\",\"id\":\"LLMChain-RFYXY\",\"inputTypes\":null,\"type\":\"BasePromptTemplate\"},\"sourceHandle\":{\"baseClasses\":[\"ChatPromptTemplate\",\"BaseChatPromptTemplate\",\"BasePromptTemplate\"],\"dataType\":\"ChatPromptTemplate\",\"id\":\"ChatPromptTemplate-ce1sg\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-ChatPromptTemplate-ce1sg{ล“baseClassesล“:[ล“ChatPromptTemplateล“,ล“BaseChatPromptTemplateล“,ล“BasePromptTemplateล“],ล“dataTypeล“:ล“ChatPromptTemplateล“,ล“idล“:ล“ChatPromptTemplate-ce1sgล“}-LLMChain-RFYXY{ล“fieldNameล“:ล“promptล“,ล“idล“:ล“LLMChain-RFYXYล“,ล“inputTypesล“:null,ล“typeล“:ล“BasePromptTemplateล“}\"}],\"viewport\":{\"x\":8.832868402772647,\"y\":189.85443326477025,\"zoom\":0.6070974421975235}},\"is_component\":false,\"updated_at\":\"2023-12-04T22:50:19.584160\",\"folder\":null,\"id\":\"103766f0-1f50-427a-9ba7-2ab73343c524\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Perky Easley\",\"description\":\"Your Toolkit for Text Generation.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":626,\"id\":\"ChatOpenAI-VPh47\",\"type\":\"genericNode\",\"position\":{\"x\":-328.5742193020408,\"y\":-420.1025929438987},\"data\":{\"type\":\"ChatOpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain_core.callbacks.base.BaseCallbackHandler\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"gpt-3.5-turbo\",\"password\":false,\"options\":[\"gpt-4-1106-preview\",\"gpt-4\",\"gpt-4-32k\",\"gpt-3.5-turbo\",\"gpt-3.5-turbo-16k\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"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\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":0.7,\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ChatOpenAI\"},\"description\":\"`OpenAI` Chat large language models API.\",\"base_classes\":[\"BaseChatModel\",\"ChatOpenAI\",\"BaseLanguageModel\",\"BaseLLM\"],\"display_name\":\"ChatOpenAI\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"ChatOpenAI-VPh47\"},\"selected\":false,\"positionAbsolute\":{\"x\":-328.5742193020408,\"y\":-420.1025929438987},\"dragging\":false},{\"width\":384,\"height\":338,\"id\":\"LLMChain-NgFyo\",\"type\":\"genericNode\",\"position\":{\"x\":225.3113389084088,\"y\":-193.3520019494289},\"data\":{\"type\":\"LLMChain\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Callable, Optional, Union\\n\\nfrom langchain.chains import LLMChain\\n\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import (\\n BaseLanguageModel,\\n BaseMemory,\\n BasePromptTemplate,\\n Chain,\\n)\\n\\n\\nclass LLMChainComponent(CustomComponent):\\n display_name = \\\"LLMChain\\\"\\n description = \\\"Chain to run queries against LLMs\\\"\\n\\n def build_config(self):\\n return {\\n \\\"prompt\\\": {\\\"display_name\\\": \\\"Prompt\\\"},\\n \\\"llm\\\": {\\\"display_name\\\": \\\"LLM\\\"},\\n \\\"memory\\\": {\\\"display_name\\\": \\\"Memory\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n prompt: BasePromptTemplate,\\n llm: BaseLanguageModel,\\n memory: Optional[BaseMemory] = None,\\n ) -> Union[Chain, Callable]:\\n return LLMChain(prompt=prompt, llm=llm, memory=memory)\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"display_name\":\"Memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseMemory\",\"list\":false},\"prompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"prompt\",\"display_name\":\"Prompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BasePromptTemplate\",\"list\":false}},\"description\":\"Chain to run queries against LLMs\",\"base_classes\":[\"Chain\",\"Callable\"],\"display_name\":\"LLMChain\",\"custom_fields\":{\"llm\":null,\"memory\":null,\"prompt\":null},\"output_types\":[\"LLMChain\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"LLMChain-NgFyo\"},\"selected\":false,\"positionAbsolute\":{\"x\":225.3113389084088,\"y\":-193.3520019494289},\"dragging\":false},{\"width\":384,\"height\":374,\"id\":\"PromptTemplate-oAFjh\",\"type\":\"genericNode\",\"position\":{\"x\":-342.62522294052764,\"y\":391.20629510686103},\"data\":{\"type\":\"PromptTemplate\",\"node\":{\"template\":{\"output_parser\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false},\"input_types\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"input_variables\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"links\"]},\"partial_variables\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"template\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"prompt\",\"list\":false,\"value\":\"Answer everything with links\\n{links}\"},\"template_format\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"f-string\",\"password\":false,\"name\":\"template_format\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":false},\"validate_template\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"PromptTemplate\",\"links\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"links\",\"display_name\":\"links\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"A prompt template for a language model.\",\"base_classes\":[\"BasePromptTemplate\",\"StringPromptTemplate\",\"PromptTemplate\"],\"name\":\"\",\"display_name\":\"PromptTemplate\",\"documentation\":\"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\"custom_fields\":{\"\":[\"links\"]},\"output_types\":[],\"full_path\":null,\"field_formatters\":{},\"beta\":false,\"error\":null},\"id\":\"PromptTemplate-oAFjh\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":-342.62522294052764,\"y\":391.20629510686103}}],\"edges\":[{\"source\":\"ChatOpenAI-VPh47\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“BaseChatModelล“,ล“ChatOpenAIล“,ล“BaseLanguageModelล“,ล“BaseLLMล“],ล“dataTypeล“:ล“ChatOpenAIล“,ล“idล“:ล“ChatOpenAI-VPh47ล“}\",\"target\":\"LLMChain-NgFyo\",\"targetHandle\":\"{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“LLMChain-NgFyoล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLanguageModelล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"LLMChain-NgFyo\",\"inputTypes\":null,\"type\":\"BaseLanguageModel\"},\"sourceHandle\":{\"baseClasses\":[\"BaseChatModel\",\"ChatOpenAI\",\"BaseLanguageModel\",\"BaseLLM\"],\"dataType\":\"ChatOpenAI\",\"id\":\"ChatOpenAI-VPh47\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-ChatOpenAI-VPh47{ล“baseClassesล“:[ล“BaseChatModelล“,ล“ChatOpenAIล“,ล“BaseLanguageModelล“,ล“BaseLLMล“],ล“dataTypeล“:ล“ChatOpenAIล“,ล“idล“:ล“ChatOpenAI-VPh47ล“}-LLMChain-NgFyo{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“LLMChain-NgFyoล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLanguageModelล“}\"},{\"source\":\"PromptTemplate-oAFjh\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“BasePromptTemplateล“,ล“StringPromptTemplateล“,ล“PromptTemplateล“],ล“dataTypeล“:ล“PromptTemplateล“,ล“idล“:ล“PromptTemplate-oAFjhล“}\",\"target\":\"LLMChain-NgFyo\",\"targetHandle\":\"{ล“fieldNameล“:ล“promptล“,ล“idล“:ล“LLMChain-NgFyoล“,ล“inputTypesล“:null,ล“typeล“:ล“BasePromptTemplateล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"prompt\",\"id\":\"LLMChain-NgFyo\",\"inputTypes\":null,\"type\":\"BasePromptTemplate\"},\"sourceHandle\":{\"baseClasses\":[\"BasePromptTemplate\",\"StringPromptTemplate\",\"PromptTemplate\"],\"dataType\":\"PromptTemplate\",\"id\":\"PromptTemplate-oAFjh\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-PromptTemplate-oAFjh{ล“baseClassesล“:[ล“BasePromptTemplateล“,ล“StringPromptTemplateล“,ล“PromptTemplateล“],ล“dataTypeล“:ล“PromptTemplateล“,ล“idล“:ล“PromptTemplate-oAFjhล“}-LLMChain-NgFyo{ล“fieldNameล“:ล“promptล“,ล“idล“:ล“LLMChain-NgFyoล“,ล“inputTypesล“:null,ล“typeล“:ล“BasePromptTemplateล“}\"}],\"viewport\":{\"x\":338.6546182690814,\"y\":53.026340800283265,\"zoom\":0.7169776240079143}},\"is_component\":false,\"updated_at\":\"2023-12-04T22:53:25.148460\",\"folder\":null,\"id\":\"a794fc48-5e9b-42a3-924f-7fe610500035\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"(D) Basic Chat (1) (4)\",\"description\":\"Simplest possible chat model\",\"data\":{\"nodes\":[{\"width\":384,\"height\":626,\"id\":\"ChatOpenAI-fBcfh\",\"type\":\"genericNode\",\"position\":{\"x\":228.87326389541306,\"y\":465.8628482073749},\"data\":{\"type\":\"ChatOpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain.callbacks.base.BaseCallbackHandler\",\"list\":true},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":6,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"gpt-3.5-turbo\",\"password\":false,\"options\":[\"gpt-3.5-turbo-0613\",\"gpt-3.5-turbo\",\"gpt-3.5-turbo-16k-0613\",\"gpt-3.5-turbo-16k\",\"gpt-4-0613\",\"gpt-4-32k-0613\",\"gpt-4\",\"gpt-4-32k\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"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\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false,\"value\":60},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":0.7,\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ChatOpenAI\"},\"description\":\"`OpenAI` Chat large language models API.\",\"base_classes\":[\"BaseChatModel\",\"BaseLanguageModel\",\"ChatOpenAI\",\"BaseLLM\"],\"display_name\":\"ChatOpenAI\",\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai\"},\"id\":\"ChatOpenAI-fBcfh\",\"value\":null},\"selected\":false,\"dragging\":false,\"positionAbsolute\":{\"x\":228.87326389541306,\"y\":465.8628482073749}},{\"width\":384,\"height\":310,\"id\":\"ConversationChain-bVNex\",\"type\":\"genericNode\",\"position\":{\"x\":806,\"y\":554},\"data\":{\"type\":\"ConversationChain\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain.callbacks.base.BaseCallbackHandler\",\"list\":true},\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseMemory\",\"list\":false},\"output_parser\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":{\"_type\":\"default\"},\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLLMOutputParser\",\"list\":false},\"prompt\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":{\"input_variables\":[\"history\",\"input\"],\"output_parser\":null,\"partial_variables\":{},\"template\":\"The following is a friendly conversation between a human and an AI. The AI is talkative and provides lots of specific details from its context. If the AI does not know the answer to a question, it truthfully says it does not know.\\n\\nCurrent conversation:\\n{history}\\nHuman: {input}\\nAI:\",\"template_format\":\"f-string\",\"validate_template\":true,\"_type\":\"prompt\"},\"password\":false,\"name\":\"prompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BasePromptTemplate\",\"list\":false},\"input_key\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"input\",\"password\":false,\"name\":\"input_key\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"llm_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"llm_kwargs\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"output_key\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"response\",\"password\":false,\"name\":\"output_key\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"return_final_only\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":true,\"password\":false,\"name\":\"return_final_only\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ConversationChain\"},\"description\":\"Chain to have a conversation and load context from memory.\",\"base_classes\":[\"ConversationChain\",\"Chain\",\"LLMChain\",\"function\"],\"display_name\":\"ConversationChain\",\"documentation\":\"\"},\"id\":\"ConversationChain-bVNex\",\"value\":null},\"selected\":false,\"dragging\":false,\"positionAbsolute\":{\"x\":806,\"y\":554}}],\"edges\":[{\"source\":\"ChatOpenAI-fBcfh\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“BaseChatModelล“,ล“BaseLanguageModelล“,ล“ChatOpenAIล“,ล“BaseLLMล“],ล“dataTypeล“:ล“ChatOpenAIล“,ล“idล“:ล“ChatOpenAI-fBcfhล“}\",\"target\":\"ConversationChain-bVNex\",\"targetHandle\":\"{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“ConversationChain-bVNexล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLanguageModelล“}\",\"className\":\"stroke-gray-900 stroke-connection\",\"id\":\"reactflow__edge-ChatOpenAI-fBcfh{ล“baseClassesล“:[ล“BaseChatModelล“,ล“BaseLanguageModelล“,ล“ChatOpenAIล“,ล“BaseLLMล“],ล“dataTypeล“:ล“ChatOpenAIล“,ล“idล“:ล“ChatOpenAI-fBcfhล“}-ConversationChain-bVNex{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“ConversationChain-bVNexล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLanguageModelล“}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"BaseChatModel\",\"BaseLanguageModel\",\"ChatOpenAI\",\"BaseLLM\"],\"dataType\":\"ChatOpenAI\",\"id\":\"ChatOpenAI-fBcfh\"},\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"ConversationChain-bVNex\",\"inputTypes\":null,\"type\":\"BaseLanguageModel\"}},\"style\":{\"stroke\":\"#555\"},\"animated\":false}],\"viewport\":{\"x\":-118.21416568593895,\"y\":-240.64815770363373,\"zoom\":0.7642485855675408}},\"is_component\":false,\"updated_at\":\"2023-12-04T22:57:55.879806\",\"folder\":null,\"id\":\"bddebeea-b80a-4b28-8895-c4425687dcce\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Directory Loader\",\"description\":\"Generic File Loader\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"import os\\n\\nfrom langchain.schema import Document\\nfrom langflow import CustomComponent\\nimport glob\\n\\nclass DirectoryLoaderComponent(CustomComponent):\\n display_name: str = \\\"Directory Loader\\\"\\n description: str = \\\"Generic File Loader\\\"\\n beta = True\\n loaders_info = [\\n {\\n \\\"loader\\\": \\\"AirbyteJSONLoader\\\",\\n \\\"name\\\": \\\"Airbyte JSON (.jsonl)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.AirbyteJSONLoader\\\",\\n \\\"defaultFor\\\": [\\\"jsonl\\\"],\\n \\\"allowdTypes\\\": [\\\"jsonl\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"JSONLoader\\\",\\n \\\"name\\\": \\\"JSON (.json)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.JSONLoader\\\",\\n \\\"defaultFor\\\": [\\\"json\\\"],\\n \\\"allowdTypes\\\": [\\\"json\\\"],\\n \\\"kwargs\\\": {\\\"jq_schema\\\": \\\".\\\", \\\"text_content\\\": False}\\n },\\n {\\n \\\"loader\\\": \\\"BSHTMLLoader\\\",\\n \\\"name\\\": \\\"BeautifulSoup4 HTML (.html, .htm)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.BSHTMLLoader\\\",\\n \\\"allowdTypes\\\": [\\\"html\\\", \\\"htm\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"CSVLoader\\\",\\n \\\"name\\\": \\\"CSV (.csv)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.CSVLoader\\\",\\n \\\"defaultFor\\\": [\\\"csv\\\"],\\n \\\"allowdTypes\\\": [\\\"csv\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"CoNLLULoader\\\",\\n \\\"name\\\": \\\"CoNLL-U (.conllu)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.CoNLLULoader\\\",\\n \\\"defaultFor\\\": [\\\"conllu\\\"],\\n \\\"allowdTypes\\\": [\\\"conllu\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"EverNoteLoader\\\",\\n \\\"name\\\": \\\"EverNote (.enex)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.EverNoteLoader\\\",\\n \\\"defaultFor\\\": [\\\"enex\\\"],\\n \\\"allowdTypes\\\": [\\\"enex\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"FacebookChatLoader\\\",\\n \\\"name\\\": \\\"Facebook Chat (.json)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.FacebookChatLoader\\\",\\n \\\"allowdTypes\\\": [\\\"json\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"OutlookMessageLoader\\\",\\n \\\"name\\\": \\\"Outlook Message (.msg)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.OutlookMessageLoader\\\",\\n \\\"defaultFor\\\": [\\\"msg\\\"],\\n \\\"allowdTypes\\\": [\\\"msg\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"PyPDFLoader\\\",\\n \\\"name\\\": \\\"PyPDF (.pdf)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.PyPDFLoader\\\",\\n \\\"defaultFor\\\": [\\\"pdf\\\"],\\n \\\"allowdTypes\\\": [\\\"pdf\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"STRLoader\\\",\\n \\\"name\\\": \\\"Subtitle (.str)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.STRLoader\\\",\\n \\\"defaultFor\\\": [\\\"str\\\"],\\n \\\"allowdTypes\\\": [\\\"str\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"TextLoader\\\",\\n \\\"name\\\": \\\"Text (.txt)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.TextLoader\\\",\\n \\\"defaultFor\\\": [\\\"txt\\\"],\\n \\\"allowdTypes\\\": [\\\"txt\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"UnstructuredEmailLoader\\\",\\n \\\"name\\\": \\\"Unstructured Email (.eml)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.UnstructuredEmailLoader\\\",\\n \\\"defaultFor\\\": [\\\"eml\\\"],\\n \\\"allowdTypes\\\": [\\\"eml\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"UnstructuredHTMLLoader\\\",\\n \\\"name\\\": \\\"Unstructured HTML (.html, .htm)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.UnstructuredHTMLLoader\\\",\\n \\\"defaultFor\\\": [\\\"html\\\", \\\"htm\\\"],\\n \\\"allowdTypes\\\": [\\\"html\\\", \\\"htm\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"UnstructuredMarkdownLoader\\\",\\n \\\"name\\\": \\\"Unstructured Markdown (.md)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.UnstructuredMarkdownLoader\\\",\\n \\\"defaultFor\\\": [\\\"md\\\"],\\n \\\"allowdTypes\\\": [\\\"md\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"UnstructuredPowerPointLoader\\\",\\n \\\"name\\\": \\\"Unstructured PowerPoint (.pptx)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.UnstructuredPowerPointLoader\\\",\\n \\\"defaultFor\\\": [\\\"pptx\\\"],\\n \\\"allowdTypes\\\": [\\\"pptx\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"UnstructuredWordLoader\\\",\\n \\\"name\\\": \\\"Unstructured Word (.docx)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.UnstructuredWordLoader\\\",\\n \\\"defaultFor\\\": [\\\"docx\\\"],\\n \\\"allowdTypes\\\": [\\\"docx\\\"],\\n },\\n]\\n\\n\\n def build_config(self):\\n loader_options = [\\\"Automatic\\\"] + [\\n loader_info[\\\"name\\\"] for loader_info in self.loaders_info\\n ]\\n\\n file_types = []\\n suffixes = []\\n\\n for loader_info in self.loaders_info:\\n if \\\"allowedTypes\\\" in loader_info:\\n file_types.extend(loader_info[\\\"allowedTypes\\\"])\\n suffixes.extend([f\\\".{ext}\\\" for ext in loader_info[\\\"allowedTypes\\\"]])\\n\\n return {\\n \\\"directory_path\\\": {\\n \\\"display_name\\\": \\\"Directory Path\\\",\\n \\\"required\\\": True,\\n },\\n \\\"loader\\\": {\\n \\\"display_name\\\": \\\"Loader\\\",\\n \\\"is_list\\\": True,\\n \\\"required\\\": True,\\n \\\"options\\\": loader_options,\\n \\\"value\\\": \\\"Automatic\\\",\\n },\\n }\\n\\n def build(self, directory_path: str, loader: str) -> Document:\\n # Verifique se o diretรณrio existe\\n if not os.path.exists(directory_path):\\n raise ValueError(f\\\"Directory not found: {directory_path}\\\")\\n\\n files = glob.glob(directory_path + \\\"/*.*\\\")\\n\\n\\n loader_info = None\\n if loader == \\\"Automatic\\\":\\n for file in files:\\n file_type = file.split(\\\".\\\")[-1]\\n\\n\\n for info in self.loaders_info:\\n if \\\"defaultFor\\\" in info:\\n if file_type in info[\\\"defaultFor\\\"]:\\n loader_info = info\\n break\\n if loader_info:\\n break\\n\\n if not loader_info:\\n raise ValueError(\\n \\\"No default loader found for any file in the directory\\\"\\n )\\n\\n else:\\n for info in self.loaders_info:\\n if info[\\\"name\\\"] == loader:\\n loader_info = info\\n break\\n\\n if not loader_info:\\n raise ValueError(f\\\"Loader {loader} not found in the loader info list\\\")\\n\\n loader_import = loader_info[\\\"import\\\"]\\n module_name, class_name = loader_import.rsplit(\\\".\\\", 1)\\n\\n try:\\n # Importe o loader dinamicamente\\n loader_module = __import__(module_name, fromlist=[class_name])\\n loader_instance = getattr(loader_module, class_name)\\n except ImportError as e:\\n raise ValueError(\\n f\\\"Loader {loader} could not be imported\\\\nLoader info:\\\\n{loader_info}\\\"\\n ) from e\\n\\n results = []\\n for file in files:\\n file_path = os.path.join(directory_path, file)\\n kwargs = loader_info.get(\\\"kwargs\\\", {})\\n result = loader_instance(file_path=file_path, **kwargs).load()\\n results.append(result)\\n self.status = results\\n return results\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"directory_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"directory_path\",\"display_name\":\"Directory Path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"/Users/ogabrielluiz/Projects/langflow2/docs\"},\"loader\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"Automatic\",\"password\":false,\"options\":[\"Automatic\",\"Airbyte JSON (.jsonl)\",\"JSON (.json)\",\"BeautifulSoup4 HTML (.html, .htm)\",\"CSV (.csv)\",\"CoNLL-U (.conllu)\",\"EverNote (.enex)\",\"Facebook Chat (.json)\",\"Outlook Message (.msg)\",\"PyPDF (.pdf)\",\"Subtitle (.str)\",\"Text (.txt)\",\"Unstructured Email (.eml)\",\"Unstructured HTML (.html, .htm)\",\"Unstructured Markdown (.md)\",\"Unstructured PowerPoint (.pptx)\",\"Unstructured Word (.docx)\"],\"name\":\"loader\",\"display_name\":\"Loader\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true}},\"description\":\"Generic File Loader\",\"base_classes\":[\"Document\"],\"display_name\":\"Directory Loader\",\"custom_fields\":{\"directory_path\":null,\"loader\":null},\"output_types\":[\"Document\"],\"documentation\":\"\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"CustomComponent-Ip6tG\"},\"id\":\"CustomComponent-Ip6tG\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-04T22:58:38.570303\",\"folder\":null,\"id\":\"5fe4debc-b6a7-45d4-a694-c02d8aa93b08\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Whisper Transcriber\",\"description\":\"Converts audio to text using OpenAI's Whisper.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom typing import Optional, List, Dict, Union\\nfrom langflow.field_typing import (\\n AgentExecutor,\\n BaseChatMemory,\\n BaseLanguageModel,\\n BaseLLM,\\n BaseLoader,\\n BaseMemory,\\n BaseOutputParser,\\n BasePromptTemplate,\\n BaseRetriever,\\n Callable,\\n Chain,\\n ChatPromptTemplate,\\n Data,\\n Document,\\n Embeddings,\\n NestedDict,\\n Object,\\n PromptTemplate,\\n TextSplitter,\\n Tool,\\n VectorStore,\\n)\\n\\nfrom openai import OpenAI\\nclass Component(CustomComponent):\\n display_name: str = \\\"Whisper Transcriber\\\"\\n description: str = \\\"Converts audio to text using OpenAI's Whisper.\\\"\\n\\n def build_config(self):\\n return {\\\"audio\\\":{\\\"field_type\\\":\\\"file\\\",\\\"suffixes\\\":[\\\".mp3\\\", \\\".mp4\\\", \\\".m4a\\\"]},\\\"OpenAIKey\\\":{\\\"field_type\\\":\\\"str\\\",\\\"password\\\":True}}\\n\\n def build(self, audio:str, OpenAIKey:str) -> str:\\n \\n # TODO: if output path, persist & load it instead\\n \\n client = OpenAI(api_key=OpenAIKey)\\n \\n audio_file= open(audio, \\\"rb\\\")\\n transcript = client.audio.transcriptions.create(\\n model=\\\"whisper-1\\\", \\n file=audio_file,\\n response_format=\\\"text\\\"\\n )\\n \\n \\n self.status = transcript\\n return transcript\\n\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"OpenAIKey\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"OpenAIKey\",\"display_name\":\"OpenAIKey\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"audio\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"suffixes\":[\".mp3\",\".mp4\",\".m4a\"],\"password\":false,\"name\":\"audio\",\"display_name\":\"audio\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"file_path\":\"/Users/rodrigonader/Library/Caches/langflow/19b3e1c9-90bf-405f-898a-e982f47adf76/a3308ce7e9b10088fcd985aabb6d17b012c6b6e81ff8806356574474c9d10229.m4a\",\"value\":\"Audio Recording 2023-11-29 at 12.12.04.m4a\"}},\"description\":\"Converts audio to text using OpenAI's Whisper.\",\"base_classes\":[\"str\"],\"display_name\":\"Whisper Transcriber\",\"custom_fields\":{\"OpenAIKey\":null,\"audio\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"CustomComponent-GJRrs\"},\"id\":\"CustomComponent-GJRrs\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-04T22:58:39.710502\",\"folder\":null,\"id\":\"bd9e911d-46bd-429f-aa75-dd740430695e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Youtube Conversation\",\"description\":\"Craft Meaningful Interactions, Generate Value.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":589,\"id\":\"CustomComponent-h0NSI\",\"type\":\"genericNode\",\"position\":{\"x\":714.9531293402755,\"y\":0.4994374160582993},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"import requests\\nfrom langflow import CustomComponent\\nfrom langchain.llms.base import BaseLLM\\nfrom langchain.schema import Document\\nfrom langchain.document_loaders import YoutubeLoader\\n\\n# Example usage:\\n\\nclass YourComponent(CustomComponent):\\n display_name: str = \\\"YouTube Transcript\\\"\\n description: str = \\\"YouTube transcripts refer to the written text versions of the spoken content in a video uploaded to the YouTube platform.\\\"\\n\\n def build_config(self):\\n return {\\\"url\\\": {\\\"multiline\\\": True, \\\"required\\\": True}}\\n\\n def build(self, url: str, llm: BaseLLM, dependencies: Document, language: str = \\\"en\\\") -> Document:\\n dependencies\\n response = requests.get(url)\\n loader = YoutubeLoader.from_youtube_url(url, add_video_info=True, language=[language])\\n result = loader.load()\\n self.repr_value = str(result)\\n return result\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"dependencies\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"dependencies\",\"display_name\":\"dependencies\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Document\",\"list\":false},\"language\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"en\",\"password\":false,\"name\":\"language\",\"display_name\":\"language\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"llm\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLLM\",\"list\":false},\"url\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"YouTube transcripts refer to the written text versions of the spoken content in a video uploaded to the YouTube platform.\",\"base_classes\":[\"Document\"],\"display_name\":\"YouTube Transcript\",\"custom_fields\":{\"dependencies\":null,\"language\":null,\"llm\":null,\"url\":null},\"output_types\":[\"Document\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-h0NSI\"},\"selected\":false,\"dragging\":false,\"positionAbsolute\":{\"x\":714.9531293402755,\"y\":0.4994374160582993}},{\"width\":384,\"height\":629,\"id\":\"ChatOpenAI-q61Y2\",\"type\":\"genericNode\",\"position\":{\"x\":18,\"y\":625.5521045590924},\"data\":{\"type\":\"ChatOpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain.callbacks.base.BaseCallbackHandler\",\"list\":true},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":6,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false,\"value\":\"\"},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"gpt-3.5-turbo-16k\",\"password\":false,\"options\":[\"gpt-3.5-turbo-0613\",\"gpt-3.5-turbo\",\"gpt-3.5-turbo-16k-0613\",\"gpt-3.5-turbo-16k\",\"gpt-4-0613\",\"gpt-4-32k-0613\",\"gpt-4\",\"gpt-4-32k\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":0.7,\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ChatOpenAI\"},\"description\":\"`OpenAI` Chat large language models API.\",\"base_classes\":[\"ChatOpenAI\",\"BaseChatModel\",\"BaseLanguageModel\",\"BaseLLM\"],\"display_name\":\"ChatOpenAI\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"ChatOpenAI-q61Y2\"},\"selected\":false,\"positionAbsolute\":{\"x\":18,\"y\":625.5521045590924},\"dragging\":false},{\"width\":384,\"height\":539,\"id\":\"Chroma-gVhy7\",\"type\":\"genericNode\",\"position\":{\"x\":2110.365967257855,\"y\":805.0149521868784},\"data\":{\"type\":\"Chroma\",\"node\":{\"template\":{\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"chromadb.Client\",\"list\":false},\"client_settings\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client_settings\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"chromadb.config.Setting\",\"list\":true},\"documents\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"documents\",\"display_name\":\"Documents\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Document\",\"list\":true},\"embedding\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"embedding\",\"display_name\":\"Embedding\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Embeddings\",\"list\":false},\"chroma_server_cors_allow_origins\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"chroma_server_cors_allow_origins\",\"display_name\":\"Chroma Server CORS Allow Origins\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"chroma_server_grpc_port\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"chroma_server_grpc_port\",\"display_name\":\"Chroma Server GRPC Port\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"chroma_server_host\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"chroma_server_host\",\"display_name\":\"Chroma Server Host\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"chroma_server_http_port\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"chroma_server_http_port\",\"display_name\":\"Chroma Server HTTP Port\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"chroma_server_ssl_enabled\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"chroma_server_ssl_enabled\",\"display_name\":\"Chroma Server SSL Enabled\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"collection_metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"collection_metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"collection_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"langchain\",\"password\":false,\"name\":\"collection_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"ids\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"ids\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"metadatas\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadatas\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":true},\"persist\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"persist\",\"display_name\":\"Persist\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"persist_directory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"persist_directory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"search_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"{}\",\"password\":false,\"name\":\"search_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"NestedDict\",\"list\":false},\"_type\":\"Chroma\"},\"description\":\"Create a Chroma vectorstore from a raw documents.\",\"base_classes\":[\"VectorStore\",\"Chroma\",\"BaseRetriever\",\"VectorStoreRetriever\"],\"display_name\":\"Chroma\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/vectorstores/integrations/chroma\",\"beta\":false,\"error\":null},\"id\":\"Chroma-gVhy7\"},\"selected\":false,\"positionAbsolute\":{\"x\":2110.365967257855,\"y\":805.0149521868784},\"dragging\":false},{\"width\":384,\"height\":501,\"id\":\"RecursiveCharacterTextSplitter-1eaOX\",\"type\":\"genericNode\",\"position\":{\"x\":1409.2872773444874,\"y\":19.45456141103284},\"data\":{\"type\":\"RecursiveCharacterTextSplitter\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Optional\\nfrom langflow import CustomComponent\\nfrom langchain.schema import Document\\nfrom langflow.utils.util import build_loader_repr_from_documents\\n\\n\\nclass RecursiveCharacterTextSplitterComponent(CustomComponent):\\n display_name: str = \\\"Recursive Character Text Splitter\\\"\\n description: str = \\\"Split text into chunks of a specified length.\\\"\\n documentation: str = \\\"https://docs.langflow.org/components/text-splitters#recursivecharactertextsplitter\\\"\\n\\n def build_config(self):\\n return {\\n \\\"documents\\\": {\\n \\\"display_name\\\": \\\"Documents\\\",\\n \\\"info\\\": \\\"The documents to split.\\\",\\n },\\n \\\"separators\\\": {\\n \\\"display_name\\\": \\\"Separators\\\",\\n \\\"info\\\": 'The characters to split on.\\\\nIf left empty defaults to [\\\"\\\\\\\\n\\\\\\\\n\\\", \\\"\\\\\\\\n\\\", \\\" \\\", \\\"\\\"].',\\n \\\"is_list\\\": True,\\n },\\n \\\"chunk_size\\\": {\\n \\\"display_name\\\": \\\"Chunk Size\\\",\\n \\\"info\\\": \\\"The maximum length of each chunk.\\\",\\n \\\"field_type\\\": \\\"int\\\",\\n \\\"value\\\": 1000,\\n },\\n \\\"chunk_overlap\\\": {\\n \\\"display_name\\\": \\\"Chunk Overlap\\\",\\n \\\"info\\\": \\\"The amount of overlap between chunks.\\\",\\n \\\"field_type\\\": \\\"int\\\",\\n \\\"value\\\": 200,\\n },\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n documents: list[Document],\\n separators: Optional[list[str]] = None,\\n chunk_size: Optional[int] = 1000,\\n chunk_overlap: Optional[int] = 200,\\n ) -> list[Document]:\\n \\\"\\\"\\\"\\n Split text into chunks of a specified length.\\n\\n Args:\\n separators (list[str]): The characters to split on.\\n chunk_size (int): The maximum length of each chunk.\\n chunk_overlap (int): The amount of overlap between chunks.\\n length_function (function): The function to use to calculate the length of the text.\\n\\n Returns:\\n list[str]: The chunks of text.\\n \\\"\\\"\\\"\\n from langchain.text_splitter import RecursiveCharacterTextSplitter\\n\\n if separators == \\\"\\\":\\n separators = None\\n elif separators:\\n # check if the separators list has escaped characters\\n # if there are escaped characters, unescape them\\n separators = [x.encode().decode(\\\"unicode-escape\\\") for x in separators]\\n\\n # Make sure chunk_size and chunk_overlap are ints\\n if isinstance(chunk_size, str):\\n chunk_size = int(chunk_size)\\n if isinstance(chunk_overlap, str):\\n chunk_overlap = int(chunk_overlap)\\n splitter = RecursiveCharacterTextSplitter(\\n separators=separators,\\n chunk_size=chunk_size,\\n chunk_overlap=chunk_overlap,\\n )\\n\\n docs = splitter.split_documents(documents)\\n self.repr_value = build_loader_repr_from_documents(docs)\\n return docs\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"chunk_overlap\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"50\",\"password\":false,\"name\":\"chunk_overlap\",\"display_name\":\"Chunk Overlap\",\"advanced\":false,\"dynamic\":false,\"info\":\"The amount of overlap between chunks.\",\"type\":\"int\",\"list\":false},\"chunk_size\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"400\",\"password\":false,\"name\":\"chunk_size\",\"display_name\":\"Chunk Size\",\"advanced\":false,\"dynamic\":false,\"info\":\"The maximum length of each chunk.\",\"type\":\"int\",\"list\":false},\"documents\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"documents\",\"display_name\":\"Documents\",\"advanced\":false,\"dynamic\":false,\"info\":\"The documents to split.\",\"type\":\"Document\",\"list\":true},\"separators\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"separators\",\"display_name\":\"Separators\",\"advanced\":false,\"dynamic\":false,\"info\":\"The characters to split on.\\nIf left empty defaults to [\\\"\\\\n\\\\n\\\", \\\"\\\\n\\\", \\\" \\\", \\\"\\\"].\",\"type\":\"str\",\"list\":true,\"value\":[\" \"]}},\"description\":\"Split text into chunks of a specified length.\",\"base_classes\":[\"Document\"],\"display_name\":\"Recursive Character Text Splitter\",\"custom_fields\":{\"chunk_overlap\":null,\"chunk_size\":null,\"documents\":null,\"separators\":null},\"output_types\":[\"RecursiveCharacterTextSplitter\"],\"documentation\":\"https://docs.langflow.org/components/text-splitters#recursivecharactertextsplitter\",\"beta\":true,\"error\":null},\"id\":\"RecursiveCharacterTextSplitter-1eaOX\"},\"selected\":false,\"positionAbsolute\":{\"x\":1409.2872773444874,\"y\":19.45456141103284},\"dragging\":false},{\"width\":384,\"height\":367,\"id\":\"OpenAIEmbeddings-cduOO\",\"type\":\"genericNode\",\"position\":{\"x\":1405.1176670984544,\"y\":1029.459061269321},\"data\":{\"type\":\"OpenAIEmbeddings\",\"node\":{\"template\":{\"allowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[],\"password\":false,\"name\":\"allowed_special\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Literal'all'\",\"list\":true},\"disallowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"all\",\"password\":false,\"name\":\"disallowed_special\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Literal'all'\",\"list\":true},\"chunk_size\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":1000,\"password\":false,\"name\":\"chunk_size\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"deployment\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"text-embedding-ada-002\",\"password\":false,\"name\":\"deployment\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"embedding_ctx_length\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":8191,\"password\":false,\"name\":\"embedding_ctx_length\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"{'Authorization': 'Bearer '}\",\"password\":false,\"name\":\"headers\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":6,\"password\":false,\"name\":\"max_retries\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"model\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"text-embedding-ada-002\",\"password\":false,\"name\":\"model\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_api_type\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_type\",\"display_name\":\"OpenAI API Type\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"openai_api_version\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_version\",\"display_name\":\"OpenAI API Version\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"show_progress_bar\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"show_progress_bar\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"skip_empty\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"skip_empty\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"_type\":\"OpenAIEmbeddings\"},\"description\":\"OpenAI embedding models.\",\"base_classes\":[\"Embeddings\",\"OpenAIEmbeddings\"],\"display_name\":\"OpenAIEmbeddings\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"OpenAIEmbeddings-cduOO\"},\"selected\":false,\"positionAbsolute\":{\"x\":1405.1176670984544,\"y\":1029.459061269321}},{\"width\":384,\"height\":339,\"id\":\"RetrievalQA-4PmTB\",\"type\":\"genericNode\",\"position\":{\"x\":2711.7786966415715,\"y\":709.4450828605463},\"data\":{\"type\":\"RetrievalQA\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain.callbacks.base.BaseCallbackHandler\",\"list\":true},\"combine_documents_chain\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"combine_documents_chain\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseCombineDocumentsChain\",\"list\":false},\"memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseMemory\",\"list\":false},\"retriever\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"retriever\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseRetriever\",\"list\":false},\"input_key\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"query\",\"password\":false,\"name\":\"input_key\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"output_key\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"result\",\"password\":false,\"name\":\"output_key\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"return_source_documents\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":true,\"password\":false,\"name\":\"return_source_documents\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"RetrievalQA\"},\"description\":\"Chain for question-answering against an index.\",\"base_classes\":[\"RetrievalQA\",\"Chain\",\"BaseRetrievalQA\",\"function\"],\"display_name\":\"RetrievalQA\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/chains/popular/vector_db_qa\",\"beta\":false,\"error\":null},\"id\":\"RetrievalQA-4PmTB\"},\"selected\":false,\"positionAbsolute\":{\"x\":2711.7786966415715,\"y\":709.4450828605463}},{\"width\":384,\"height\":333,\"id\":\"CombineDocsChain-yk0JF\",\"type\":\"genericNode\",\"position\":{\"x\":2125.6202053356537,\"y\":199.07708924409633},\"data\":{\"type\":\"CombineDocsChain\",\"node\":{\"template\":{\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"chain_type\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"stuff\",\"password\":false,\"options\":[\"stuff\",\"map_reduce\",\"map_rerank\",\"refine\"],\"name\":\"chain_type\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"_type\":\"load_qa_chain\"},\"description\":\"Load question answering chain.\",\"base_classes\":[\"BaseCombineDocumentsChain\",\"function\"],\"display_name\":\"CombineDocsChain\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"\",\"beta\":false,\"error\":null},\"id\":\"CombineDocsChain-yk0JF\"},\"selected\":false,\"positionAbsolute\":{\"x\":2125.6202053356537,\"y\":199.07708924409633},\"dragging\":false},{\"width\":384,\"height\":417,\"id\":\"CustomComponent-y6Wg0\",\"type\":\"genericNode\",\"position\":{\"x\":39.400034102832365,\"y\":-499.03551482195707},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\n\\nimport subprocess\\n\\nfrom langchain.llms.base import BaseLLM\\nfrom langchain.chains import LLMChain\\nfrom langchain.prompts import PromptTemplate\\nfrom langchain.schema import Document\\n\\nfrom typing import List\\n\\n\\nclass YourComponent(CustomComponent):\\n display_name: str = \\\"PIP Install\\\"\\n description: str = \\\"Create any custom component you want!\\\"\\n\\n def build(self, libs: List[str]) -> Document:\\n def install_package(package_name):\\n subprocess.check_call([\\\"pip\\\", \\\"install\\\", package_name])\\n for lib in libs:\\n install_package(lib)\\n return \\\"\\\"\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"libs\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"libs\",\"display_name\":\"libs\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"requests\",\"pytube\"]}},\"description\":\"Create any custom component you want!\",\"base_classes\":[\"Document\"],\"display_name\":\"PIP Install\",\"custom_fields\":{\"libs\":null},\"output_types\":[],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-y6Wg0\"},\"selected\":false,\"dragging\":false,\"positionAbsolute\":{\"x\":39.400034102832365,\"y\":-499.03551482195707}}],\"edges\":[{\"source\":\"ChatOpenAI-q61Y2\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“ChatOpenAIล“,ล“BaseChatModelล“,ล“BaseLanguageModelล“,ล“BaseLLMล“],ล“dataTypeล“:ล“ChatOpenAIล“,ล“idล“:ล“ChatOpenAI-q61Y2ล“}\",\"target\":\"CustomComponent-h0NSI\",\"targetHandle\":\"{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“CustomComponent-h0NSIล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLLMล“}\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-ChatOpenAI-q61Y2{ล“baseClassesล“:[ล“ChatOpenAIล“,ล“BaseChatModelล“,ล“BaseLanguageModelล“,ล“BaseLLMล“],ล“dataTypeล“:ล“ChatOpenAIล“,ล“idล“:ล“ChatOpenAI-q61Y2ล“}-CustomComponent-h0NSI{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“CustomComponent-h0NSIล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLLMล“}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"ChatOpenAI\",\"BaseChatModel\",\"BaseLanguageModel\",\"BaseLLM\"],\"dataType\":\"ChatOpenAI\",\"id\":\"ChatOpenAI-q61Y2\"},\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"CustomComponent-h0NSI\",\"inputTypes\":null,\"type\":\"BaseLLM\"}}},{\"source\":\"CustomComponent-y6Wg0\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“Documentล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-y6Wg0ล“}\",\"target\":\"CustomComponent-h0NSI\",\"targetHandle\":\"{ล“fieldNameล“:ล“dependenciesล“,ล“idล“:ล“CustomComponent-h0NSIล“,ล“inputTypesล“:null,ล“typeล“:ล“Documentล“}\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-y6Wg0{ล“baseClassesล“:[ล“Documentล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-y6Wg0ล“}-CustomComponent-h0NSI{ล“fieldNameล“:ล“dependenciesล“,ล“idล“:ล“CustomComponent-h0NSIล“,ล“inputTypesล“:null,ล“typeล“:ล“Documentล“}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"Document\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-y6Wg0\"},\"targetHandle\":{\"fieldName\":\"dependencies\",\"id\":\"CustomComponent-h0NSI\",\"inputTypes\":null,\"type\":\"Document\"}}},{\"source\":\"CustomComponent-h0NSI\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“Documentล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-h0NSIล“}\",\"target\":\"RecursiveCharacterTextSplitter-1eaOX\",\"targetHandle\":\"{ล“fieldNameล“:ล“documentsล“,ล“idล“:ล“RecursiveCharacterTextSplitter-1eaOXล“,ล“inputTypesล“:null,ล“typeล“:ล“Documentล“}\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-h0NSI{ล“baseClassesล“:[ล“Documentล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-h0NSIล“}-RecursiveCharacterTextSplitter-1eaOX{ล“fieldNameล“:ล“documentsล“,ล“idล“:ล“RecursiveCharacterTextSplitter-1eaOXล“,ล“inputTypesล“:null,ล“typeล“:ล“Documentล“}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"Document\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-h0NSI\"},\"targetHandle\":{\"fieldName\":\"documents\",\"id\":\"RecursiveCharacterTextSplitter-1eaOX\",\"inputTypes\":null,\"type\":\"Document\"}},\"selected\":false},{\"source\":\"OpenAIEmbeddings-cduOO\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“Embeddingsล“,ล“OpenAIEmbeddingsล“],ล“dataTypeล“:ล“OpenAIEmbeddingsล“,ล“idล“:ล“OpenAIEmbeddings-cduOOล“}\",\"target\":\"Chroma-gVhy7\",\"targetHandle\":\"{ล“fieldNameล“:ล“embeddingล“,ล“idล“:ล“Chroma-gVhy7ล“,ล“inputTypesล“:null,ล“typeล“:ล“Embeddingsล“}\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-OpenAIEmbeddings-cduOO{ล“baseClassesล“:[ล“Embeddingsล“,ล“OpenAIEmbeddingsล“],ล“dataTypeล“:ล“OpenAIEmbeddingsล“,ล“idล“:ล“OpenAIEmbeddings-cduOOล“}-Chroma-gVhy7{ล“fieldNameล“:ล“embeddingล“,ล“idล“:ล“Chroma-gVhy7ล“,ล“inputTypesล“:null,ล“typeล“:ล“Embeddingsล“}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"Embeddings\",\"OpenAIEmbeddings\"],\"dataType\":\"OpenAIEmbeddings\",\"id\":\"OpenAIEmbeddings-cduOO\"},\"targetHandle\":{\"fieldName\":\"embedding\",\"id\":\"Chroma-gVhy7\",\"inputTypes\":null,\"type\":\"Embeddings\"}}},{\"source\":\"RecursiveCharacterTextSplitter-1eaOX\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“Documentล“],ล“dataTypeล“:ล“RecursiveCharacterTextSplitterล“,ล“idล“:ล“RecursiveCharacterTextSplitter-1eaOXล“}\",\"target\":\"Chroma-gVhy7\",\"targetHandle\":\"{ล“fieldNameล“:ล“documentsล“,ล“idล“:ล“Chroma-gVhy7ล“,ล“inputTypesล“:null,ล“typeล“:ล“Documentล“}\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-RecursiveCharacterTextSplitter-1eaOX{ล“baseClassesล“:[ล“Documentล“],ล“dataTypeล“:ล“RecursiveCharacterTextSplitterล“,ล“idล“:ล“RecursiveCharacterTextSplitter-1eaOXล“}-Chroma-gVhy7{ล“fieldNameล“:ล“documentsล“,ล“idล“:ล“Chroma-gVhy7ล“,ล“inputTypesล“:null,ล“typeล“:ล“Documentล“}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"Document\"],\"dataType\":\"RecursiveCharacterTextSplitter\",\"id\":\"RecursiveCharacterTextSplitter-1eaOX\"},\"targetHandle\":{\"fieldName\":\"documents\",\"id\":\"Chroma-gVhy7\",\"inputTypes\":null,\"type\":\"Document\"}}},{\"source\":\"ChatOpenAI-q61Y2\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“ChatOpenAIล“,ล“BaseChatModelล“,ล“BaseLanguageModelล“,ล“BaseLLMล“],ล“dataTypeล“:ล“ChatOpenAIล“,ล“idล“:ล“ChatOpenAI-q61Y2ล“}\",\"target\":\"CombineDocsChain-yk0JF\",\"targetHandle\":\"{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“CombineDocsChain-yk0JFล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLanguageModelล“}\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-ChatOpenAI-q61Y2{ล“baseClassesล“:[ล“ChatOpenAIล“,ล“BaseChatModelล“,ล“BaseLanguageModelล“,ล“BaseLLMล“],ล“dataTypeล“:ล“ChatOpenAIล“,ล“idล“:ล“ChatOpenAI-q61Y2ล“}-CombineDocsChain-yk0JF{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“CombineDocsChain-yk0JFล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLanguageModelล“}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"ChatOpenAI\",\"BaseChatModel\",\"BaseLanguageModel\",\"BaseLLM\"],\"dataType\":\"ChatOpenAI\",\"id\":\"ChatOpenAI-q61Y2\"},\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"CombineDocsChain-yk0JF\",\"inputTypes\":null,\"type\":\"BaseLanguageModel\"}}},{\"source\":\"CombineDocsChain-yk0JF\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“BaseCombineDocumentsChainล“,ล“functionล“],ล“dataTypeล“:ล“CombineDocsChainล“,ล“idล“:ล“CombineDocsChain-yk0JFล“}\",\"target\":\"RetrievalQA-4PmTB\",\"targetHandle\":\"{ล“fieldNameล“:ล“combine_documents_chainล“,ล“idล“:ล“RetrievalQA-4PmTBล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseCombineDocumentsChainล“}\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CombineDocsChain-yk0JF{ล“baseClassesล“:[ล“BaseCombineDocumentsChainล“,ล“functionล“],ล“dataTypeล“:ล“CombineDocsChainล“,ล“idล“:ล“CombineDocsChain-yk0JFล“}-RetrievalQA-4PmTB{ล“fieldNameล“:ล“combine_documents_chainล“,ล“idล“:ล“RetrievalQA-4PmTBล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseCombineDocumentsChainล“}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"BaseCombineDocumentsChain\",\"function\"],\"dataType\":\"CombineDocsChain\",\"id\":\"CombineDocsChain-yk0JF\"},\"targetHandle\":{\"fieldName\":\"combine_documents_chain\",\"id\":\"RetrievalQA-4PmTB\",\"inputTypes\":null,\"type\":\"BaseCombineDocumentsChain\"}}},{\"source\":\"Chroma-gVhy7\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“VectorStoreล“,ล“Chromaล“,ล“BaseRetrieverล“,ล“VectorStoreRetrieverล“],ล“dataTypeล“:ล“Chromaล“,ล“idล“:ล“Chroma-gVhy7ล“}\",\"target\":\"RetrievalQA-4PmTB\",\"targetHandle\":\"{ล“fieldNameล“:ล“retrieverล“,ล“idล“:ล“RetrievalQA-4PmTBล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseRetrieverล“}\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-Chroma-gVhy7{ล“baseClassesล“:[ล“VectorStoreล“,ล“Chromaล“,ล“BaseRetrieverล“,ล“VectorStoreRetrieverล“],ล“dataTypeล“:ล“Chromaล“,ล“idล“:ล“Chroma-gVhy7ล“}-RetrievalQA-4PmTB{ล“fieldNameล“:ล“retrieverล“,ล“idล“:ล“RetrievalQA-4PmTBล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseRetrieverล“}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"VectorStore\",\"Chroma\",\"BaseRetriever\",\"VectorStoreRetriever\"],\"dataType\":\"Chroma\",\"id\":\"Chroma-gVhy7\"},\"targetHandle\":{\"fieldName\":\"retriever\",\"id\":\"RetrievalQA-4PmTB\",\"inputTypes\":null,\"type\":\"BaseRetriever\"}}}],\"viewport\":{\"x\":189.54413265004274,\"y\":259.89949657174975,\"zoom\":0.291027508374689}},\"is_component\":false,\"updated_at\":\"2023-12-04T22:59:08.830269\",\"folder\":null,\"id\":\"bc7eb94b-6fc6-49cb-9b19-35347ba51afa\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Web Scraper - Content & Links\",\"description\":\"Fetch and parse text and links from a given URL.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":338,\"id\":\"LLMChain-H7PBy\",\"type\":\"genericNode\",\"position\":{\"x\":1682.494010974207,\"y\":275.5701585623092},\"data\":{\"type\":\"LLMChain\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Callable, Optional, Union\\n\\nfrom langchain.chains import LLMChain\\n\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import (\\n BaseLanguageModel,\\n BaseMemory,\\n BasePromptTemplate,\\n Chain,\\n)\\n\\n\\nclass LLMChainComponent(CustomComponent):\\n display_name = \\\"LLMChain\\\"\\n description = \\\"Chain to run queries against LLMs\\\"\\n\\n def build_config(self):\\n return {\\n \\\"prompt\\\": {\\\"display_name\\\": \\\"Prompt\\\"},\\n \\\"llm\\\": {\\\"display_name\\\": \\\"LLM\\\"},\\n \\\"memory\\\": {\\\"display_name\\\": \\\"Memory\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n prompt: BasePromptTemplate,\\n llm: BaseLanguageModel,\\n memory: Optional[BaseMemory] = None,\\n ) -> Union[Chain, Callable]:\\n return LLMChain(prompt=prompt, llm=llm, memory=memory)\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"display_name\":\"Memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseMemory\",\"list\":false},\"prompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"prompt\",\"display_name\":\"Prompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BasePromptTemplate\",\"list\":false}},\"description\":\"Chain to run queries against LLMs\",\"base_classes\":[\"Chain\",\"Callable\"],\"display_name\":\"LLMChain\",\"custom_fields\":{\"llm\":null,\"memory\":null,\"prompt\":null},\"output_types\":[\"LLMChain\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"LLMChain-H7PBy\"},\"selected\":false,\"positionAbsolute\":{\"x\":1682.494010974207,\"y\":275.5701585623092},\"dragging\":false},{\"width\":384,\"height\":626,\"id\":\"ChatOpenAI-VSAdc\",\"type\":\"genericNode\",\"position\":{\"x\":1002.4263147022411,\"y\":-198.2305006886859},\"data\":{\"type\":\"ChatOpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain_core.callbacks.base.BaseCallbackHandler\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false,\"value\":\"\"},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"gpt-4-1106-preview\",\"password\":false,\"options\":[\"gpt-4-1106-preview\",\"gpt-4\",\"gpt-4-32k\",\"gpt-3.5-turbo\",\"gpt-3.5-turbo-16k\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"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\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"0.1\",\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ChatOpenAI\"},\"description\":\"`OpenAI` Chat large language models API.\",\"base_classes\":[\"BaseLanguageModel\",\"ChatOpenAI\",\"BaseChatModel\",\"BaseLLM\"],\"display_name\":\"ChatOpenAI\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"ChatOpenAI-VSAdc\"},\"selected\":false,\"dragging\":false,\"positionAbsolute\":{\"x\":1002.4263147022411,\"y\":-198.2305006886859}},{\"width\":384,\"height\":374,\"data\":{\"id\":\"GroupNode-WXPMk\",\"type\":\"PromptTemplate\",\"node\":{\"output_types\":[],\"display_name\":\"Web Scraper\",\"documentation\":\"\",\"base_classes\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"description\":\"Fetch and parse text and links from a given URL.\",\"template\":{\"code_CustomComponent-f6nOg\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport html2text\\n\\nclass ConvertHTMLToMarkdown(CustomComponent):\\n display_name: str = \\\"HTML to Markdown\\\"\\n description: str = \\\"Converts HTML content to Markdown format.\\\"\\n\\n def build(self, html_content: Data, ignore_links: bool = False) -> str:\\n converter = html2text.HTML2Text()\\n converter.ignore_links = ignore_links\\n markdown_text = converter.handle(html_content)\\n self.status = markdown_text\\n return markdown_text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-f6nOg\",\"field\":\"code\"},\"display_name\":\"Code\"},\"ignore_links_CustomComponent-f6nOg\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"ignore_links\",\"display_name\":\"ignore_links\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-f6nOg\",\"field\":\"ignore_links\"}},\"code_CustomComponent-FGzJJ\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"Fetch HTML\\\"\\n description: str = \\\"Fetches HTML content from a specified URL.\\\"\\n \\n def build_config(self):\\n return {\\\"url\\\": {\\\"input_types\\\": [\\\"Data\\\", \\\"str\\\"]}} \\n\\n def build(self, url: str) -> Data:\\n response = requests.get(url)\\n self.status = str(response) + \\\"\\\\n\\\\n\\\" + response.text\\n return response.text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-FGzJJ\",\"field\":\"code\"},\"display_name\":\"Code\"},\"code_CustomComponent-0XtUN\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from bs4 import BeautifulSoup\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ParseHTMLContent(CustomComponent):\\n display_name: str = \\\"Parse HTML\\\"\\n description: str = \\\"Parses HTML content using Beautiful Soup.\\\"\\n\\n def build(self, html_content: Data) -> Data:\\n soup = BeautifulSoup(html_content, 'html.parser')\\n self.status = soup\\n return soup\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-0XtUN\",\"field\":\"code\"},\"display_name\":\"Code\"},\"code_CustomComponent-ODIcp\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ExtractHyperlinks(CustomComponent):\\n display_name: str = \\\"Extract Hyperlinks\\\"\\n description: str = \\\"Extracts hyperlinks from parsed HTML content.\\\"\\n\\n def build(self, soup: Data) -> list:\\n links = [link.get('href') for link in soup.find_all('a')]\\n self.status = links\\n return links\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-ODIcp\",\"field\":\"code\"},\"display_name\":\"Code\"},\"output_parser_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"output_parser\"},\"display_name\":\"Output Parser\"},\"input_types_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"input_types\"},\"display_name\":\"Input Types\"},\"input_variables_PromptTemplate-H9Udy\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"url\",\"html_markdown\",\"html_links\",\"query\"],\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"input_variables\"},\"display_name\":\"Input Variables\"},\"partial_variables_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"partial_variables\"},\"display_name\":\"Partial Variables\"},\"template_PromptTemplate-H9Udy\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"template\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"prompt\",\"list\":false,\"value\":\"Below is the HTML content (as markdown) and hyperlinks extracted from {url}\\n\\n---\\n\\nContent:\\n\\n{html_markdown}\\n\\n---\\n\\nLinks:\\n\\n{html_links}\\n\\n---\\n\\nAnswer the user query as best as possible.\\n\\nUser query:\\n\\n{query}\\n\\nAnswer:\\n\",\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"template\"},\"display_name\":\"Template\"},\"template_format_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"f-string\",\"password\":false,\"name\":\"template_format\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"template_format\"},\"display_name\":\"Template Format\"},\"validate_template_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"validate_template\"},\"display_name\":\"Validate Template\"},\"query_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"give me links\",\"password\":false,\"name\":\"query\",\"display_name\":\"query\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"query\"}},\"code_CustomComponent-OACE0\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"URL Input\\\"\\n\\n def build(self, url: str) -> str:\\n return url\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-OACE0\",\"field\":\"code\"},\"display_name\":\"Code\"},\"url_CustomComponent-OACE0\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-OACE0\",\"field\":\"url\"},\"value\":\"https://paperswithcode.com/\"},\"code_CustomComponent-whsQ5\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\n\\nclass ListToMarkdownBullets(CustomComponent):\\n display_name: str = \\\"List to Bullets\\\"\\n description: str = \\\"Converts a Python list into Markdown bullet points.\\\"\\n\\n def build(self, items: list) -> str:\\n markdown_bullets = '\\\\n'.join(f'* {item}' for item in items)\\n return markdown_bullets\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-whsQ5\",\"field\":\"code\"},\"display_name\":\"Code\"}},\"flow\":{\"data\":{\"nodes\":[{\"width\":384,\"height\":405,\"id\":\"CustomComponent-f6nOg\",\"type\":\"genericNode\",\"position\":{\"x\":665.2835942536854,\"y\":-371.7823429271119},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport html2text\\n\\nclass ConvertHTMLToMarkdown(CustomComponent):\\n display_name: str = \\\"HTML to Markdown\\\"\\n description: str = \\\"Converts HTML content to Markdown format.\\\"\\n\\n def build(self, html_content: Data, ignore_links: bool = False) -> str:\\n converter = html2text.HTML2Text()\\n converter.ignore_links = ignore_links\\n markdown_text = converter.handle(html_content)\\n self.status = markdown_text\\n return markdown_text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"html_content\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"html_content\",\"display_name\":\"html_content\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false},\"ignore_links\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"ignore_links\",\"display_name\":\"ignore_links\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false}},\"description\":\"Converts HTML content to Markdown format.\",\"base_classes\":[\"str\"],\"display_name\":\"HTML to Markdown\",\"custom_fields\":{\"html_content\":null,\"ignore_links\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-f6nOg\"},\"selected\":true,\"positionAbsolute\":{\"x\":665.2835942536854,\"y\":-371.7823429271119},\"dragging\":false},{\"width\":384,\"height\":375,\"id\":\"CustomComponent-FGzJJ\",\"type\":\"genericNode\",\"position\":{\"x\":-464.4553400967736,\"y\":-225.62715888255525},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"Fetch HTML\\\"\\n description: str = \\\"Fetches HTML content from a specified URL.\\\"\\n \\n def build_config(self):\\n return {\\\"url\\\": {\\\"input_types\\\": [\\\"Data\\\", \\\"str\\\"]}} \\n\\n def build(self, url: str) -> Data:\\n response = requests.get(url)\\n self.status = str(response) + \\\"\\\\n\\\\n\\\" + response.text\\n return response.text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"url\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"input_types\":[\"Data\",\"str\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"}},\"description\":\"Fetches HTML content from a specified URL.\",\"base_classes\":[\"Data\"],\"display_name\":\"Fetch HTML\",\"custom_fields\":{\"url\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-FGzJJ\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":-464.4553400967736,\"y\":-225.62715888255525}},{\"width\":384,\"height\":329,\"id\":\"CustomComponent-0XtUN\",\"type\":\"genericNode\",\"position\":{\"x\":214.00059169497604,\"y\":177.27071061129823},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from bs4 import BeautifulSoup\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ParseHTMLContent(CustomComponent):\\n display_name: str = \\\"Parse HTML\\\"\\n description: str = \\\"Parses HTML content using Beautiful Soup.\\\"\\n\\n def build(self, html_content: Data) -> Data:\\n soup = BeautifulSoup(html_content, 'html.parser')\\n self.status = soup\\n return soup\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"html_content\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"html_content\",\"display_name\":\"html_content\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false}},\"description\":\"Parses HTML content using Beautiful Soup.\",\"base_classes\":[\"Data\"],\"display_name\":\"Parse HTML\",\"custom_fields\":{\"html_content\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-0XtUN\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":214.00059169497604,\"y\":177.27071061129823}},{\"width\":384,\"height\":329,\"id\":\"CustomComponent-ODIcp\",\"type\":\"genericNode\",\"position\":{\"x\":845.0502195222412,\"y\":366.54344452019404},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ExtractHyperlinks(CustomComponent):\\n display_name: str = \\\"Extract Hyperlinks\\\"\\n description: str = \\\"Extracts hyperlinks from parsed HTML content.\\\"\\n\\n def build(self, soup: Data) -> list:\\n links = [link.get('href') for link in soup.find_all('a')]\\n self.status = links\\n return links\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"soup\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"soup\",\"display_name\":\"soup\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false}},\"description\":\"Extracts hyperlinks from parsed HTML content.\",\"base_classes\":[\"list\"],\"display_name\":\"Extract Hyperlinks\",\"custom_fields\":{\"soup\":null},\"output_types\":[\"list\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-ODIcp\"},\"selected\":true,\"positionAbsolute\":{\"x\":845.0502195222412,\"y\":366.54344452019404},\"dragging\":false},{\"width\":384,\"height\":657,\"id\":\"PromptTemplate-H9Udy\",\"type\":\"genericNode\",\"position\":{\"x\":2230.389721706283,\"y\":584.4905083765256},\"data\":{\"type\":\"PromptTemplate\",\"node\":{\"template\":{\"output_parser\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false},\"input_types\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"input_variables\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"url\",\"html_markdown\",\"html_links\",\"query\"]},\"partial_variables\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"template\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"prompt\",\"list\":false,\"value\":\"Below is the HTML content (as markdown) and hyperlinks extracted from {url}\\n\\n---\\n\\nContent:\\n\\n{html_markdown}\\n\\n---\\n\\nLinks:\\n\\n{html_links}\\n\\n---\\n\\nAnswer the user query as best as possible.\\n\\nUser query:\\n\\n{query}\\n\\nAnswer:\\n\"},\"template_format\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"f-string\",\"password\":false,\"name\":\"template_format\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":false},\"validate_template\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"PromptTemplate\",\"url\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"html_markdown\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"html_markdown\",\"display_name\":\"html_markdown\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"html_links\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"html_links\",\"display_name\":\"html_links\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"query\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"query\",\"display_name\":\"query\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"A prompt template for a language model.\",\"base_classes\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"name\":\"\",\"display_name\":\"PromptTemplate\",\"documentation\":\"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\"custom_fields\":{\"\":[\"url\",\"html_markdown\",\"html_links\",\"query\"]},\"output_types\":[],\"full_path\":null,\"field_formatters\":{},\"beta\":false,\"error\":null},\"id\":\"PromptTemplate-H9Udy\"},\"selected\":true,\"positionAbsolute\":{\"x\":2230.389721706283,\"y\":584.4905083765256},\"dragging\":false},{\"width\":384,\"height\":347,\"id\":\"CustomComponent-OACE0\",\"type\":\"genericNode\",\"position\":{\"x\":-1155.9497945157625,\"y\":198.13583204151553},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"URL Input\\\"\\n\\n def build(self, url: str) -> str:\\n return url\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"url\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":null,\"base_classes\":[\"str\"],\"display_name\":\"URL Input\",\"custom_fields\":{\"url\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-OACE0\"},\"selected\":true,\"positionAbsolute\":{\"x\":-1155.9497945157625,\"y\":198.13583204151553},\"dragging\":false},{\"width\":384,\"height\":329,\"id\":\"CustomComponent-whsQ5\",\"type\":\"genericNode\",\"position\":{\"x\":1396.5574076376327,\"y\":694.8308714574463},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\n\\nclass ListToMarkdownBullets(CustomComponent):\\n display_name: str = \\\"List to Bullets\\\"\\n description: str = \\\"Converts a Python list into Markdown bullet points.\\\"\\n\\n def build(self, items: list) -> str:\\n markdown_bullets = '\\\\n'.join(f'* {item}' for item in items)\\n return markdown_bullets\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"items\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"items\",\"display_name\":\"items\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"list\",\"list\":true}},\"description\":\"Converts a Python list into Markdown bullet points.\",\"base_classes\":[\"str\"],\"display_name\":\"List to Bullets\",\"custom_fields\":{\"items\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-whsQ5\"},\"selected\":true,\"positionAbsolute\":{\"x\":1396.5574076376327,\"y\":694.8308714574463},\"dragging\":false}],\"edges\":[{\"source\":\"CustomComponent-FGzJJ\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-FGzJJล“}\",\"target\":\"CustomComponent-f6nOg\",\"targetHandle\":\"{ล“fieldNameล“:ล“html_contentล“,ล“idล“:ล“CustomComponent-f6nOgล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_content\",\"id\":\"CustomComponent-f6nOg\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-FGzJJ\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-FGzJJ{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-FGzJJล“}-CustomComponent-f6nOg{ล“fieldNameล“:ล“html_contentล“,ล“idล“:ล“CustomComponent-f6nOgล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"selected\":true},{\"source\":\"CustomComponent-FGzJJ\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-FGzJJล“}\",\"target\":\"CustomComponent-0XtUN\",\"targetHandle\":\"{ล“fieldNameล“:ล“html_contentล“,ล“idล“:ล“CustomComponent-0XtUNล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_content\",\"id\":\"CustomComponent-0XtUN\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-FGzJJ\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-FGzJJ{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-FGzJJล“}-CustomComponent-0XtUN{ล“fieldNameล“:ล“html_contentล“,ล“idล“:ล“CustomComponent-0XtUNล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"selected\":true},{\"source\":\"CustomComponent-0XtUN\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-0XtUNล“}\",\"target\":\"CustomComponent-ODIcp\",\"targetHandle\":\"{ล“fieldNameล“:ล“soupล“,ล“idล“:ล“CustomComponent-ODIcpล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"soup\",\"id\":\"CustomComponent-ODIcp\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-0XtUN\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-0XtUN{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-0XtUNล“}-CustomComponent-ODIcp{ล“fieldNameล“:ล“soupล“,ล“idล“:ล“CustomComponent-ODIcpล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"selected\":true},{\"source\":\"CustomComponent-OACE0\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-OACE0ล“}\",\"target\":\"CustomComponent-FGzJJ\",\"targetHandle\":\"{ล“fieldNameล“:ล“urlล“,ล“idล“:ล“CustomComponent-FGzJJล“,ล“inputTypesล“:[ล“Dataล“,ล“strล“],ล“typeล“:ล“strล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"url\",\"id\":\"CustomComponent-FGzJJ\",\"inputTypes\":[\"Data\",\"str\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-OACE0\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-OACE0{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-OACE0ล“}-CustomComponent-FGzJJ{ล“fieldNameล“:ล“urlล“,ล“idล“:ล“CustomComponent-FGzJJล“,ล“inputTypesล“:[ล“Dataล“,ล“strล“],ล“typeล“:ล“strล“}\",\"selected\":true},{\"source\":\"CustomComponent-OACE0\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-OACE0ล“}\",\"target\":\"PromptTemplate-H9Udy\",\"targetHandle\":\"{ล“fieldNameล“:ล“urlล“,ล“idล“:ล“PromptTemplate-H9Udyล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"url\",\"id\":\"PromptTemplate-H9Udy\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-OACE0\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-OACE0{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-OACE0ล“}-PromptTemplate-H9Udy{ล“fieldNameล“:ล“urlล“,ล“idล“:ล“PromptTemplate-H9Udyล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"selected\":true},{\"source\":\"CustomComponent-ODIcp\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“listล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-ODIcpล“}\",\"target\":\"CustomComponent-whsQ5\",\"targetHandle\":\"{ล“fieldNameล“:ล“itemsล“,ล“idล“:ล“CustomComponent-whsQ5ล“,ล“inputTypesล“:null,ล“typeล“:ล“listล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"items\",\"id\":\"CustomComponent-whsQ5\",\"inputTypes\":null,\"type\":\"list\"},\"sourceHandle\":{\"baseClasses\":[\"list\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-ODIcp\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-ODIcp{ล“baseClassesล“:[ล“listล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-ODIcpล“}-CustomComponent-whsQ5{ล“fieldNameล“:ล“itemsล“,ล“idล“:ล“CustomComponent-whsQ5ล“,ล“inputTypesล“:null,ล“typeล“:ล“listล“}\",\"selected\":true},{\"source\":\"CustomComponent-whsQ5\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-whsQ5ล“}\",\"target\":\"PromptTemplate-H9Udy\",\"targetHandle\":\"{ล“fieldNameล“:ล“html_linksล“,ล“idล“:ล“PromptTemplate-H9Udyล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_links\",\"id\":\"PromptTemplate-H9Udy\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-whsQ5\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-whsQ5{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-whsQ5ล“}-PromptTemplate-H9Udy{ล“fieldNameล“:ล“html_linksล“,ล“idล“:ล“PromptTemplate-H9Udyล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"selected\":true},{\"source\":\"CustomComponent-f6nOg\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-f6nOgล“}\",\"target\":\"PromptTemplate-H9Udy\",\"targetHandle\":\"{ล“fieldNameล“:ล“html_markdownล“,ล“idล“:ล“PromptTemplate-H9Udyล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_markdown\",\"id\":\"PromptTemplate-H9Udy\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-f6nOg\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-f6nOg{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-f6nOgล“}-PromptTemplate-H9Udy{ล“fieldNameล“:ล“html_markdownล“,ล“idล“:ล“PromptTemplate-H9Udyล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"selected\":true}],\"viewport\":{\"x\":343.0346131188585,\"y\":341.89843948642147,\"zoom\":0.24148408223121196}},\"is_component\":false,\"name\":\"Fluffy Ptolemy\",\"description\":\"\",\"id\":\"W5oNW\"}}},\"id\":\"GroupNode-WXPMk\",\"position\":{\"x\":873.0737834322758,\"y\":598.8401015776466},\"type\":\"genericNode\",\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":873.0737834322758,\"y\":598.8401015776466}}],\"edges\":[{\"source\":\"ChatOpenAI-VSAdc\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“BaseLanguageModelล“,ล“ChatOpenAIล“,ล“BaseChatModelล“,ล“BaseLLMล“],ล“dataTypeล“:ล“ChatOpenAIล“,ล“idล“:ล“ChatOpenAI-VSAdcล“}\",\"target\":\"LLMChain-H7PBy\",\"targetHandle\":\"{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“LLMChain-H7PByล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLanguageModelล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"LLMChain-H7PBy\",\"inputTypes\":null,\"type\":\"BaseLanguageModel\"},\"sourceHandle\":{\"baseClasses\":[\"BaseLanguageModel\",\"ChatOpenAI\",\"BaseChatModel\",\"BaseLLM\"],\"dataType\":\"ChatOpenAI\",\"id\":\"ChatOpenAI-VSAdc\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-ChatOpenAI-VSAdc{ล“baseClassesล“:[ล“BaseLanguageModelล“,ล“ChatOpenAIล“,ล“BaseChatModelล“,ล“BaseLLMล“],ล“dataTypeล“:ล“ChatOpenAIล“,ล“idล“:ล“ChatOpenAI-VSAdcล“}-LLMChain-H7PBy{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“LLMChain-H7PByล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLanguageModelล“}\"},{\"source\":\"GroupNode-WXPMk\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“StringPromptTemplateล“,ล“BasePromptTemplateล“,ล“PromptTemplateล“],ล“dataTypeล“:ล“PromptTemplateล“,ล“idล“:ล“GroupNode-WXPMkล“}\",\"target\":\"LLMChain-H7PBy\",\"targetHandle\":\"{ล“fieldNameล“:ล“promptล“,ล“idล“:ล“LLMChain-H7PByล“,ล“inputTypesล“:null,ล“typeล“:ล“BasePromptTemplateล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"prompt\",\"id\":\"LLMChain-H7PBy\",\"inputTypes\":null,\"type\":\"BasePromptTemplate\"},\"sourceHandle\":{\"baseClasses\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"dataType\":\"PromptTemplate\",\"id\":\"GroupNode-WXPMk\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-GroupNode-WXPMk{ล“baseClassesล“:[ล“StringPromptTemplateล“,ล“BasePromptTemplateล“,ล“PromptTemplateล“],ล“dataTypeล“:ล“PromptTemplateล“,ล“idล“:ล“GroupNode-WXPMkล“}-LLMChain-H7PBy{ล“fieldNameล“:ล“promptล“,ล“idล“:ล“LLMChain-H7PByล“,ล“inputTypesล“:null,ล“typeล“:ล“BasePromptTemplateล“}\"}],\"viewport\":{\"x\":-348.6161822813733,\"y\":121.40545291211492,\"zoom\":0.6801854262029781}},\"is_component\":false,\"updated_at\":\"2023-12-04T23:22:27.784647\",\"folder\":null,\"id\":\"efc3bf27-3cf1-4561-9a83-3df347572440\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sad Joliot\",\"description\":\"Navigate the Networks of Conversation.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":338,\"id\":\"LLMChain-RQsU1\",\"type\":\"genericNode\",\"position\":{\"x\":514.4440482813261,\"y\":528.164086188516},\"data\":{\"type\":\"LLMChain\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Callable, Optional, Union\\n\\nfrom langchain.chains import LLMChain\\n\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import (\\n BaseLanguageModel,\\n BaseMemory,\\n BasePromptTemplate,\\n Chain,\\n)\\n\\n\\nclass LLMChainComponent(CustomComponent):\\n display_name = \\\"LLMChain\\\"\\n description = \\\"Chain to run queries against LLMs\\\"\\n\\n def build_config(self):\\n return {\\n \\\"prompt\\\": {\\\"display_name\\\": \\\"Prompt\\\"},\\n \\\"llm\\\": {\\\"display_name\\\": \\\"LLM\\\"},\\n \\\"memory\\\": {\\\"display_name\\\": \\\"Memory\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n prompt: BasePromptTemplate,\\n llm: BaseLanguageModel,\\n memory: Optional[BaseMemory] = None,\\n ) -> Union[Chain, Callable]:\\n return LLMChain(prompt=prompt, llm=llm, memory=memory)\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"display_name\":\"Memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseMemory\",\"list\":false},\"prompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"prompt\",\"display_name\":\"Prompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BasePromptTemplate\",\"list\":false}},\"description\":\"Chain to run queries against LLMs\",\"base_classes\":[\"Chain\",\"Callable\"],\"display_name\":\"LLMChain\",\"custom_fields\":{\"llm\":null,\"memory\":null,\"prompt\":null},\"output_types\":[\"LLMChain\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"LLMChain-RQsU1\"},\"selected\":false,\"positionAbsolute\":{\"x\":514.4440482813261,\"y\":528.164086188516}},{\"width\":384,\"height\":626,\"id\":\"ChatOpenAI-NTTcv\",\"type\":\"genericNode\",\"position\":{\"x\":-221.33853765781578,\"y\":-35.48749923706055},\"data\":{\"type\":\"ChatOpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain_core.callbacks.base.BaseCallbackHandler\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"gpt-4-1106-preview\",\"password\":false,\"options\":[\"gpt-4-1106-preview\",\"gpt-4\",\"gpt-4-32k\",\"gpt-3.5-turbo\",\"gpt-3.5-turbo-16k\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"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\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"0.1\",\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ChatOpenAI\"},\"description\":\"`OpenAI` Chat large language models API.\",\"base_classes\":[\"BaseLanguageModel\",\"ChatOpenAI\",\"BaseChatModel\",\"BaseLLM\"],\"display_name\":\"ChatOpenAI\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"ChatOpenAI-NTTcv\"},\"selected\":false,\"positionAbsolute\":{\"x\":-221.33853765781578,\"y\":-35.48749923706055}},{\"width\":384,\"height\":374,\"id\":\"PromptTemplate-VELMV\",\"type\":\"genericNode\",\"position\":{\"x\":-222,\"y\":682.560723386973},\"data\":{\"id\":\"PromptTemplate-VELMV\",\"type\":\"PromptTemplate\",\"node\":{\"output_types\":[],\"display_name\":\"Web Scraper\",\"documentation\":\"\",\"base_classes\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"description\":\"Fetch and parse text and links from a given URL.\",\"template\":{\"code_CustomComponent-f6nOg\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport html2text\\n\\nclass ConvertHTMLToMarkdown(CustomComponent):\\n display_name: str = \\\"HTML to Markdown\\\"\\n description: str = \\\"Converts HTML content to Markdown format.\\\"\\n\\n def build(self, html_content: Data, ignore_links: bool = False) -> str:\\n converter = html2text.HTML2Text()\\n converter.ignore_links = ignore_links\\n markdown_text = converter.handle(html_content)\\n self.status = markdown_text\\n return markdown_text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-f6nOg\",\"field\":\"code\"},\"display_name\":\"Code\"},\"ignore_links_CustomComponent-f6nOg\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"ignore_links\",\"display_name\":\"ignore_links\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-f6nOg\",\"field\":\"ignore_links\"}},\"code_CustomComponent-FGzJJ\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"Fetch HTML\\\"\\n description: str = \\\"Fetches HTML content from a specified URL.\\\"\\n \\n def build_config(self):\\n return {\\\"url\\\": {\\\"input_types\\\": [\\\"Data\\\", \\\"str\\\"]}} \\n\\n def build(self, url: str) -> Data:\\n response = requests.get(url)\\n self.status = str(response) + \\\"\\\\n\\\\n\\\" + response.text\\n return response.text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-FGzJJ\",\"field\":\"code\"},\"display_name\":\"Code\"},\"code_CustomComponent-0XtUN\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from bs4 import BeautifulSoup\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ParseHTMLContent(CustomComponent):\\n display_name: str = \\\"Parse HTML\\\"\\n description: str = \\\"Parses HTML content using Beautiful Soup.\\\"\\n\\n def build(self, html_content: Data) -> Data:\\n soup = BeautifulSoup(html_content, 'html.parser')\\n self.status = soup\\n return soup\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-0XtUN\",\"field\":\"code\"},\"display_name\":\"Code\"},\"code_CustomComponent-ODIcp\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ExtractHyperlinks(CustomComponent):\\n display_name: str = \\\"Extract Hyperlinks\\\"\\n description: str = \\\"Extracts hyperlinks from parsed HTML content.\\\"\\n\\n def build(self, soup: Data) -> list:\\n links = [link.get('href') for link in soup.find_all('a')]\\n self.status = links\\n return links\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-ODIcp\",\"field\":\"code\"},\"display_name\":\"Code\"},\"output_parser_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"output_parser\"},\"display_name\":\"Output Parser\"},\"input_types_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"input_types\"},\"display_name\":\"Input Types\"},\"input_variables_PromptTemplate-H9Udy\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"url\",\"html_markdown\",\"html_links\",\"query\"],\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"input_variables\"},\"display_name\":\"Input Variables\"},\"partial_variables_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"partial_variables\"},\"display_name\":\"Partial Variables\"},\"template_PromptTemplate-H9Udy\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"template\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"prompt\",\"list\":false,\"value\":\"Below is the HTML content (as markdown) and hyperlinks extracted from {url}\\n\\n---\\n\\nContent:\\n\\n{html_markdown}\\n\\n---\\n\\nLinks:\\n\\n{html_links}\\n\\n---\\n\\nAnswer the user query as best as possible.\\n\\nUser query:\\n\\n{query}\\n\\nAnswer:\\n\",\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"template\"},\"display_name\":\"Template\"},\"template_format_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"f-string\",\"password\":false,\"name\":\"template_format\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"template_format\"},\"display_name\":\"Template Format\"},\"validate_template_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"validate_template\"},\"display_name\":\"Validate Template\"},\"query_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"query\",\"display_name\":\"query\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"query\"}},\"code_CustomComponent-OACE0\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"URL Input\\\"\\n\\n def build(self, url: str) -> str:\\n return url\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-OACE0\",\"field\":\"code\"},\"display_name\":\"Code\"},\"url_CustomComponent-OACE0\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-OACE0\",\"field\":\"url\"},\"value\":\"https://paperswithcode.com/\"},\"code_CustomComponent-whsQ5\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\n\\nclass ListToMarkdownBullets(CustomComponent):\\n display_name: str = \\\"List to Bullets\\\"\\n description: str = \\\"Converts a Python list into Markdown bullet points.\\\"\\n\\n def build(self, items: list) -> str:\\n markdown_bullets = '\\\\n'.join(f'* {item}' for item in items)\\n return markdown_bullets\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-whsQ5\",\"field\":\"code\"},\"display_name\":\"Code\"}},\"flow\":{\"data\":{\"nodes\":[{\"width\":384,\"height\":405,\"id\":\"CustomComponent-f6nOg\",\"type\":\"genericNode\",\"position\":{\"x\":665.2835942536854,\"y\":-371.7823429271119},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport html2text\\n\\nclass ConvertHTMLToMarkdown(CustomComponent):\\n display_name: str = \\\"HTML to Markdown\\\"\\n description: str = \\\"Converts HTML content to Markdown format.\\\"\\n\\n def build(self, html_content: Data, ignore_links: bool = False) -> str:\\n converter = html2text.HTML2Text()\\n converter.ignore_links = ignore_links\\n markdown_text = converter.handle(html_content)\\n self.status = markdown_text\\n return markdown_text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"html_content\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"html_content\",\"display_name\":\"html_content\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false},\"ignore_links\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"ignore_links\",\"display_name\":\"ignore_links\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false}},\"description\":\"Converts HTML content to Markdown format.\",\"base_classes\":[\"str\"],\"display_name\":\"HTML to Markdown\",\"custom_fields\":{\"html_content\":null,\"ignore_links\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-f6nOg\"},\"selected\":true,\"positionAbsolute\":{\"x\":665.2835942536854,\"y\":-371.7823429271119},\"dragging\":false},{\"width\":384,\"height\":375,\"id\":\"CustomComponent-FGzJJ\",\"type\":\"genericNode\",\"position\":{\"x\":-464.4553400967736,\"y\":-225.62715888255525},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"Fetch HTML\\\"\\n description: str = \\\"Fetches HTML content from a specified URL.\\\"\\n \\n def build_config(self):\\n return {\\\"url\\\": {\\\"input_types\\\": [\\\"Data\\\", \\\"str\\\"]}} \\n\\n def build(self, url: str) -> Data:\\n response = requests.get(url)\\n self.status = str(response) + \\\"\\\\n\\\\n\\\" + response.text\\n return response.text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"url\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"input_types\":[\"Data\",\"str\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"}},\"description\":\"Fetches HTML content from a specified URL.\",\"base_classes\":[\"Data\"],\"display_name\":\"Fetch HTML\",\"custom_fields\":{\"url\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-FGzJJ\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":-464.4553400967736,\"y\":-225.62715888255525}},{\"width\":384,\"height\":329,\"id\":\"CustomComponent-0XtUN\",\"type\":\"genericNode\",\"position\":{\"x\":214.00059169497604,\"y\":177.27071061129823},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from bs4 import BeautifulSoup\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ParseHTMLContent(CustomComponent):\\n display_name: str = \\\"Parse HTML\\\"\\n description: str = \\\"Parses HTML content using Beautiful Soup.\\\"\\n\\n def build(self, html_content: Data) -> Data:\\n soup = BeautifulSoup(html_content, 'html.parser')\\n self.status = soup\\n return soup\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"html_content\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"html_content\",\"display_name\":\"html_content\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false}},\"description\":\"Parses HTML content using Beautiful Soup.\",\"base_classes\":[\"Data\"],\"display_name\":\"Parse HTML\",\"custom_fields\":{\"html_content\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-0XtUN\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":214.00059169497604,\"y\":177.27071061129823}},{\"width\":384,\"height\":329,\"id\":\"CustomComponent-ODIcp\",\"type\":\"genericNode\",\"position\":{\"x\":845.0502195222412,\"y\":366.54344452019404},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ExtractHyperlinks(CustomComponent):\\n display_name: str = \\\"Extract Hyperlinks\\\"\\n description: str = \\\"Extracts hyperlinks from parsed HTML content.\\\"\\n\\n def build(self, soup: Data) -> list:\\n links = [link.get('href') for link in soup.find_all('a')]\\n self.status = links\\n return links\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"soup\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"soup\",\"display_name\":\"soup\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false}},\"description\":\"Extracts hyperlinks from parsed HTML content.\",\"base_classes\":[\"list\"],\"display_name\":\"Extract Hyperlinks\",\"custom_fields\":{\"soup\":null},\"output_types\":[\"list\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-ODIcp\"},\"selected\":true,\"positionAbsolute\":{\"x\":845.0502195222412,\"y\":366.54344452019404},\"dragging\":false},{\"width\":384,\"height\":657,\"id\":\"PromptTemplate-H9Udy\",\"type\":\"genericNode\",\"position\":{\"x\":2230.389721706283,\"y\":584.4905083765256},\"data\":{\"type\":\"PromptTemplate\",\"node\":{\"template\":{\"output_parser\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false},\"input_types\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"input_variables\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"url\",\"html_markdown\",\"html_links\",\"query\"]},\"partial_variables\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"template\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"prompt\",\"list\":false,\"value\":\"Below is the HTML content (as markdown) and hyperlinks extracted from {url}\\n\\n---\\n\\nContent:\\n\\n{html_markdown}\\n\\n---\\n\\nLinks:\\n\\n{html_links}\\n\\n---\\n\\nAnswer the user query as best as possible.\\n\\nUser query:\\n\\n{query}\\n\\nAnswer:\\n\"},\"template_format\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"f-string\",\"password\":false,\"name\":\"template_format\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":false},\"validate_template\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"PromptTemplate\",\"url\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"html_markdown\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"html_markdown\",\"display_name\":\"html_markdown\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"html_links\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"html_links\",\"display_name\":\"html_links\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"query\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"query\",\"display_name\":\"query\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"A prompt template for a language model.\",\"base_classes\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"name\":\"\",\"display_name\":\"PromptTemplate\",\"documentation\":\"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\"custom_fields\":{\"\":[\"url\",\"html_markdown\",\"html_links\",\"query\"]},\"output_types\":[],\"full_path\":null,\"field_formatters\":{},\"beta\":false,\"error\":null},\"id\":\"PromptTemplate-H9Udy\"},\"selected\":true,\"positionAbsolute\":{\"x\":2230.389721706283,\"y\":584.4905083765256},\"dragging\":false},{\"width\":384,\"height\":347,\"id\":\"CustomComponent-OACE0\",\"type\":\"genericNode\",\"position\":{\"x\":-1155.9497945157625,\"y\":198.13583204151553},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"URL Input\\\"\\n\\n def build(self, url: str) -> str:\\n return url\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"url\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":null,\"base_classes\":[\"str\"],\"display_name\":\"URL Input\",\"custom_fields\":{\"url\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-OACE0\"},\"selected\":true,\"positionAbsolute\":{\"x\":-1155.9497945157625,\"y\":198.13583204151553},\"dragging\":false},{\"width\":384,\"height\":329,\"id\":\"CustomComponent-whsQ5\",\"type\":\"genericNode\",\"position\":{\"x\":1396.5574076376327,\"y\":694.8308714574463},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\n\\nclass ListToMarkdownBullets(CustomComponent):\\n display_name: str = \\\"List to Bullets\\\"\\n description: str = \\\"Converts a Python list into Markdown bullet points.\\\"\\n\\n def build(self, items: list) -> str:\\n markdown_bullets = '\\\\n'.join(f'* {item}' for item in items)\\n return markdown_bullets\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"items\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"items\",\"display_name\":\"items\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"list\",\"list\":true}},\"description\":\"Converts a Python list into Markdown bullet points.\",\"base_classes\":[\"str\"],\"display_name\":\"List to Bullets\",\"custom_fields\":{\"items\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-whsQ5\"},\"selected\":true,\"positionAbsolute\":{\"x\":1396.5574076376327,\"y\":694.8308714574463},\"dragging\":false}],\"edges\":[{\"source\":\"CustomComponent-FGzJJ\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-FGzJJล“}\",\"target\":\"CustomComponent-f6nOg\",\"targetHandle\":\"{ล“fieldNameล“:ล“html_contentล“,ล“idล“:ล“CustomComponent-f6nOgล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_content\",\"id\":\"CustomComponent-f6nOg\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-FGzJJ\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-FGzJJ{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-FGzJJล“}-CustomComponent-f6nOg{ล“fieldNameล“:ล“html_contentล“,ล“idล“:ล“CustomComponent-f6nOgล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"selected\":true},{\"source\":\"CustomComponent-FGzJJ\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-FGzJJล“}\",\"target\":\"CustomComponent-0XtUN\",\"targetHandle\":\"{ล“fieldNameล“:ล“html_contentล“,ล“idล“:ล“CustomComponent-0XtUNล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_content\",\"id\":\"CustomComponent-0XtUN\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-FGzJJ\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-FGzJJ{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-FGzJJล“}-CustomComponent-0XtUN{ล“fieldNameล“:ล“html_contentล“,ล“idล“:ล“CustomComponent-0XtUNล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"selected\":true},{\"source\":\"CustomComponent-0XtUN\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-0XtUNล“}\",\"target\":\"CustomComponent-ODIcp\",\"targetHandle\":\"{ล“fieldNameล“:ล“soupล“,ล“idล“:ล“CustomComponent-ODIcpล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"soup\",\"id\":\"CustomComponent-ODIcp\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-0XtUN\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-0XtUN{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-0XtUNล“}-CustomComponent-ODIcp{ล“fieldNameล“:ล“soupล“,ล“idล“:ล“CustomComponent-ODIcpล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"selected\":true},{\"source\":\"CustomComponent-OACE0\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-OACE0ล“}\",\"target\":\"CustomComponent-FGzJJ\",\"targetHandle\":\"{ล“fieldNameล“:ล“urlล“,ล“idล“:ล“CustomComponent-FGzJJล“,ล“inputTypesล“:[ล“Dataล“,ล“strล“],ล“typeล“:ล“strล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"url\",\"id\":\"CustomComponent-FGzJJ\",\"inputTypes\":[\"Data\",\"str\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-OACE0\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-OACE0{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-OACE0ล“}-CustomComponent-FGzJJ{ล“fieldNameล“:ล“urlล“,ล“idล“:ล“CustomComponent-FGzJJล“,ล“inputTypesล“:[ล“Dataล“,ล“strล“],ล“typeล“:ล“strล“}\",\"selected\":true},{\"source\":\"CustomComponent-OACE0\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-OACE0ล“}\",\"target\":\"PromptTemplate-H9Udy\",\"targetHandle\":\"{ล“fieldNameล“:ล“urlล“,ล“idล“:ล“PromptTemplate-H9Udyล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"url\",\"id\":\"PromptTemplate-H9Udy\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-OACE0\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-OACE0{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-OACE0ล“}-PromptTemplate-H9Udy{ล“fieldNameล“:ล“urlล“,ล“idล“:ล“PromptTemplate-H9Udyล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"selected\":true},{\"source\":\"CustomComponent-ODIcp\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“listล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-ODIcpล“}\",\"target\":\"CustomComponent-whsQ5\",\"targetHandle\":\"{ล“fieldNameล“:ล“itemsล“,ล“idล“:ล“CustomComponent-whsQ5ล“,ล“inputTypesล“:null,ล“typeล“:ล“listล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"items\",\"id\":\"CustomComponent-whsQ5\",\"inputTypes\":null,\"type\":\"list\"},\"sourceHandle\":{\"baseClasses\":[\"list\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-ODIcp\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-ODIcp{ล“baseClassesล“:[ล“listล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-ODIcpล“}-CustomComponent-whsQ5{ล“fieldNameล“:ล“itemsล“,ล“idล“:ล“CustomComponent-whsQ5ล“,ล“inputTypesล“:null,ล“typeล“:ล“listล“}\",\"selected\":true},{\"source\":\"CustomComponent-whsQ5\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-whsQ5ล“}\",\"target\":\"PromptTemplate-H9Udy\",\"targetHandle\":\"{ล“fieldNameล“:ล“html_linksล“,ล“idล“:ล“PromptTemplate-H9Udyล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_links\",\"id\":\"PromptTemplate-H9Udy\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-whsQ5\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-whsQ5{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-whsQ5ล“}-PromptTemplate-H9Udy{ล“fieldNameล“:ล“html_linksล“,ล“idล“:ล“PromptTemplate-H9Udyล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"selected\":true},{\"source\":\"CustomComponent-f6nOg\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-f6nOgล“}\",\"target\":\"PromptTemplate-H9Udy\",\"targetHandle\":\"{ล“fieldNameล“:ล“html_markdownล“,ล“idล“:ล“PromptTemplate-H9Udyล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_markdown\",\"id\":\"PromptTemplate-H9Udy\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-f6nOg\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-f6nOg{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-f6nOgล“}-PromptTemplate-H9Udy{ล“fieldNameล“:ล“html_markdownล“,ล“idล“:ล“PromptTemplate-H9Udyล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"selected\":true}],\"viewport\":{\"x\":343.0346131188585,\"y\":341.89843948642147,\"zoom\":0.24148408223121196}},\"is_component\":false,\"name\":\"Fluffy Ptolemy\",\"description\":\"\",\"id\":\"W5oNW\"}}},\"selected\":false,\"positionAbsolute\":{\"x\":-222,\"y\":682.560723386973}}],\"edges\":[{\"source\":\"ChatOpenAI-NTTcv\",\"target\":\"LLMChain-RQsU1\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“BaseLanguageModelล“,ล“ChatOpenAIล“,ล“BaseChatModelล“,ล“BaseLLMล“],ล“dataTypeล“:ล“ChatOpenAIล“,ล“idล“:ล“ChatOpenAI-NTTcvล“}\",\"targetHandle\":\"{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“LLMChain-RQsU1ล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLanguageModelล“}\",\"id\":\"reactflow__edge-ChatOpenAI-NTTcv{ล“baseClassesล“:[ล“BaseLanguageModelล“,ล“ChatOpenAIล“,ล“BaseChatModelล“,ล“BaseLLMล“],ล“dataTypeล“:ล“ChatOpenAIล“,ล“idล“:ล“ChatOpenAI-NTTcvล“}-LLMChain-RQsU1{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“LLMChain-RQsU1ล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLanguageModelล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"LLMChain-RQsU1\",\"inputTypes\":null,\"type\":\"BaseLanguageModel\"},\"sourceHandle\":{\"baseClasses\":[\"BaseLanguageModel\",\"ChatOpenAI\",\"BaseChatModel\",\"BaseLLM\"],\"dataType\":\"ChatOpenAI\",\"id\":\"ChatOpenAI-NTTcv\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 \",\"animated\":false,\"selected\":false},{\"source\":\"PromptTemplate-VELMV\",\"target\":\"LLMChain-RQsU1\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“StringPromptTemplateล“,ล“BasePromptTemplateล“,ล“PromptTemplateล“],ล“dataTypeล“:ล“PromptTemplateล“,ล“idล“:ล“PromptTemplate-VELMVล“}\",\"targetHandle\":\"{ล“fieldNameล“:ล“promptล“,ล“idล“:ล“LLMChain-RQsU1ล“,ล“inputTypesล“:null,ล“typeล“:ล“BasePromptTemplateล“}\",\"id\":\"reactflow__edge-PromptTemplate-VELMV{ล“baseClassesล“:[ล“StringPromptTemplateล“,ล“BasePromptTemplateล“,ล“PromptTemplateล“],ล“dataTypeล“:ล“PromptTemplateล“,ล“idล“:ล“PromptTemplate-VELMVล“}-LLMChain-RQsU1{ล“fieldNameล“:ล“promptล“,ล“idล“:ล“LLMChain-RQsU1ล“,ล“inputTypesล“:null,ล“typeล“:ล“BasePromptTemplateล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"prompt\",\"id\":\"LLMChain-RQsU1\",\"inputTypes\":null,\"type\":\"BasePromptTemplate\"},\"sourceHandle\":{\"baseClasses\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"dataType\":\"PromptTemplate\",\"id\":\"PromptTemplate-VELMV\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 \",\"animated\":false,\"selected\":false}],\"viewport\":{\"x\":298.29888454238517,\"y\":96.95765543775741,\"zoom\":0.5140569133280332}},\"is_component\":false,\"updated_at\":\"2023-12-04T23:23:08.584967\",\"folder\":null,\"id\":\"5df79f1d-f592-4d59-8c0f-9f3c2f6465b1\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Silly Pasteur\",\"description\":\"Nurture NLP Nodes Here.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":338,\"id\":\"LLMChain-cHel8\",\"type\":\"genericNode\",\"position\":{\"x\":547.3876889720291,\"y\":299.2057833881307},\"data\":{\"type\":\"LLMChain\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Callable, Optional, Union\\n\\nfrom langchain.chains import LLMChain\\n\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import (\\n BaseLanguageModel,\\n BaseMemory,\\n BasePromptTemplate,\\n Chain,\\n)\\n\\n\\nclass LLMChainComponent(CustomComponent):\\n display_name = \\\"LLMChain\\\"\\n description = \\\"Chain to run queries against LLMs\\\"\\n\\n def build_config(self):\\n return {\\n \\\"prompt\\\": {\\\"display_name\\\": \\\"Prompt\\\"},\\n \\\"llm\\\": {\\\"display_name\\\": \\\"LLM\\\"},\\n \\\"memory\\\": {\\\"display_name\\\": \\\"Memory\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n prompt: BasePromptTemplate,\\n llm: BaseLanguageModel,\\n memory: Optional[BaseMemory] = None,\\n ) -> Union[Chain, Callable]:\\n return LLMChain(prompt=prompt, llm=llm, memory=memory)\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"display_name\":\"Memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseMemory\",\"list\":false},\"prompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"prompt\",\"display_name\":\"Prompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BasePromptTemplate\",\"list\":false}},\"description\":\"Chain to run queries against LLMs\",\"base_classes\":[\"Chain\",\"Callable\"],\"display_name\":\"LLMChain\",\"custom_fields\":{\"llm\":null,\"memory\":null,\"prompt\":null},\"output_types\":[\"LLMChain\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"LLMChain-cHel8\"},\"selected\":false,\"positionAbsolute\":{\"x\":547.3876889720291,\"y\":299.2057833881307},\"dragging\":false},{\"width\":384,\"height\":626,\"id\":\"ChatOpenAI-LA6y0\",\"type\":\"genericNode\",\"position\":{\"x\":-272.94405331278074,\"y\":-603.148171441675},\"data\":{\"type\":\"ChatOpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain_core.callbacks.base.BaseCallbackHandler\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"gpt-4-1106-preview\",\"password\":false,\"options\":[\"gpt-4-1106-preview\",\"gpt-4\",\"gpt-4-32k\",\"gpt-3.5-turbo\",\"gpt-3.5-turbo-16k\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"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\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"0.1\",\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ChatOpenAI\"},\"description\":\"`OpenAI` Chat large language models API.\",\"base_classes\":[\"BaseLanguageModel\",\"ChatOpenAI\",\"BaseChatModel\",\"BaseLLM\"],\"display_name\":\"ChatOpenAI\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"ChatOpenAI-LA6y0\"},\"selected\":false,\"dragging\":false,\"positionAbsolute\":{\"x\":-272.94405331278074,\"y\":-603.148171441675}},{\"width\":384,\"height\":404,\"id\":\"CustomComponent-ZNoRM\",\"type\":\"genericNode\",\"position\":{\"x\":-103.65741264289085,\"y\":134.62332404764658},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport html2text\\n\\nclass ConvertHTMLToMarkdown(CustomComponent):\\n display_name: str = \\\"HTML to Markdown\\\"\\n description: str = \\\"Converts HTML content to Markdown format.\\\"\\n\\n def build(self, html_content: Data, ignore_links: bool = False) -> str:\\n converter = html2text.HTML2Text()\\n converter.ignore_links = ignore_links\\n markdown_text = converter.handle(html_content)\\n self.status = markdown_text\\n return markdown_text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"display_name\":\"code\"},\"_type\":\"CustomComponent\",\"html_content\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"html_content\",\"display_name\":\"html_content\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false},\"ignore_links\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"ignore_links\",\"display_name\":\"ignore_links\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false}},\"description\":\"Converts HTML content to Markdown format.\",\"base_classes\":[\"str\"],\"display_name\":\"HTML to Markdown\",\"custom_fields\":{\"html_content\":null,\"ignore_links\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-ZNoRM\"},\"selected\":false,\"positionAbsolute\":{\"x\":-103.65741264289085,\"y\":134.62332404764658},\"dragging\":false},{\"width\":384,\"height\":374,\"id\":\"CustomComponent-zNSTv\",\"type\":\"genericNode\",\"position\":{\"x\":-1233.3963469933499,\"y\":280.77850809220325},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"Fetch HTML\\\"\\n description: str = \\\"Fetches HTML content from a specified URL.\\\"\\n \\n def build_config(self):\\n return {\\\"url\\\": {\\\"input_types\\\": [\\\"Data\\\", \\\"str\\\"]}} \\n\\n def build(self, url: str) -> Data:\\n response = requests.get(url)\\n self.status = str(response) + \\\"\\\\n\\\\n\\\" + response.text\\n return response.text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"display_name\":\"code\"},\"_type\":\"CustomComponent\",\"url\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"input_types\":[\"Data\",\"str\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"}},\"description\":\"Fetches HTML content from a specified URL.\",\"base_classes\":[\"Data\"],\"display_name\":\"Fetch HTML\",\"custom_fields\":{\"url\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-zNSTv\"},\"selected\":false,\"dragging\":false,\"positionAbsolute\":{\"x\":-1233.3963469933499,\"y\":280.77850809220325}},{\"width\":384,\"height\":328,\"id\":\"CustomComponent-Ihm2o\",\"type\":\"genericNode\",\"position\":{\"x\":-554.9404152016002,\"y\":683.6763775860567},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from bs4 import BeautifulSoup\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ParseHTMLContent(CustomComponent):\\n display_name: str = \\\"Parse HTML\\\"\\n description: str = \\\"Parses HTML content using Beautiful Soup.\\\"\\n\\n def build(self, html_content: Data) -> Data:\\n soup = BeautifulSoup(html_content, 'html.parser')\\n self.status = soup\\n return soup\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"display_name\":\"code\"},\"_type\":\"CustomComponent\",\"html_content\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"html_content\",\"display_name\":\"html_content\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false}},\"description\":\"Parses HTML content using Beautiful Soup.\",\"base_classes\":[\"Data\"],\"display_name\":\"Parse HTML\",\"custom_fields\":{\"html_content\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-Ihm2o\"},\"selected\":false,\"dragging\":false,\"positionAbsolute\":{\"x\":-554.9404152016002,\"y\":683.6763775860567}},{\"width\":384,\"height\":328,\"id\":\"CustomComponent-6ST9l\",\"type\":\"genericNode\",\"position\":{\"x\":76.10921262566495,\"y\":872.9491114949525},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ExtractHyperlinks(CustomComponent):\\n display_name: str = \\\"Extract Hyperlinks\\\"\\n description: str = \\\"Extracts hyperlinks from parsed HTML content.\\\"\\n\\n def build(self, soup: Data) -> list:\\n links = [link.get('href') for link in soup.find_all('a')]\\n self.status = links\\n return links\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"display_name\":\"code\"},\"_type\":\"CustomComponent\",\"soup\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"soup\",\"display_name\":\"soup\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false}},\"description\":\"Extracts hyperlinks from parsed HTML content.\",\"base_classes\":[\"list\"],\"display_name\":\"Extract Hyperlinks\",\"custom_fields\":{\"soup\":null},\"output_types\":[\"list\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-6ST9l\"},\"selected\":false,\"positionAbsolute\":{\"x\":76.10921262566495,\"y\":872.9491114949525},\"dragging\":false},{\"width\":384,\"height\":654,\"id\":\"PromptTemplate-l35W1\",\"type\":\"genericNode\",\"position\":{\"x\":1461.4487148097069,\"y\":1090.896175351284},\"data\":{\"type\":\"PromptTemplate\",\"node\":{\"template\":{\"output_parser\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false,\"display_name\":\"output_parser\"},\"input_types\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false,\"display_name\":\"input_types\"},\"input_variables\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"url\",\"html_markdown\",\"html_links\",\"query\"],\"display_name\":\"input_variables\"},\"partial_variables\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false,\"display_name\":\"partial_variables\"},\"template\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"prompt\",\"list\":false,\"value\":\"Below is the HTML content (as markdown) and hyperlinks extracted from {url}\\n\\n---\\n\\nContent:\\n\\n{html_markdown}\\n\\n---\\n\\nLinks:\\n\\n{html_links}\\n\\n---\\n\\nAnswer the user query as best as possible.\\n\\nUser query:\\n\\n{query}\\n\\nAnswer:\\n\",\"display_name\":\"template\"},\"template_format\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"f-string\",\"password\":false,\"name\":\"template_format\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":false,\"display_name\":\"template_format\"},\"validate_template\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false,\"display_name\":\"validate_template\"},\"_type\":\"PromptTemplate\",\"url\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"html_markdown\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"html_markdown\",\"display_name\":\"html_markdown\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"html_links\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"html_links\",\"display_name\":\"html_links\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"query\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"query\",\"display_name\":\"query\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"A prompt template for a language model.\",\"base_classes\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"name\":\"\",\"display_name\":\"PromptTemplate\",\"documentation\":\"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\"custom_fields\":{\"\":[\"url\",\"html_markdown\",\"html_links\",\"query\"]},\"output_types\":[],\"full_path\":null,\"field_formatters\":{},\"beta\":false,\"error\":null},\"id\":\"PromptTemplate-l35W1\"},\"selected\":false,\"positionAbsolute\":{\"x\":1461.4487148097069,\"y\":1090.896175351284},\"dragging\":false},{\"width\":384,\"height\":346,\"id\":\"CustomComponent-iTLf4\",\"type\":\"genericNode\",\"position\":{\"x\":-1924.8908014123388,\"y\":704.5414990162741},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"URL Input\\\"\\n\\n def build(self, url: str) -> str:\\n return url\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"display_name\":\"code\"},\"_type\":\"CustomComponent\",\"url\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"https://paperswithcode.com/\"}},\"description\":null,\"base_classes\":[\"str\"],\"display_name\":\"URL Input\",\"custom_fields\":{\"url\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-iTLf4\"},\"selected\":false,\"positionAbsolute\":{\"x\":-1924.8908014123388,\"y\":704.5414990162741},\"dragging\":false},{\"width\":384,\"height\":328,\"id\":\"CustomComponent-jWLUz\",\"type\":\"genericNode\",\"position\":{\"x\":627.6164007410564,\"y\":1201.2365384322047},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\n\\nclass ListToMarkdownBullets(CustomComponent):\\n display_name: str = \\\"List to Bullets\\\"\\n description: str = \\\"Converts a Python list into Markdown bullet points.\\\"\\n\\n def build(self, items: list) -> str:\\n markdown_bullets = '\\\\n'.join(f'* {item}' for item in items)\\n return markdown_bullets\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"display_name\":\"code\"},\"_type\":\"CustomComponent\",\"items\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"items\",\"display_name\":\"items\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"list\",\"list\":true}},\"description\":\"Converts a Python list into Markdown bullet points.\",\"base_classes\":[\"str\"],\"display_name\":\"List to Bullets\",\"custom_fields\":{\"items\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-jWLUz\"},\"selected\":false,\"positionAbsolute\":{\"x\":627.6164007410564,\"y\":1201.2365384322047},\"dragging\":false}],\"edges\":[{\"source\":\"ChatOpenAI-LA6y0\",\"target\":\"LLMChain-cHel8\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“BaseLanguageModelล“,ล“ChatOpenAIล“,ล“BaseChatModelล“,ล“BaseLLMล“],ล“dataTypeล“:ล“ChatOpenAIล“,ล“idล“:ล“ChatOpenAI-LA6y0ล“}\",\"targetHandle\":\"{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“LLMChain-cHel8ล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLanguageModelล“}\",\"id\":\"reactflow__edge-ChatOpenAI-LA6y0{ล“baseClassesล“:[ล“BaseLanguageModelล“,ล“ChatOpenAIล“,ล“BaseChatModelล“,ล“BaseLLMล“],ล“dataTypeล“:ล“ChatOpenAIล“,ล“idล“:ล“ChatOpenAI-LA6y0ล“}-LLMChain-cHel8{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“LLMChain-cHel8ล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLanguageModelล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"LLMChain-cHel8\",\"inputTypes\":null,\"type\":\"BaseLanguageModel\"},\"sourceHandle\":{\"baseClasses\":[\"BaseLanguageModel\",\"ChatOpenAI\",\"BaseChatModel\",\"BaseLLM\"],\"dataType\":\"ChatOpenAI\",\"id\":\"ChatOpenAI-LA6y0\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"selected\":false},{\"source\":\"CustomComponent-zNSTv\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-zNSTvล“}\",\"target\":\"CustomComponent-ZNoRM\",\"targetHandle\":\"{ล“fieldNameล“:ล“html_contentล“,ล“idล“:ล“CustomComponent-ZNoRMล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_content\",\"id\":\"CustomComponent-ZNoRM\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-zNSTv\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-zNSTv{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-zNSTvล“}-CustomComponent-ZNoRM{ล“fieldNameล“:ล“html_contentล“,ล“idล“:ล“CustomComponent-ZNoRMล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"selected\":false},{\"source\":\"CustomComponent-zNSTv\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-zNSTvล“}\",\"target\":\"CustomComponent-Ihm2o\",\"targetHandle\":\"{ล“fieldNameล“:ล“html_contentล“,ล“idล“:ล“CustomComponent-Ihm2oล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_content\",\"id\":\"CustomComponent-Ihm2o\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-zNSTv\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-zNSTv{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-zNSTvล“}-CustomComponent-Ihm2o{ล“fieldNameล“:ล“html_contentล“,ล“idล“:ล“CustomComponent-Ihm2oล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"selected\":false},{\"source\":\"CustomComponent-Ihm2o\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-Ihm2oล“}\",\"target\":\"CustomComponent-6ST9l\",\"targetHandle\":\"{ล“fieldNameล“:ล“soupล“,ล“idล“:ล“CustomComponent-6ST9lล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"soup\",\"id\":\"CustomComponent-6ST9l\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-Ihm2o\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-Ihm2o{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-Ihm2oล“}-CustomComponent-6ST9l{ล“fieldNameล“:ล“soupล“,ล“idล“:ล“CustomComponent-6ST9lล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"selected\":false},{\"source\":\"CustomComponent-iTLf4\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-iTLf4ล“}\",\"target\":\"CustomComponent-zNSTv\",\"targetHandle\":\"{ล“fieldNameล“:ล“urlล“,ล“idล“:ล“CustomComponent-zNSTvล“,ล“inputTypesล“:[ล“Dataล“,ล“strล“],ล“typeล“:ล“strล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"url\",\"id\":\"CustomComponent-zNSTv\",\"inputTypes\":[\"Data\",\"str\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-iTLf4\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-iTLf4{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-iTLf4ล“}-CustomComponent-zNSTv{ล“fieldNameล“:ล“urlล“,ล“idล“:ล“CustomComponent-zNSTvล“,ล“inputTypesล“:[ล“Dataล“,ล“strล“],ล“typeล“:ล“strล“}\",\"selected\":false},{\"source\":\"CustomComponent-iTLf4\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-iTLf4ล“}\",\"target\":\"PromptTemplate-l35W1\",\"targetHandle\":\"{ล“fieldNameล“:ล“urlล“,ล“idล“:ล“PromptTemplate-l35W1ล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"url\",\"id\":\"PromptTemplate-l35W1\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-iTLf4\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-iTLf4{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-iTLf4ล“}-PromptTemplate-l35W1{ล“fieldNameล“:ล“urlล“,ล“idล“:ล“PromptTemplate-l35W1ล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"selected\":false},{\"source\":\"CustomComponent-6ST9l\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“listล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-6ST9lล“}\",\"target\":\"CustomComponent-jWLUz\",\"targetHandle\":\"{ล“fieldNameล“:ล“itemsล“,ล“idล“:ล“CustomComponent-jWLUzล“,ล“inputTypesล“:null,ล“typeล“:ล“listล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"items\",\"id\":\"CustomComponent-jWLUz\",\"inputTypes\":null,\"type\":\"list\"},\"sourceHandle\":{\"baseClasses\":[\"list\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-6ST9l\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-6ST9l{ล“baseClassesล“:[ล“listล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-6ST9lล“}-CustomComponent-jWLUz{ล“fieldNameล“:ล“itemsล“,ล“idล“:ล“CustomComponent-jWLUzล“,ล“inputTypesล“:null,ล“typeล“:ล“listล“}\",\"selected\":false},{\"source\":\"CustomComponent-jWLUz\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-jWLUzล“}\",\"target\":\"PromptTemplate-l35W1\",\"targetHandle\":\"{ล“fieldNameล“:ล“html_linksล“,ล“idล“:ล“PromptTemplate-l35W1ล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_links\",\"id\":\"PromptTemplate-l35W1\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-jWLUz\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-jWLUz{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-jWLUzล“}-PromptTemplate-l35W1{ล“fieldNameล“:ล“html_linksล“,ล“idล“:ล“PromptTemplate-l35W1ล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"selected\":false},{\"source\":\"CustomComponent-ZNoRM\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-ZNoRMล“}\",\"target\":\"PromptTemplate-l35W1\",\"targetHandle\":\"{ล“fieldNameล“:ล“html_markdownล“,ล“idล“:ล“PromptTemplate-l35W1ล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_markdown\",\"id\":\"PromptTemplate-l35W1\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-ZNoRM\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-ZNoRM{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-ZNoRMล“}-PromptTemplate-l35W1{ล“fieldNameล“:ล“html_markdownล“,ล“idล“:ล“PromptTemplate-l35W1ล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"selected\":false},{\"source\":\"PromptTemplate-l35W1\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“StringPromptTemplateล“,ล“BasePromptTemplateล“,ล“PromptTemplateล“],ล“dataTypeล“:ล“PromptTemplateล“,ล“idล“:ล“PromptTemplate-l35W1ล“}\",\"target\":\"LLMChain-cHel8\",\"targetHandle\":\"{ล“fieldNameล“:ล“promptล“,ล“idล“:ล“LLMChain-cHel8ล“,ล“inputTypesล“:null,ล“typeล“:ล“BasePromptTemplateล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"prompt\",\"id\":\"LLMChain-cHel8\",\"inputTypes\":null,\"type\":\"BasePromptTemplate\"},\"sourceHandle\":{\"baseClasses\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"dataType\":\"PromptTemplate\",\"id\":\"PromptTemplate-l35W1\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-PromptTemplate-mJqEg{ล“baseClassesล“:[ล“StringPromptTemplateล“,ล“BasePromptTemplateล“,ล“PromptTemplateล“],ล“dataTypeล“:ล“PromptTemplateล“,ล“idล“:ล“PromptTemplate-mJqEgล“}-LLMChain-cHel8{ล“fieldNameล“:ล“promptล“,ล“idล“:ล“LLMChain-cHel8ล“,ล“inputTypesล“:null,ล“typeล“:ล“BasePromptTemplateล“}\"}],\"viewport\":{\"x\":206.6159172940935,\"y\":79.94375811155385,\"zoom\":0.5140569133280333}},\"is_component\":false,\"updated_at\":\"2023-12-06T00:23:04.515144\",\"folder\":null,\"id\":\"ecfb377a-7e88-405d-8d66-7560735ce446\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lonely Lovelace\",\"description\":\"Smart Chains, Smarter Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-04T23:43:25.925753\",\"folder\":null,\"id\":\"30e71767-6128-40e4-9a6d-b9197b679971\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Custom Component\",\"description\":\"Create any custom component you want!\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\n\\nclass Component(CustomComponent):\\n display_name: str = \\\"Custom Component\\\"\\n description: str = \\\"Create any custom component you want!\\\"\\n documentation: str = \\\"http://docs.langflow.org/components/custom\\\"\\n\\n def build_config(self):\\n return {\\\"param\\\": {\\\"display_name\\\": \\\"Parameter\\\"}}\\n\\n def build(self, param: Data) -> Data:\\n return param\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"param\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"param\",\"display_name\":\"Parameter\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false}},\"description\":\"Create any custom component you want!\",\"base_classes\":[\"Data\"],\"display_name\":\"Custom Component\",\"custom_fields\":{\"param\":null},\"output_types\":[\"CustomComponent\"],\"documentation\":\"http://docs.langflow.org/components/custom\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"CustomComponent-IxJqc\"},\"id\":\"CustomComponent-IxJqc\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-05T22:08:27.080204\",\"folder\":null,\"id\":\"f3c56abb-96d8-4a09-80d3-f60181661b3c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Amazing Wilson\",\"description\":\"Unfolding Linguistic Possibilities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-05T23:49:58.272677\",\"folder\":null,\"id\":\"324499a6-17a6-49de-96b1-b88955ed2c3d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Nauseous Kowalevski\",\"description\":\"Create, Curate, Communicate with Langflow.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:45:27.084387\",\"folder\":null,\"id\":\"e3168485-d31b-472a-907f-faf833bf7824\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Silly Fermi\",\"description\":\"Craft Meaningful Interactions, Generate Value.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:45:57.134463\",\"folder\":null,\"id\":\"d0ecea5d-bcf9-4b8e-88f0-3c243d309336\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Friendly Ardinghelli\",\"description\":\"Smart Chains, Smarter Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:45:57.138184\",\"folder\":null,\"id\":\"a406912d-b0e2-4954-bef3-ee80c29eca3c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gleeful Easley\",\"description\":\"Bridging Prompts for Brilliance.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:45:57.162908\",\"folder\":null,\"id\":\"57b32155-4c6e-4823-ad03-8dd09d8abc62\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Effervescent Varahamihira\",\"description\":\"Create, Chain, Communicate.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:45:57.135644\",\"folder\":null,\"id\":\"18daa0ff-2e5d-457a-95d7-710affec5c4d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Jubilant Joliot\",\"description\":\"Language Architect at Work!\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:45:57.139496\",\"folder\":null,\"id\":\"9255e938-280e-4ce7-91cd-8622126a7d02\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Adoring Carroll\",\"description\":\"Nurture NLP Nodes Here.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:45:57.162240\",\"folder\":null,\"id\":\"a7a680b9-30b1-4438-ac24-da597de443aa\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Berserk Herschel\",\"description\":\"Your Hub for Text Generation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:46:02.593504\",\"folder\":null,\"id\":\"37a439b0-7b1d-45e3-b4fa-5c73669bae3b\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Distracted Joliot\",\"description\":\"Conversational Cartography Unlocked.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:04.845238\",\"folder\":null,\"id\":\"4d23fd0a-8ad5-46b9-bb99-eed4138e7426\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Happy Babbage\",\"description\":\"Flow into the Future of Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:41.899665\",\"folder\":null,\"id\":\"1c8ad5b9-5524-41fe-a762-52c75126b832\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Adoring Brown\",\"description\":\"Unlock the Power of AI in Your Business Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:42.702031\",\"folder\":null,\"id\":\"9d4c8e79-4904-4a51-a4bb-146c3d8db10e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Focused Mahavira\",\"description\":\"Design, Develop, Dialogize.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:42.786331\",\"folder\":null,\"id\":\"4ba370d1-1f8e-4a23-99aa-99e2cd9b7cbf\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Mad Gates\",\"description\":\"Where Language Meets Logic.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:42.838989\",\"folder\":null,\"id\":\"992c3cd3-1d79-4986-8c04-88a34130fa30\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Serene Mcclintock\",\"description\":\"Unlock the Power of AI in Your Business Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:42.932723\",\"folder\":null,\"id\":\"a65bfd13-44df-4090-aca0-5057e21e9997\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Berserk Feynman\",\"description\":\"Text Generation Meets Business Transformation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:42.931359\",\"folder\":null,\"id\":\"7a05dac5-c005-411d-9994-19d61e71ce78\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sprightly Perlman\",\"description\":\"Interactive Language Weaving.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:43.054687\",\"folder\":null,\"id\":\"6db24541-7211-48e6-a792-1a4a99a0ef90\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Jolly Colden\",\"description\":\"Flow into the Future of Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:43.078384\",\"folder\":null,\"id\":\"13ac42e8-9124-4bf4-9ea2-28671ef2d9a4\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gleeful Kaku\",\"description\":\"The Power of Language at Your Fingertips.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:50:33.156776\",\"folder\":null,\"id\":\"79262d75-5c62-4b14-b067-f4297f5c912f\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Jovial Khayyam\",\"description\":\"Empowering Communication, Enabling Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:51:13.295375\",\"folder\":null,\"id\":\"3b397e74-d8be-4728-9d6c-05f7c78106a7\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Goofy Mccarthy\",\"description\":\"Building Powerful Solutions with Language Models.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:51:27.632685\",\"folder\":null,\"id\":\"13f4e1fd-45eb-4271-92fd-0d70a31c61d2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cocky Lalande\",\"description\":\"Building Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:51:54.628983\",\"folder\":null,\"id\":\"9cfd60d8-9311-47b0-b71b-f488f1940bc7\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Romantic Mirzakhani\",\"description\":\"Innovation in Interaction with Langflow.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:52:52.622698\",\"folder\":null,\"id\":\"0d849403-0f75-455d-b4e4-0d622ee3305a\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Grinning Brown\",\"description\":\"Building Powerful Solutions with Language Models.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:53:06.056636\",\"folder\":null,\"id\":\"8643ba14-52d6-4d36-9981-5fd37de5dd76\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Kickass Watt\",\"description\":\"Transform Your Business with Smart Dialogues.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:53:23.338727\",\"folder\":null,\"id\":\"818d3066-bf08-4bf9-adcd-739f8abbfa5d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Goofy Bose\",\"description\":\"Unravel the Art of Articulation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:53:41.218861\",\"folder\":null,\"id\":\"28eff43e-0ecf-47bf-9851-f1492589978e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Optimistic Jennings\",\"description\":\"Create Powerful Connections, Boost Business Value.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:55:03.681106\",\"folder\":null,\"id\":\"68f59069-bc2a-464f-a983-4b61e32e01af\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Pedantic Mirzakhani\",\"description\":\"Language Chainlink Master.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:55:31.761949\",\"folder\":null,\"id\":\"5d981c0e-81b3-44cc-a5be-8f55b92bfed5\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Peppy Murdock\",\"description\":\"Create Powerful Connections, Boost Business Value.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:56:45.548598\",\"folder\":null,\"id\":\"e812ad47-47e8-422b-b94c-84fd0263c9c8\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Berserk Fermat\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:58:50.234270\",\"folder\":null,\"id\":\"82aaf449-e737-4699-9360-929ab6108dc7\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Tiny Albattani\",\"description\":\"Your Toolkit for Text Generation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:59:53.946035\",\"folder\":null,\"id\":\"097cb080-274b-40ca-8dde-7900a949568a\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cranky Kirch\",\"description\":\"Sculpting Language with Precision.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:00:51.745350\",\"folder\":null,\"id\":\"837d7b5f-8495-46a9-b00e-ad1b7ebb52f4\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Effervescent Kowalevski\",\"description\":\"Empowering Language Engineering.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:02:53.336102\",\"folder\":null,\"id\":\"3ff079c2-d9f9-4da6-a22a-423fa35670ff\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Radiant Stallman\",\"description\":\"Navigate the Linguistic Landscape, Discover Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:03:28.268357\",\"folder\":null,\"id\":\"c8b204dd-3d57-4bc8-aa13-1d559672e75b\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Grinning Swirles\",\"description\":\"Unleashing Linguistic Creativity.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:03:51.194455\",\"folder\":null,\"id\":\"a097f083-5880-4cf7-986b-51898bc68e11\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Dreamy Williams\",\"description\":\"Interactive Language Weaving.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:04:36.678251\",\"folder\":null,\"id\":\"d9585f63-ce76-42ce-87bc-8e69601ea5c6\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Zany Hawking\",\"description\":\"Flow into the Future of Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:05:13.672479\",\"folder\":null,\"id\":\"612a01d5-8c8d-4cc1-8c54-35626b7f4a6d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Amazing Kilby\",\"description\":\"Your Toolkit for Text Generation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:10:37.047955\",\"folder\":null,\"id\":\"2d05a598-3cdf-452a-bd5d-b0e569e562e3\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Insane Cori\",\"description\":\"Empowering Communication, Enabling Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:18:12.426578\",\"folder\":null,\"id\":\"d1769a4a-c1e9-4d74-9273-1e76cfcf21f3\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Compassionate Tesla\",\"description\":\"Graph Your Way to Great Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:18:52.806238\",\"folder\":null,\"id\":\"28c5d9dd-0466-4c80-9e58-b1e061cd358d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Jubilant Goldstine\",\"description\":\"Harness the Power of Conversational AI.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:21:44.488510\",\"folder\":null,\"id\":\"b3c57e4f-28a1-4580-bf08-a9484bdd66e8\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Elegant Curie\",\"description\":\"Building Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:23:47.610237\",\"folder\":null,\"id\":\"28fb024e-6ba1-4f5b-83b3-4742b3b8117c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Twinkly Chandrasekhar\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:24:29.824530\",\"folder\":null,\"id\":\"d2b87cf7-9167-4030-8e9f-b8d9aa0cadee\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Pensive Nobel\",\"description\":\"Crafting Dialogues that Drive Business Success.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:26:51.210699\",\"folder\":null,\"id\":\"c2c9fbac-7d97-40c2-8055-dff608df9414\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Elated Edison\",\"description\":\"Advanced NLP for Groundbreaking Business Solutions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:27:35.822482\",\"folder\":null,\"id\":\"a55561cd-4b25-473f-bde5-884cbabb0d24\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Dazzling Lichterman\",\"description\":\"Building Linguistic Labyrinths.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:29:09.259381\",\"folder\":null,\"id\":\"9c6fe6d4-8311-4fc6-8b02-2a816d7c059d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Distracted Bhaskara\",\"description\":\"Navigate the Networks of Conversation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:31:36.053452\",\"folder\":null,\"id\":\"ef6fc1ab-aff8-45a1-8cd5-bc8e38565e4d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Evil Watt\",\"description\":\"Building Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:32:26.765250\",\"folder\":null,\"id\":\"499b5351-9c09-4934-9f9d-a24be2fd8b24\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Jolly Wien\",\"description\":\"Bridging Prompts for Brilliance.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:33:23.648859\",\"folder\":null,\"id\":\"a57eda91-7f6e-410d-9990-385fe0c724f3\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Nostalgic Spence\",\"description\":\"Mapping Meaningful Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:34:22.576407\",\"folder\":null,\"id\":\"685f685e-8a1b-4b7e-9e21-6cdd72163c91\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Comical Fermat\",\"description\":\"Create, Connect, Converse.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:35:44.920540\",\"folder\":null,\"id\":\"3e061766-b834-4fa4-ba9c-b060925d9703\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Grave Volta\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:36:33.001572\",\"folder\":null,\"id\":\"135f2fd9-e005-40bc-a9bf-c25107388415\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gleeful Davinci\",\"description\":\"Create Powerful Connections, Boost Business Value.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:37:16.208823\",\"folder\":null,\"id\":\"167cdb24-7e1c-475b-893a-cca2f125426c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Hilarious Sinoussi\",\"description\":\"Language Chainlink Master.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:38:07.215401\",\"folder\":null,\"id\":\"48113cab-2c04-493f-8c2e-c8d067826aa2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Grave Sagan\",\"description\":\"Connect the Dots, Craft Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:39:19.479656\",\"folder\":null,\"id\":\"28d292dc-e094-4ffe-a657-178892933267\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cranky Hoover\",\"description\":\"Crafting Dialogues that Drive Business Success.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:40:02.895859\",\"folder\":null,\"id\":\"0c9849b7-b2d6-4d0e-8334-abfb3ae183dd\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Evil Mendeleev\",\"description\":\"Unfolding Linguistic Possibilities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:40:27.867247\",\"folder\":null,\"id\":\"d78c52e9-1941-4555-9bb9-abd01f176705\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Effervescent Dubinsky\",\"description\":\"Where Language Meets Logic.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:41:23.177402\",\"folder\":null,\"id\":\"5277a04c-b5da-4597-aaa2-a6b66ea11d02\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cocky Poitras\",\"description\":\"Where Language Meets Logic.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:42:08.731865\",\"folder\":null,\"id\":\"b0d0c8de-4eea-484a-a068-b13e63f7e71c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Pedantic Ptolemy\",\"description\":\"Crafting Conversations, One Node at a Time.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:42:25.658996\",\"folder\":null,\"id\":\"b6f155e2-03eb-4232-9bab-145463382fe9\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Loving Cray\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:43:57.530112\",\"folder\":null,\"id\":\"b75c10ca-9ecb-432b-88ab-e1847e836e22\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Effervescent Pasteur\",\"description\":\"Language Models, Mapped and Mastered.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:44:58.979393\",\"folder\":null,\"id\":\"3710eccb-e7a7-41d5-9339-d9c301515d17\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Pensive Gates\",\"description\":\"The Power of Language at Your Fingertips.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:45:42.744174\",\"folder\":null,\"id\":\"fdd2271e-92f6-4349-8c01-2ec0e9e73f13\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Determined Khorana\",\"description\":\"Beyond Text Generation - Unleashing Business Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:46:10.084684\",\"folder\":null,\"id\":\"88b49a97-0888-4fea-8d9b-6ac2cc6d158e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lonely Booth\",\"description\":\"Design Dialogues with Langflow.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:46:41.577750\",\"folder\":null,\"id\":\"629afe54-8796-45be-a570-e3ac79c60792\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Jubilant Mendeleev\",\"description\":\"Chain the Words, Master Language!\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:47:22.631243\",\"folder\":null,\"id\":\"7bf481b0-73fe-4f5b-a3d4-1263d9d8e827\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Clever Varahamihira\",\"description\":\"Building Powerful Solutions with Language Models.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:49:51.026960\",\"folder\":null,\"id\":\"df9e86b6-56c9-4848-9010-102615314766\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sleepy Stallman\",\"description\":\"Empowering Language Engineering.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:50:14.932236\",\"folder\":null,\"id\":\"3e66994c-9b7a-4b85-a917-65d1959d7352\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Modest Wozniak\",\"description\":\"Advanced NLP for Groundbreaking Business Solutions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:51:13.811894\",\"folder\":null,\"id\":\"d10f924a-5780-4255-9f41-3e102ae03e84\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Hopeful Mirzakhani\",\"description\":\"Graph Your Way to Great Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:52:23.906908\",\"folder\":null,\"id\":\"f3378fa8-ccaf-4a3b-90d6-b8ab0c4e481f\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Awesome Joule\",\"description\":\"Design, Develop, Dialogize.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:52:43.863440\",\"folder\":null,\"id\":\"deaa50e7-a8b1-46b1-856c-334ee781e1c2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Peppy Shockley\",\"description\":\"Generate, Innovate, Communicate.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:53:43.299699\",\"folder\":null,\"id\":\"c72eac2c-d924-40c6-a102-da524216d090\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Zany Dewey\",\"description\":\"Flow into the Future of Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:54:18.848827\",\"folder\":null,\"id\":\"d9425324-bb60-462e-b431-90a536f2bc76\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gloomy Joliot\",\"description\":\"Language Engineering Excellence.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:58:12.348608\",\"folder\":null,\"id\":\"621ba134-3fac-487c-98cd-96941439f1be\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Backstabbing Franklin\",\"description\":\"Craft Language Connections Here.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:58:13.491824\",\"folder\":null,\"id\":\"86ca9773-c7b7-4a1a-859a-6cbe0ddff206\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sharp Swartz\",\"description\":\"Beyond Text Generation - Unleashing Business Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:58:13.524414\",\"folder\":null,\"id\":\"da1c02b7-d608-4498-9946-7d02f55fa103\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Serene Volta\",\"description\":\"Connect the Dots, Craft Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:58:13.641432\",\"folder\":null,\"id\":\"8d5dd998-6b51-4f65-8331-086a7f3b11d7\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Focused Lichterman\",\"description\":\"Crafting Dialogues that Drive Business Success.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:58:13.746120\",\"folder\":null,\"id\":\"942027d3-e2ea-48c6-8279-0a41b54e8862\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lively Einstein\",\"description\":\"Unleashing Linguistic Creativity.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:58:13.746904\",\"folder\":null,\"id\":\"9e9b6298-1073-4297-8ecc-3c620b432e70\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cocky Planck\",\"description\":\"Empowering Language Engineering.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:58:13.747420\",\"folder\":null,\"id\":\"7cd60c83-b797-4e60-af6d-cbc540657943\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Suspicious Zobell\",\"description\":\"Innovation in Interaction, Revolution in Revenue.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:58:13.749951\",\"folder\":null,\"id\":\"dab08306-9521-4e15-aa11-e6a6a4e210f8\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Small Knuth\",\"description\":\"Nurture NLP Nodes Here.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:16.772119\",\"folder\":null,\"id\":\"c9149590-636a-44f5-aaae-45a4e78fe4df\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Evil Wright\",\"description\":\"Unfolding Linguistic Possibilities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:52.954568\",\"folder\":null,\"id\":\"6b23b2ad-c07c-46f6-b9ad-268783d1712e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Vibrant Lalande\",\"description\":\"Language Models, Mapped and Mastered.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:53.656156\",\"folder\":null,\"id\":\"ece3bcf6-a147-4559-862e-cacff9db5f48\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Happy Gauss\",\"description\":\"The Pinnacle of Prompt Generation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:53.717991\",\"folder\":null,\"id\":\"252b6021-ecad-4eaf-9e2f-106c4c89c496\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gigantic Rosalind\",\"description\":\"Building Powerful Solutions with Language Models.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:53.736261\",\"folder\":null,\"id\":\"b8cb6d8d-c0fb-4e8d-a46e-2c608dc8a714\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Adoring Hubble\",\"description\":\"Powerful Prompts, Perfectly Positioned.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:53.769546\",\"folder\":null,\"id\":\"553a67db-7225-474c-978e-8a40cde2bfb2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Pensive Mclean\",\"description\":\"Unlock the Power of AI in Your Business Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:53.981063\",\"folder\":null,\"id\":\"e0865007-4d80-4edf-87ab-9e8d2892d719\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Trusting Murdock\",\"description\":\"Uncover Business Opportunities with NLP.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:53.982286\",\"folder\":null,\"id\":\"1021cd20-66e0-4b81-9c79-bfe729774d20\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Perky Riemann\",\"description\":\"Powerful Prompts, Perfectly Positioned.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:53.983216\",\"folder\":null,\"id\":\"089074d3-8a1e-4d85-a59d-b4717090e4d3\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Small Tesla\",\"description\":\"Language Models, Unleashed.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:00:35.704142\",\"folder\":null,\"id\":\"beb49d88-255e-4db4-931b-4ab4358f1097\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Effervescent Boyd\",\"description\":\"Smart Chains, Smarter Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:01:13.569507\",\"folder\":null,\"id\":\"75b5ab8d-e0c0-43cf-912b-8578550e198a\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Small Babbage\",\"description\":\"Interactive Language Weaving.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:01:27.944868\",\"folder\":null,\"id\":\"503edd55-8f70-43e5-87fb-2324eaf62336\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lonely Bose\",\"description\":\"Crafting Dialogues that Drive Business Success.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:02:40.122079\",\"folder\":null,\"id\":\"ae4f2992-1a23-4a43-bec6-68b823935762\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Mirthful Coulomb\",\"description\":\"Craft Meaningful Interactions, Generate Value.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:03:15.263237\",\"folder\":null,\"id\":\"a2a464db-b02a-4440-ad9e-7b552ee6c027\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Drunk Newton\",\"description\":\"Craft Meaningful Interactions, Generate Value.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:03:15.883766\",\"folder\":null,\"id\":\"1a5d9af7-5a96-4035-a09c-e15741785828\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Jovial Pasteur\",\"description\":\"Your Hub for Text Generation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:03:15.933083\",\"folder\":null,\"id\":\"04b94873-0828-41dc-a850-fd4132c9b9f1\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Playful Spence\",\"description\":\"Connect the Dots, Craft Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:03:15.967685\",\"folder\":null,\"id\":\"47003dc2-7884-48a3-aa66-e4185079f4d9\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cheerful Noyce\",\"description\":\"Your Passport to Linguistic Landscapes.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:03:15.983198\",\"folder\":null,\"id\":\"13769cb4-2e15-4d54-a28a-c97dc15db58c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Awesome Edison\",\"description\":\"Unfolding Linguistic Possibilities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:03:16.018879\",\"folder\":null,\"id\":\"453dacde-6b10-406b-a5b3-f90f44be6899\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Upbeat Snyder\",\"description\":\"Powerful Prompts, Perfectly Positioned.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:03:16.205689\",\"folder\":null,\"id\":\"9544fac9-3002-47aa-86b9-102844fe9649\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Tender Khorana\",\"description\":\"Chain the Words, Master Language!\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:03:16.243434\",\"folder\":null,\"id\":\"90498ef6-34f9-45c8-8cd0-fe6a36a26f41\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Elated Albattani\",\"description\":\"Interactive Language Weaving.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:05:07.775497\",\"folder\":null,\"id\":\"9577c416-8ce8-48f6-ad6d-ab2e003bb415\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Charming Goodall\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:07:52.139318\",\"folder\":null,\"id\":\"f10dc08e-b9c7-44b3-8837-b95aee2f6dbb\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Hilarious Ramanujan\",\"description\":\"Harness the Power of Conversational AI.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:08:22.448480\",\"folder\":null,\"id\":\"c864bd8c-67cd-465f-bf7d-7a35c7df37f3\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Tender Mclean\",\"description\":\"Unleashing Linguistic Creativity.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:09:56.507826\",\"folder\":null,\"id\":\"f0c13b19-ae23-40e6-88d6-d135897ee100\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Grave Hawking\",\"description\":\"Building Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:10:27.169757\",\"folder\":null,\"id\":\"0afb91b4-8f41-4270-900a-f5de647d45ad\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gloomy Lovelace\",\"description\":\"Your Passport to Linguistic Landscapes.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:11:02.292233\",\"folder\":null,\"id\":\"0f1e5dcf-8769-4157-b495-5f215b490107\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Fervent Kilby\",\"description\":\"Empowering Enterprises with Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:11:46.960966\",\"folder\":null,\"id\":\"310d03d9-dd50-4946-9a27-38ee06906212\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Admiring Almeida\",\"description\":\"Language Models, Mapped and Mastered.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:12:24.475101\",\"folder\":null,\"id\":\"3cbc8fc2-a86f-4177-9a1c-a833b2a24283\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Elated Roentgen\",\"description\":\"Empowering Enterprises with Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:06.753571\",\"folder\":null,\"id\":\"c508e922-29e9-4234-84ae-505c5bdf41c1\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Perky Poitras\",\"description\":\"Chain the Words, Master Language!\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:07.754605\",\"folder\":null,\"id\":\"1431df05-1b6f-41af-a063-a18d26a946ef\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Tender Khayyam\",\"description\":\"Navigate the Linguistic Landscape, Discover Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:07.791627\",\"folder\":null,\"id\":\"344e03fb-fd49-4e87-be67-7dce04ba655b\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Zealous Mayer\",\"description\":\"Navigate the Linguistic Landscape, Discover Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:07.803889\",\"folder\":null,\"id\":\"8b3ff1cb-3a6c-46ee-b09a-0e9f9f13a8b9\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Tiny Ramanujan\",\"description\":\"Empowering Communication, Enabling Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:07.822583\",\"folder\":null,\"id\":\"18961e76-f4b1-4968-926a-fed22cb04f69\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cheerful Franklin\",\"description\":\"Building Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:07.854440\",\"folder\":null,\"id\":\"0e0ee854-ab46-4333-a848-2e1239a24334\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Serene Swirles\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:07.988932\",\"folder\":null,\"id\":\"cc7b8238-3d15-4f78-bd0c-8311691c9ff8\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sleepy Swartz\",\"description\":\"Uncover Business Opportunities with NLP.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:08.028688\",\"folder\":null,\"id\":\"123369f9-c83c-4ed3-93b6-78ca29c271cf\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cranky Kowalevski\",\"description\":\"Unleashing Linguistic Creativity.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:59.097607\",\"folder\":null,\"id\":\"ed4b1490-e9e5-46bf-b337-166b48eaadd6\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sprightly Golick\",\"description\":\"Building Powerful Solutions with Language Models.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:59.617772\",\"folder\":null,\"id\":\"9d1be311-c618-4e3e-aeb1-4161ab37850e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Boring Newton\",\"description\":\"Generate, Innovate, Communicate.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:59.646124\",\"folder\":null,\"id\":\"63a75f99-1745-40d3-9e27-3d19a143be45\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sprightly Noyce\",\"description\":\"Beyond Text Generation - Unleashing Business Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:59.685781\",\"folder\":null,\"id\":\"b418ca87-eb17-42e8-b789-3fcb0cab3ddb\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Fluffy Fermat\",\"description\":\"Text Generation Meets Business Transformation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:59.705984\",\"folder\":null,\"id\":\"93802b07-eee9-4a2b-8691-7d9a231bd67e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Stoic Payne\",\"description\":\"Beyond Text Generation - Unleashing Business Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:59.723990\",\"folder\":null,\"id\":\"d62df661-0ae5-4b41-a9fb-71cb2e46ad52\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Effervescent Darwin\",\"description\":\"Unleashing Linguistic Creativity.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:59.818343\",\"folder\":null,\"id\":\"d1f62248-415c-474a-bfa6-3509a528a33b\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Focused Thompson\",\"description\":\"Transform Your Business with Smart Dialogues.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:59.925999\",\"folder\":null,\"id\":\"d2267176-f020-4c52-90a4-7f944d7c1749\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Admiring Dewey\",\"description\":\"Navigate the Networks of Conversation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:15:07.400402\",\"folder\":null,\"id\":\"8cf1ac8d-d34d-4e8a-a9da-be44672e1dfb\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Prickly Zuse\",\"description\":\"Where Language Meets Logic.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:15:08.384611\",\"folder\":null,\"id\":\"bae3cb5b-0f1b-4e95-bf58-7eab38da3d73\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Hungry Zuse\",\"description\":\"The Pinnacle of Prompt Generation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:15:08.436591\",\"folder\":null,\"id\":\"4dfafe3e-e9ef-405d-be72-550084411d69\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lonely Khayyam\",\"description\":\"Design Dialogues with Langflow.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:15:08.435958\",\"folder\":null,\"id\":\"e0f81215-dc55-4b5a-b8cf-6e2fcbf297a7\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Big Mendel\",\"description\":\"Innovation in Interaction with Langflow.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:15:08.470080\",\"folder\":null,\"id\":\"5022a71c-da47-4975-a4d0-6d2d9e760d3d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Inquisitive Poitras\",\"description\":\"Navigate the Networks of Conversation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:15:08.484430\",\"folder\":null,\"id\":\"4f1ff9e3-3500-404c-80af-2010bc46cdcb\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Joyous Jones\",\"description\":\"The Power of Language at Your Fingertips.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:15:08.661306\",\"folder\":null,\"id\":\"77af3e47-c2cc-42f6-99e1-78589439a447\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Exuberant Khayyam\",\"description\":\"Empowering Communication, Enabling Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:15:08.662877\",\"folder\":null,\"id\":\"6f3e2e56-b329-47e3-86cc-024c29203016\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Dazzling Visvesvaraya\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:16:10.092917\",\"folder\":null,\"id\":\"449ac0ee-ee29-4a9f-9aff-fd6a86624457\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Nostalgic Tesla\",\"description\":\"Nurture NLP Nodes Here.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:16:10.630382\",\"folder\":null,\"id\":\"a2136ed3-dc75-4a8f-ab34-6887ff955b23\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Goofy Noether\",\"description\":\"Language Models, Unleashed.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:16:10.652058\",\"folder\":null,\"id\":\"fd1080f8-db07-481a-b2ba-60f67fcb20a6\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Dazzling Pasteur\",\"description\":\"Language Models, Unleashed.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:16:10.688661\",\"folder\":null,\"id\":\"d534d5e1-92aa-4fb2-a795-7071c4feba47\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Comical Sinoussi\",\"description\":\"Bridging Prompts for Brilliance.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:16:10.741385\",\"folder\":null,\"id\":\"85323170-c066-4d8f-acb0-1b142241389e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Small Ramanujan\",\"description\":\"Uncover Business Opportunities with NLP.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:16:10.790086\",\"folder\":null,\"id\":\"b0d18432-21ab-404b-acb6-57ef97353fad\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sick Joliot\",\"description\":\"Text Generation Meets Business Transformation.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":442,\"id\":\"OpenAIEmbeddings-rVj1B\",\"type\":\"genericNode\",\"position\":{\"x\":-100.23754663035719,\"y\":-718.7575880388187},\"data\":{\"type\":\"OpenAIEmbeddings\",\"node\":{\"template\":{\"allowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[],\"password\":false,\"name\":\"allowed_special\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"chunk_size\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":1000,\"password\":false,\"name\":\"chunk_size\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"deployment\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"text-embedding-ada-002\",\"password\":false,\"name\":\"deployment\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"disallowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"all\",\"password\":false,\"name\":\"disallowed_special\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"embedding_ctx_length\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":8191,\"password\":false,\"name\":\"embedding_ctx_length\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"{\\\"Authorization\\\": \\\"Bearer \\\"}\",\"password\":false,\"name\":\"headers\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"model\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"text-embedding-ada-002\",\"password\":false,\"name\":\"model\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_api_type\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_type\",\"display_name\":\"OpenAI API Type\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_api_version\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_version\",\"display_name\":\"OpenAI API Version\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"show_progress_bar\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"show_progress_bar\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"skip_empty\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"skip_empty\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tiktoken_enabled\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":true,\"password\":true,\"name\":\"tiktoken_enabled\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"_type\":\"OpenAIEmbeddings\"},\"description\":\"OpenAI embedding models.\",\"base_classes\":[\"OpenAIEmbeddings\",\"Embeddings\"],\"display_name\":\"OpenAIEmbeddings\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"OpenAIEmbeddings-rVj1B\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":-100.23754663035719,\"y\":-718.7575880388187}}],\"edges\":[],\"viewport\":{\"x\":267.7156633365312,\"y\":716.9644817529361,\"zoom\":0.7169776240079139}},\"is_component\":false,\"updated_at\":\"2023-12-08T18:52:26.999440\",\"folder\":null,\"id\":\"be39958a-ef42-4fa8-8e54-b611e56b5c97\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Graceful Lumiere\",\"description\":\"Conversational Cartography Unlocked.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:16:11.012069\",\"folder\":null,\"id\":\"f7dcecfd-533c-4f40-9dcb-f213962ed1a2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"aaaaa\",\"description\":\"Text Generation Meets Business Transformation.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":442,\"id\":\"OpenAIEmbeddings-P6Z0D\",\"type\":\"genericNode\",\"position\":{\"x\":-100.23754663035719,\"y\":-718.7575880388187},\"data\":{\"type\":\"OpenAIEmbeddings\",\"node\":{\"template\":{\"allowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[],\"password\":false,\"name\":\"allowed_special\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"chunk_size\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":1000,\"password\":false,\"name\":\"chunk_size\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"deployment\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"text-embedding-ada-002\",\"password\":false,\"name\":\"deployment\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"disallowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"all\",\"password\":false,\"name\":\"disallowed_special\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"embedding_ctx_length\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":8191,\"password\":false,\"name\":\"embedding_ctx_length\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"{\\\"Authorization\\\": \\\"Bearer \\\"}\",\"password\":false,\"name\":\"headers\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"model\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"text-embedding-ada-002\",\"password\":false,\"name\":\"model\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_api_type\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_type\",\"display_name\":\"OpenAI API Type\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"openai_api_version\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_version\",\"display_name\":\"OpenAI API Version\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"show_progress_bar\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"show_progress_bar\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"skip_empty\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"skip_empty\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tiktoken_enabled\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":true,\"password\":true,\"name\":\"tiktoken_enabled\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"_type\":\"OpenAIEmbeddings\"},\"description\":\"OpenAI embedding models.\",\"base_classes\":[\"OpenAIEmbeddings\",\"Embeddings\"],\"display_name\":\"OpenAIEmbeddings\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"OpenAIEmbeddings-P6Z0D\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":-100.23754663035719,\"y\":-718.7575880388187}}],\"edges\":[],\"viewport\":{\"x\":266.7156633365312,\"y\":657.9644817529361,\"zoom\":0.7169776240079139}},\"is_component\":false,\"updated_at\":\"2023-12-08T19:05:14.503144\",\"folder\":null,\"id\":\"c2411a20-57c6-44cc-a0d0-2c857453633d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lively Aryabhata\",\"description\":\"Design, Develop, Dialogize.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":459,\"id\":\"CustomComponent-Qhbd7\",\"type\":\"genericNode\",\"position\":{\"x\":-224.36198532285903,\"y\":-39.03047722134913},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nfrom openai import OpenAI\\n\\n\\nclass Component(CustomComponent):\\n display_name: str = \\\"OpenAI STT english translator\\\"\\n description: str = \\\"Transcript and translate any audio to english\\\"\\n documentation: str = \\\"http://docs.langflow.org/components/custom\\\"\\n\\n def build_config(self):\\n return {\\\"audio_path\\\":{\\\"display_name\\\":\\\"Audio path\\\",\\\"input_types\\\":[\\\"str\\\"]},\\\"openAI_key\\\":{\\\"display_name\\\":\\\"OpenAI key\\\",\\\"password\\\":True}}\\n\\n def build(self,audio_path:str,openAI_key:str) -> str:\\n client = OpenAI(api_key=openAI_key)\\n audio_file= open(audio_path, \\\"rb\\\")\\n transcript = client.audio.translations.create(\\n model=\\\"whisper-1\\\", \\n file=audio_file\\n )\\n self.status = transcript.text\\n return transcript.text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"audio_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"audio_path\",\"display_name\":\"Audio path\",\"advanced\":false,\"input_types\":[\"str\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"aaaaa\"},\"openAI_key\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openAI_key\",\"display_name\":\"OpenAI key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"}},\"description\":\"Transcript and translate any audio to english\",\"base_classes\":[\"str\"],\"display_name\":\"OpenAI STT english tra\",\"custom_fields\":{\"audio_path\":null,\"openAI_key\":null},\"output_types\":[\"str\"],\"documentation\":\"http://docs.langflow.org/components/custom\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"CustomComponent-Qhbd7\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":-224.36198532285903,\"y\":-39.03047722134913}}],\"edges\":[],\"viewport\":{\"x\":433.8372868055629,\"y\":250.9611989970935,\"zoom\":0.8467453123625275}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:16:56.971879\",\"folder\":null,\"id\":\"122eee5d-9734-4e51-9da5-b39bead64a8d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Goofy Wing\",\"description\":\"Your Toolkit for Text Generation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:18:23.227017\",\"folder\":null,\"id\":\"171d0063-6446-4c6a-8f5b-786a38951d44\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Mad Boyd\",\"description\":\"Empowering Language Engineering.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:18:24.063781\",\"folder\":null,\"id\":\"3a7af50c-6555-4004-a86e-1ea37e477900\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Boring Dewey\",\"description\":\"Unleashing Linguistic Creativity.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:18:24.065404\",\"folder\":null,\"id\":\"dc4b4235-a550-41e2-9ddb-bcb352a1bc03\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Nauseous Carroll\",\"description\":\"Navigate the Networks of Conversation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:18:24.087501\",\"folder\":null,\"id\":\"9550e2bf-db7a-41f5-84e5-177a181bbeda\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Silly Engelbart\",\"description\":\"Generate, Innovate, Communicate.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:18:24.112543\",\"folder\":null,\"id\":\"6a3a24bb-01cb-4d8e-8d17-0dc92d257322\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sassy Khayyam\",\"description\":\"Innovation in Interaction, Revolution in Revenue.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:18:24.147631\",\"folder\":null,\"id\":\"8d372f5e-ca12-4ea8-a1a1-8846afa72692\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Mirthful Bell\",\"description\":\"Connect the Dots, Craft Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:18:24.212921\",\"folder\":null,\"id\":\"800f8785-0f41-4db3-aef8-9e3de5250526\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sleepy Bassi\",\"description\":\"Unleashing Business Potential through Language Engineering.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:18:24.395729\",\"folder\":null,\"id\":\"4589607a-065b-4a8f-ba52-5045d7b04086\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lonely Volhard\",\"description\":\"Where Language Meets Logic.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:20:33.263971\",\"folder\":null,\"id\":\"b2440ed8-44fa-4684-adf7-b5e84bff6577\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Ecstatic Poincare\",\"description\":\"Your Passport to Linguistic Landscapes.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:20:33.377270\",\"folder\":null,\"id\":\"b996f514-e0b8-432f-969b-7276630a8f4b\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Grave Zuse\",\"description\":\"Text Generation Meets Business Transformation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:20:33.406385\",\"folder\":null,\"id\":\"6e2e9c12-0afc-499e-acdd-adf4b5f7d4fc\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Big Hopper\",\"description\":\"Conversation Catalyst Engine.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:20:33.413014\",\"folder\":null,\"id\":\"e020f1a5-aa12-45e7-ba50-6eb64a735e60\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gleeful Jang\",\"description\":\"Conversation Catalyst Engine.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:20:33.433045\",\"folder\":null,\"id\":\"ee58f892-b7b2-408e-b4b9-9d862fc315aa\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Twinkly Ohm\",\"description\":\"Promptly Ingenious!\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:20:33.403404\",\"folder\":null,\"id\":\"023a1fc3-8807-4167-b6b2-f4e5daf036f1\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Distracted Degrasse\",\"description\":\"Bridging Prompts for Brilliance.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:20:33.411655\",\"folder\":null,\"id\":\"085f106f-c1e9-4a0f-ba31-d2fafe685d9c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Exuberant Volta\",\"description\":\"Catalyzing Business Growth through Conversational AI.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:20:33.408697\",\"folder\":null,\"id\":\"14481bb5-1353-452f-9359-d38c9419d79c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Goofy Bose\",\"description\":\"Conversational Cartography Unlocked.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:22:21.774940\",\"folder\":null,\"id\":\"e9316292-4ee1-441b-8327-0b09a7831fe9\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Thirsty Easley\",\"description\":\"Language Models, Mapped and Mastered.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:22:22.416556\",\"folder\":null,\"id\":\"668806ba-3efa-44de-aeb7-4ac082ba9172\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Joyous Mestorf\",\"description\":\"Generate, Innovate, Communicate.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:22:22.484048\",\"folder\":null,\"id\":\"3fc0a371-aada-4450-9d17-33d3cc05c870\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Playful Franklin\",\"description\":\"Empowering Language Engineering.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:22:22.509095\",\"folder\":null,\"id\":\"af967c98-5f08-4ee2-b1ce-6c16b4f9ebe2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Goofy Bhaskara\",\"description\":\"Empowering Enterprises with Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:22:22.508465\",\"folder\":null,\"id\":\"758c4164-b521-45d0-a15f-d49480e312eb\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Funky Edison\",\"description\":\"Unravel the Art of Articulation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:22:22.602296\",\"folder\":null,\"id\":\"f9d3d30f-8859-433f-bafc-ccf1a7196e35\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Silly Ride\",\"description\":\"Unfolding Linguistic Possibilities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:22:22.604061\",\"folder\":null,\"id\":\"0142bca5-eb61-42ed-9917-70c4c0f54eb0\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Goofy Noyce\",\"description\":\"Text Generation Meets Business Transformation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:22:22.603113\",\"folder\":null,\"id\":\"0b63d036-4669-4ceb-8ea4-34035340df77\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cocky Bhabha\",\"description\":\"Language Engineering Excellence.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:23:07.345767\",\"folder\":null,\"id\":\"8b9a66d4-a924-4b84-a2b5-5dd0645ac07a\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Thirsty Zobell\",\"description\":\"Unleashing Business Potential through Language Engineering.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:23:07.722319\",\"folder\":null,\"id\":\"c912fd6b-b32d-409f-a0e5-c6249b066429\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Fervent Shaw\",\"description\":\"Language Architect at Work!\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:23:07.750779\",\"folder\":null,\"id\":\"9d755cd4-c652-43e0-a68d-75a5475ce7a3\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Giggly Newton\",\"description\":\"Navigate the Linguistic Landscape, Discover Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:23:07.786602\",\"folder\":null,\"id\":\"0d3af7de-1ada-4c43-a69f-1bfad370ccfc\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Modest Yalow\",\"description\":\"Text Generation Meets Business Transformation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:23:07.792245\",\"folder\":null,\"id\":\"b6444376-4162-436b-8b40-f5a6afc850db\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sad Bhabha\",\"description\":\"Empowering Enterprises with Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:23:07.890349\",\"folder\":null,\"id\":\"d90af439-fb34-4d27-98f2-06f7f9a9ed8c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Spirited Hoover\",\"description\":\"The Pinnacle of Prompt Generation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:23:07.905750\",\"folder\":null,\"id\":\"31597ce2-de3c-490b-9ead-3f702f63cfd9\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Trusting Davinci\",\"description\":\"Design, Develop, Dialogize.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:23:08.001400\",\"folder\":null,\"id\":\"b43c63e9-a257-4a53-8acc-049e13706ac2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"23\",\"description\":\"23\",\"data\":{\"nodes\":[{\"width\":384,\"height\":467,\"id\":\"PromptTemplate-K7xiS\",\"type\":\"genericNode\",\"position\":{\"x\":-658.2250903773149,\"y\":809.352046606987},\"data\":{\"type\":\"PromptTemplate\",\"node\":{\"template\":{\"output_parser\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false},\"input_types\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"input_variables\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"dasdas\",\"dasdasd\"]},\"partial_variables\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"template\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"prompt\",\"list\":false,\"value\":\"{dasdas}\\n{dasdasd}\\n\"},\"template_format\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"f-string\",\"password\":false,\"name\":\"template_format\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":false},\"validate_template\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"PromptTemplate\",\"dasdas\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"dasdas\",\"display_name\":\"dasdas\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"dasdasd\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"dasdasd\",\"display_name\":\"dasdasd\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"A prompt template for a language model.\",\"base_classes\":[\"PromptTemplate\",\"BasePromptTemplate\",\"StringPromptTemplate\"],\"name\":\"\",\"display_name\":\"PromptTemplate\",\"documentation\":\"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\"custom_fields\":{\"\":[\"dasdas\",\"dasdasd\"]},\"output_types\":[],\"full_path\":null,\"field_formatters\":{},\"beta\":false,\"error\":null},\"id\":\"PromptTemplate-K7xiS\"},\"selected\":false,\"positionAbsolute\":{\"x\":-658.2250903773149,\"y\":809.352046606987},\"dragging\":false},{\"width\":384,\"height\":366,\"id\":\"AirbyteJSONLoader-DXfcM\",\"type\":\"genericNode\",\"position\":{\"x\":-1110.8267574563533,\"y\":569.1107380883907},\"data\":{\"type\":\"AirbyteJSONLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"suffixes\":[\".json\"],\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\"json\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"\":\"\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"AirbyteJSONLoader\"},\"description\":\"Load local `Airbyte` json files.\",\"base_classes\":[\"Document\"],\"display_name\":\"AirbyteJSONLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/airbyte_json\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"AirbyteJSONLoader-DXfcM\"},\"selected\":false,\"positionAbsolute\":{\"x\":-1110.8267574563533,\"y\":569.1107380883907},\"dragging\":false},{\"width\":384,\"height\":376,\"id\":\"PromptRunner-ckWMH\",\"type\":\"genericNode\",\"position\":{\"x\":-1149.4746387825978,\"y\":992.3970573758324},\"data\":{\"type\":\"PromptRunner\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\n\\nfrom langchain.llms.base import BaseLLM\\nfrom langchain.prompts import PromptTemplate\\nfrom langchain.schema import Document\\n\\n\\nclass PromptRunner(CustomComponent):\\n display_name: str = \\\"Prompt Runner\\\"\\n description: str = \\\"Run a Chain with the given PromptTemplate\\\"\\n beta: bool = True\\n field_config = {\\n \\\"llm\\\": {\\\"display_name\\\": \\\"LLM\\\"},\\n \\\"prompt\\\": {\\n \\\"display_name\\\": \\\"Prompt Template\\\",\\n \\\"info\\\": \\\"Make sure the prompt has all variables filled.\\\",\\n },\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(self, llm: BaseLLM, prompt: PromptTemplate, inputs: dict = {}) -> Document:\\n chain = prompt | llm\\n # The input is an empty dict because the prompt is already filled\\n result = chain.invoke(input=inputs)\\n if hasattr(result, \\\"content\\\"):\\n result = result.content\\n self.repr_value = result\\n return Document(page_content=str(result))\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"inputs\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"\":\"\"}],\"password\":false,\"name\":\"inputs\",\"display_name\":\"inputs\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLLM\",\"list\":false},\"prompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"prompt\",\"display_name\":\"Prompt Template\",\"advanced\":false,\"dynamic\":false,\"info\":\"Make sure the prompt has all variables filled.\",\"type\":\"PromptTemplate\",\"list\":false}},\"description\":\"Run a Chain with the given PromptTemplate\",\"base_classes\":[\"Document\"],\"display_name\":\"Prompt Runner\",\"custom_fields\":{\"inputs\":null,\"llm\":null,\"prompt\":null},\"output_types\":[\"PromptRunner\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"PromptRunner-ckWMH\"},\"selected\":false,\"positionAbsolute\":{\"x\":-1149.4746387825978,\"y\":992.3970573758324},\"dragging\":false}],\"edges\":[{\"source\":\"PromptRunner-ckWMH\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“Documentล“],ล“dataTypeล“:ล“PromptRunnerล“,ล“idล“:ล“PromptRunner-ckWMHล“}\",\"target\":\"PromptTemplate-K7xiS\",\"targetHandle\":\"{ล“fieldNameล“:ล“dasdasdล“,ล“idล“:ล“PromptTemplate-K7xiSล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"dasdasd\",\"id\":\"PromptTemplate-K7xiS\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"Document\"],\"dataType\":\"PromptRunner\",\"id\":\"PromptRunner-ckWMH\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-PromptRunner-ckWMH{ล“baseClassesล“:[ล“Documentล“],ล“dataTypeล“:ล“PromptRunnerล“,ล“idล“:ล“PromptRunner-ckWMHล“}-PromptTemplate-K7xiS{ล“fieldNameล“:ล“dasdasdล“,ล“idล“:ล“PromptTemplate-K7xiSล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\"},{\"source\":\"AirbyteJSONLoader-DXfcM\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“Documentล“],ล“dataTypeล“:ล“AirbyteJSONLoaderล“,ล“idล“:ล“AirbyteJSONLoader-DXfcMล“}\",\"target\":\"PromptTemplate-K7xiS\",\"targetHandle\":\"{ล“fieldNameล“:ล“dasdasล“,ล“idล“:ล“PromptTemplate-K7xiSล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"dasdas\",\"id\":\"PromptTemplate-K7xiS\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"Document\"],\"dataType\":\"AirbyteJSONLoader\",\"id\":\"AirbyteJSONLoader-DXfcM\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-AirbyteJSONLoader-DXfcM{ล“baseClassesล“:[ล“Documentล“],ล“dataTypeล“:ล“AirbyteJSONLoaderล“,ล“idล“:ล“AirbyteJSONLoader-DXfcMล“}-PromptTemplate-K7xiS{ล“fieldNameล“:ล“dasdasล“,ล“idล“:ล“PromptTemplate-K7xiSล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\"}],\"viewport\":{\"x\":721.09842496776,\"y\":-303.59762799439625,\"zoom\":0.6417129487814537}},\"is_component\":false,\"updated_at\":\"2023-12-08T22:52:14.560323\",\"folder\":null,\"id\":\"8533c46e-21fd-4b92-b68e-1086ea86c72d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Twinkly Stonebraker\",\"description\":\"Navigate the Linguistic Landscape, Discover Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-09T13:26:42.332360\",\"folder\":null,\"id\":\"92bc0875-4a73-44f2-9410-3b8342e404bf\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Metaphor Search (1)\",\"description\":\"Search in Metaphor with a custom string.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom typing import List, Union\\nfrom langchain.llms.base import BaseLLM\\nfrom langchain.chains import LLMChain\\nfrom langchain import PromptTemplate\\nfrom langchain.schema import Document\\nfrom metaphor_python import Metaphor\\nimport json\\n\\nfrom typing import List\\nfrom langflow.field_typing import Data\\n\\nclass MetaphorSearch(CustomComponent):\\n display_name: str = \\\"Metaphor Search\\\"\\n description: str = \\\"Search in Metaphor with a custom string.\\\"\\n beta = True\\n \\n def build_config(self):\\n return {\\n \\\"metaphor_client\\\": {\\\"display_name\\\": \\\"Metaphor Wrapper\\\"}, \\n \\\"search_num_results\\\": {\\\"display_name\\\": \\\"Number of Results (per domain)\\\"},\\n \\\"include_domains\\\": {\\\"display_name\\\": \\\"Include Domains\\\", \\\"is_list\\\": True},\\n \\\"start_date\\\": {\\\"display_name\\\": \\\"Start Date\\\"},\\n \\\"use_autoprompt\\\": {\\\"display_name\\\": \\\"Use Autoprompt\\\", \\\"type\\\": \\\"boolean\\\"},\\n \\\"search_type\\\": {\\\"display_name\\\": \\\"Search Type\\\", \\\"options\\\": [\\\"neural\\\", \\\"keyword\\\"]},\\n \\\"start_date\\\": {\\\"input_types\\\": [\\\"Data\\\"]}\\n }\\n\\n def build(\\n self,\\n methaphor_client: Data,\\n query: str,\\n search_type: str='keyword',\\n search_num_results: int = 5,\\n include_domains: List[str]= [\\\"youtube.com\\\"],\\n use_autoprompt: bool = False,\\n start_date: str=\\\"2023-01-01\\\",\\n \\n ) -> Data:\\n \\n results = []\\n for domain in include_domains:\\n response = methaphor_client.search(\\n query,\\n num_results=int(search_num_results),\\n include_domains=[domain],\\n use_autoprompt=use_autoprompt,\\n type=search_type,\\n # start_crawl_date=start_date,\\n start_published_date=start_date\\n )\\n results.extend(response.results)\\n \\n self.repr_value = results\\n\\n return results\\n\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"include_domains\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[\"yout\"],\"password\":false,\"name\":\"include_domains\",\"display_name\":\"Include Domains\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"methaphor_client\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"methaphor_client\",\"display_name\":\"methaphor_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false},\"query\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"query\",\"display_name\":\"query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"pasteldasdasdas\"},\"search_num_results\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":5,\"password\":false,\"name\":\"search_num_results\",\"display_name\":\"Number of Results (per domain)\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"search_type\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"keyword\",\"password\":false,\"options\":[\"neural\",\"keyword\"],\"name\":\"search_type\",\"display_name\":\"Search Type\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"start_date\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"start_date\",\"display_name\":\"start_date\",\"advanced\":false,\"input_types\":[\"Data\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"use_autoprompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"use_autoprompt\",\"display_name\":\"Use Autoprompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false}},\"description\":\"Search in Metaphor with a custom string.\",\"base_classes\":[\"Data\"],\"display_name\":\"Metaphor Search\",\"custom_fields\":{\"include_domains\":null,\"methaphor_client\":null,\"query\":null,\"search_num_results\":null,\"search_type\":null,\"start_date\":null,\"use_autoprompt\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"CustomComponent-dMB5d\"},\"id\":\"CustomComponent-dMB5d\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:26:43.668665\",\"folder\":null,\"id\":\"912265df-9b87-4b30-a585-1ca59b944391\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Metaphor Search (2)\",\"description\":\"Search in Metaphor with a custom string.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom typing import List, Union\\nfrom langchain.llms.base import BaseLLM\\nfrom langchain.chains import LLMChain\\nfrom langchain import PromptTemplate\\nfrom langchain.schema import Document\\nfrom metaphor_python import Metaphor\\nimport json\\n\\nfrom typing import List\\nfrom langflow.field_typing import Data\\n\\nclass MetaphorSearch(CustomComponent):\\n display_name: str = \\\"Metaphor Search\\\"\\n description: str = \\\"Search in Metaphor with a custom string.\\\"\\n beta = True\\n \\n def build_config(self):\\n return {\\n \\\"metaphor_client\\\": {\\\"display_name\\\": \\\"Metaphor Wrapper\\\"}, \\n \\\"search_num_results\\\": {\\\"display_name\\\": \\\"Number of Results (per domain)\\\"},\\n \\\"include_domains\\\": {\\\"display_name\\\": \\\"Include Domains\\\", \\\"is_list\\\": True},\\n \\\"start_date\\\": {\\\"display_name\\\": \\\"Start Date\\\"},\\n \\\"use_autoprompt\\\": {\\\"display_name\\\": \\\"Use Autoprompt\\\", \\\"type\\\": \\\"boolean\\\"},\\n \\\"search_type\\\": {\\\"display_name\\\": \\\"Search Type\\\", \\\"options\\\": [\\\"neural\\\", \\\"keyword\\\"]},\\n \\\"start_date\\\": {\\\"input_types\\\": [\\\"Data\\\"]}\\n }\\n\\n def build(\\n self,\\n methaphor_client: Data,\\n query: str,\\n search_type: str='keyword',\\n search_num_results: int = 5,\\n include_domains: List[str]= [\\\"youtube.com\\\"],\\n use_autoprompt: bool = False,\\n start_date: str=\\\"2023-01-01\\\",\\n \\n ) -> Data:\\n \\n results = []\\n for domain in include_domains:\\n response = methaphor_client.search(\\n query,\\n num_results=int(search_num_results),\\n include_domains=[domain],\\n use_autoprompt=use_autoprompt,\\n type=search_type,\\n # start_crawl_date=start_date,\\n start_published_date=start_date\\n )\\n results.extend(response.results)\\n \\n self.repr_value = results\\n\\n return results\\n\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"include_domains\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[\"yout\"],\"password\":false,\"name\":\"include_domains\",\"display_name\":\"Include Domains\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"methaphor_client\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"methaphor_client\",\"display_name\":\"methaphor_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false},\"query\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"query\",\"display_name\":\"query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"pasteldasdasdas\"},\"search_num_results\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":5,\"password\":false,\"name\":\"search_num_results\",\"display_name\":\"Number of Results (per domain)\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"search_type\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"keyword\",\"password\":false,\"options\":[\"neural\",\"keyword\"],\"name\":\"search_type\",\"display_name\":\"Search Type\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"start_date\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"start_date\",\"display_name\":\"start_date\",\"advanced\":false,\"input_types\":[\"Data\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"use_autoprompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"use_autoprompt\",\"display_name\":\"Use Autoprompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false}},\"description\":\"Search in Metaphor with a custom string.\",\"base_classes\":[\"Data\"],\"display_name\":\"Metaphor Search\",\"custom_fields\":{\"include_domains\":null,\"methaphor_client\":null,\"query\":null,\"search_num_results\":null,\"search_type\":null,\"start_date\":null,\"use_autoprompt\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"CustomComponent-ipifC\"},\"id\":\"CustomComponent-ipifC\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:26:49.799612\",\"folder\":null,\"id\":\"ca83ee08-2f93-427d-9897-80fef6dd5447\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Metaphor Search\",\"description\":\"Search in Metaphor with a custom string.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom typing import List, Union\\nfrom langchain.llms.base import BaseLLM\\nfrom langchain.chains import LLMChain\\nfrom langchain import PromptTemplate\\nfrom langchain.schema import Document\\nfrom metaphor_python import Metaphor\\nimport json\\n\\nfrom typing import List\\nfrom langflow.field_typing import Data\\n\\nclass MetaphorSearch(CustomComponent):\\n display_name: str = \\\"Metaphor Search\\\"\\n description: str = \\\"Search in Metaphor with a custom string.\\\"\\n beta = True\\n \\n def build_config(self):\\n return {\\n \\\"metaphor_client\\\": {\\\"display_name\\\": \\\"Metaphor Wrapper\\\"}, \\n \\\"search_num_results\\\": {\\\"display_name\\\": \\\"Number of Results (per domain)\\\"},\\n \\\"include_domains\\\": {\\\"display_name\\\": \\\"Include Domains\\\", \\\"is_list\\\": True},\\n \\\"start_date\\\": {\\\"display_name\\\": \\\"Start Date\\\"},\\n \\\"use_autoprompt\\\": {\\\"display_name\\\": \\\"Use Autoprompt\\\", \\\"type\\\": \\\"boolean\\\"},\\n \\\"search_type\\\": {\\\"display_name\\\": \\\"Search Type\\\", \\\"options\\\": [\\\"neural\\\", \\\"keyword\\\"]},\\n \\\"start_date\\\": {\\\"input_types\\\": [\\\"Data\\\"]}\\n }\\n\\n def build(\\n self,\\n methaphor_client: Data,\\n query: str,\\n search_type: str='keyword',\\n search_num_results: int = 5,\\n include_domains: List[str]= [\\\"youtube.com\\\"],\\n use_autoprompt: bool = False,\\n start_date: str=\\\"2023-01-01\\\",\\n \\n ) -> Data:\\n \\n results = []\\n for domain in include_domains:\\n response = methaphor_client.search(\\n query,\\n num_results=int(search_num_results),\\n include_domains=[domain],\\n use_autoprompt=use_autoprompt,\\n type=search_type,\\n # start_crawl_date=start_date,\\n start_published_date=start_date\\n )\\n results.extend(response.results)\\n \\n self.repr_value = results\\n\\n return results\\n\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"include_domains\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[\"yout\"],\"password\":false,\"name\":\"include_domains\",\"display_name\":\"Include Domains\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"methaphor_client\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"methaphor_client\",\"display_name\":\"methaphor_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false},\"query\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"query\",\"display_name\":\"query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"pasteldasdasdas\"},\"search_num_results\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":5,\"password\":false,\"name\":\"search_num_results\",\"display_name\":\"Number of Results (per domain)\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"search_type\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"keyword\",\"password\":false,\"options\":[\"neural\",\"keyword\"],\"name\":\"search_type\",\"display_name\":\"Search Type\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"start_date\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"start_date\",\"display_name\":\"start_date\",\"advanced\":false,\"input_types\":[\"Data\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"use_autoprompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"use_autoprompt\",\"display_name\":\"Use Autoprompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false}},\"description\":\"Search in Metaphor with a custom string.\",\"base_classes\":[\"Data\"],\"display_name\":\"Metaphor Search\",\"custom_fields\":{\"include_domains\":null,\"methaphor_client\":null,\"query\":null,\"search_num_results\":null,\"search_type\":null,\"start_date\":null,\"use_autoprompt\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"CustomComponent-Y4qL7\"},\"id\":\"CustomComponent-Y4qL7\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:26:53.719960\",\"folder\":null,\"id\":\"5847602b-769a-4a82-82e8-a70f54a59929\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lively Williams\",\"description\":\"Conversational Cartography Unlocked.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-09T13:27:45.691254\",\"folder\":null,\"id\":\"0e3bdba9-127a-4399-81a4-2865b70a4a47\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Shared Component\",\"description\":\"Conversational Cartography Unlocked.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":328,\"id\":\"CSVAgent-TK9Ea\",\"type\":\"genericNode\",\"position\":{\"x\":251.25514772667083,\"y\":160.7424529887874},\"data\":{\"type\":\"CSVAgent\",\"node\":{\"template\":{\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"_type\":\"csv_agent\"},\"description\":\"Construct a CSV agent from a CSV and tools.\",\"base_classes\":[\"AgentExecutor\"],\"display_name\":\"CSVAgent\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/agents/toolkits/csv\",\"beta\":false,\"error\":null},\"id\":\"CSVAgent-TK9Ea\"},\"positionAbsolute\":{\"x\":251.25514772667083,\"y\":160.7424529887874}}],\"edges\":[],\"viewport\":{\"x\":104.85568116317398,\"y\":88.26375874183478,\"zoom\":0.7169776240079145}},\"is_component\":false,\"updated_at\":\"2023-12-09T13:28:34.119070\",\"folder\":null,\"id\":\"29c1a247-47b0-457b-8666-7c0a67dc72b0\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"teste cristhian\",\"description\":\"11111\",\"data\":{\"nodes\":[{\"width\":384,\"height\":328,\"id\":\"CSVAgent-P5wrB\",\"type\":\"genericNode\",\"position\":{\"x\":251.25514772667083,\"y\":160.7424529887874},\"data\":{\"type\":\"CSVAgent\",\"node\":{\"template\":{\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"_type\":\"csv_agent\"},\"description\":\"Construct a CSV agent from a CSV and tools.\",\"base_classes\":[\"AgentExecutor\"],\"display_name\":\"CSVAgent\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/agents/toolkits/csv\",\"beta\":false,\"error\":null},\"id\":\"CSVAgent-P5wrB\"},\"positionAbsolute\":{\"x\":251.25514772667083,\"y\":160.7424529887874}},{\"width\":384,\"height\":626,\"id\":\"OpenAI-zpihD\",\"type\":\"genericNode\",\"position\":{\"x\":-56.983202536768374,\"y\":61.715652677908665},\"data\":{\"type\":\"OpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain_core.callbacks.base.BaseCallbackHandler\",\"list\":true},\"allowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":[],\"password\":false,\"name\":\"allowed_special\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"batch_size\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":20,\"password\":false,\"name\":\"batch_size\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"best_of\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"best_of\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"disallowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"all\",\"password\":false,\"name\":\"disallowed_special\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"frequency_penalty\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":0,\"password\":false,\"name\":\"frequency_penalty\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"logit_bias\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"logit_bias\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"text-babbage-001\",\"password\":false,\"options\":[\"text-davinci-003\",\"text-davinci-002\",\"text-curie-001\",\"text-babbage-001\",\"text-ada-001\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false,\"value\":\"dasdasdasdsadasdas\"},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"presence_penalty\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":0,\"password\":false,\"name\":\"presence_penalty\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"1.4\",\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"top_p\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"top_p\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"OpenAI\"},\"description\":\"OpenAI large language models.\",\"base_classes\":[\"OpenAI\",\"BaseLanguageModel\",\"BaseLLM\",\"BaseOpenAI\"],\"display_name\":\"OpenAI\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/llms/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"OpenAI-zpihD\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":-56.983202536768374,\"y\":61.715652677908665}}],\"edges\":[],\"viewport\":{\"x\":104.85568116317398,\"y\":88.26375874183478,\"zoom\":0.7169776240079145}},\"is_component\":false,\"updated_at\":\"2023-12-09T13:40:48.453096\",\"folder\":null,\"id\":\"2e59d013-2acb-49a6-915b-9231a7e6eb58\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVAgent (1)\",\"description\":\"Construct a CSV agent from a CSV and tools.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVAgent\",\"node\":{\"template\":{\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"_type\":\"csv_agent\"},\"description\":\"Construct a CSV agent from a CSV and tools.\",\"base_classes\":[\"AgentExecutor\"],\"display_name\":\"CSVAgent\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/agents/toolkits/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVAgent-jsHqy\"},\"id\":\"CSVAgent-jsHqy\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:31:17.317322\",\"folder\":null,\"id\":\"ab1034a9-9b5b-4c65-bf6e-9f098a403942\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Suspicious Wilsonfasdfsd\",\"description\":\"Building Linguistic Labyrinths.fasdfads\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-09T14:43:45.298121\",\"folder\":null,\"id\":\"7d91c0c5-fba6-4c60-b4d1-11d430ef357a\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"AirbyteJSONLoader (1)\",\"description\":\"Load local `Airbyte` json files.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AirbyteJSONLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".json\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"\":\"\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"AirbyteJSONLoader\"},\"description\":\"Load local `Airbyte` json files.\",\"base_classes\":[\"Document\"],\"display_name\":\"AirbyteJSONLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/airbyte_json\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"AirbyteJSONLoader-pAHh6\"},\"id\":\"AirbyteJSONLoader-pAHh6\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:47:58.573137\",\"folder\":null,\"id\":\"f0cc4292-97cc-4748-803d-949e30dcf661\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"AirbyteJSONLoader\",\"description\":\"Load local `Airbyte` json files.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AirbyteJSONLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".json\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"ff2\":\"d3bbd\"},{\"w\":\"bvd\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"AirbyteJSONLoader\"},\"description\":\"Load local `Airbyte` json files.\",\"base_classes\":[\"Document\"],\"display_name\":\"AirbyteJSONLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/airbyte_json\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"AirbyteJSONLoader-0zU2Q\"},\"id\":\"AirbyteJSONLoader-0zU2Q\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:50:09.035318\",\"folder\":null,\"id\":\"5e3c0d55-1a00-4e15-9821-0c625c6415ff\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVAgent\",\"description\":\"Construct a CSV agent from a CSV and tools.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVAgent\",\"node\":{\"template\":{\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"_type\":\"csv_agent\"},\"description\":\"Construct a CSV agent from a CSV and tools.\",\"base_classes\":[\"AgentExecutor\"],\"display_name\":\"CSVAgent\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/agents/toolkits/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVAgent-Ub1Xe\"},\"id\":\"CSVAgent-Ub1Xe\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:50:16.985419\",\"folder\":null,\"id\":\"baee8061-4788-4ce6-928f-c6ce1ecb443c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lively Heisenberg\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":366,\"id\":\"CSVLoader-RMUx9\",\"type\":\"genericNode\",\"position\":{\"x\":111,\"y\":345.51250076293945},\"data\":{\"type\":\"CSVLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"z2b\":\"z9\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"CSVLoader\"},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\",\"beta\":false,\"error\":null},\"id\":\"CSVLoader-RMUx9\"},\"positionAbsolute\":{\"x\":111,\"y\":345.51250076293945}}],\"edges\":[],\"viewport\":{\"x\":0,\"y\":0,\"zoom\":1}},\"is_component\":false,\"updated_at\":\"2023-12-09T14:38:40.291137\",\"folder\":null,\"id\":\"109e9629-d569-4555-9d40-42203a5ed035\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CohereEmbeddings\",\"description\":\"Cohere embedding models.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CohereEmbeddings\",\"node\":{\"template\":{\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"cohere_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"cohere_api_key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"max_retries\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"model\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"embed-english-v2.0\",\"password\":false,\"name\":\"model\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"truncate\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"truncate\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"user_agent\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"langchain\",\"password\":false,\"name\":\"user_agent\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"_type\":\"CohereEmbeddings\"},\"description\":\"Cohere embedding models.\",\"base_classes\":[\"CohereEmbeddings\",\"Embeddings\"],\"display_name\":\"CohereEmbeddings\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/cohere\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CohereEmbeddings-HFUAf\"},\"id\":\"CohereEmbeddings-HFUAf\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:50:46.172344\",\"folder\":null,\"id\":\"662d8040-d47c-40db-bda1-66489a1c9d24\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVLoader (1)\",\"description\":\"Load a `CSV` file into a list of Documents.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"cddscz23\":\"aaqd\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"CSVLoader\"},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVLoader-3wrib\"},\"id\":\"CSVLoader-3wrib\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:56:11.662526\",\"folder\":null,\"id\":\"4fae6aec-ddbd-498d-a4d1-ca0290f6a5ad\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVLoader (2)\",\"description\":\"Load a `CSV` file into a list of Documents.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"cddscz23\":\"aaqd\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"CSVLoader\"},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVLoader-VEjyx\"},\"id\":\"CSVLoader-VEjyx\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:57:37.560784\",\"folder\":null,\"id\":\"d80635ee-966c-41f2-981c-afa2c388ac6e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVLoader (3)\",\"description\":\"Load a `CSV` file into a list of Documents.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"cddscz23\":\"aaqd\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"CSVLoader\"},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVLoader-PIhOc\"},\"id\":\"CSVLoader-PIhOc\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:00:27.991966\",\"folder\":null,\"id\":\"c5cc4c32-77c8-4889-a9f8-2632466b7366\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVLoader (4)\",\"description\":\"Load a `CSV` file into a list of Documents.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"cddscz23\":\"aaqd\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"CSVLoader\"},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVLoader-deB43\"},\"id\":\"CSVLoader-deB43\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:00:42.509243\",\"folder\":null,\"id\":\"0ab59938-ccf4-4bb9-b285-1f5da38648f0\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVLoader\",\"description\":\"Load a `CSV` file into a list of Documents.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"\":\"aaqd\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"CSVLoader\"},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVLoader-mdkLm\"},\"id\":\"CSVLoader-mdkLm\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:02:17.458354\",\"folder\":null,\"id\":\"f127b7e7-4149-492e-8998-6b1b35ec4153\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVLoader (5)\",\"description\":\"Load a `CSV` file into a list of Documents.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"cddscz23\":\"aaqd\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"CSVLoader\"},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVLoader-FRc6Y\"},\"id\":\"CSVLoader-FRc6Y\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:02:26.958867\",\"folder\":null,\"id\":\"a870a096-725c-4914-add0-8d57d710b7e5\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"AirbyteJSONLoader (2)\",\"description\":\"Load local `Airbyte` json files.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AirbyteJSONLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".json\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"\":\"\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"AirbyteJSONLoader\"},\"description\":\"Load local `Airbyte` json files.\",\"base_classes\":[\"Document\"],\"display_name\":\"AirbyteJSONLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/airbyte_json\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"AirbyteJSONLoader-Z0uol\"},\"id\":\"AirbyteJSONLoader-Z0uol\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:03:33.764117\",\"folder\":null,\"id\":\"2a37c76c-65c8-4c01-a72d-eb46f3d41a56\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Amazon Bedrock Embeddings\",\"description\":\"Embeddings model from Amazon Bedrock.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AmazonBedrockEmbeddings\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Optional\\n\\nfrom langchain.embeddings import BedrockEmbeddings\\nfrom langchain.embeddings.base import Embeddings\\nfrom langflow import CustomComponent\\n\\n\\nclass AmazonBedrockEmeddingsComponent(CustomComponent):\\n \\\"\\\"\\\"\\n A custom component for implementing an Embeddings Model using Amazon Bedrock.\\n \\\"\\\"\\\"\\n\\n display_name: str = \\\"Amazon Bedrock Embeddings\\\"\\n description: str = \\\"Embeddings model from Amazon Bedrock.\\\"\\n documentation = \\\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\\\"\\n beta = True\\n\\n def build_config(self):\\n return {\\n \\\"model_id\\\": {\\n \\\"display_name\\\": \\\"Model Id\\\",\\n \\\"options\\\": [\\\"amazon.titan-embed-text-v1\\\"],\\n },\\n \\\"credentials_profile_name\\\": {\\\"display_name\\\": \\\"Credentials Profile Name\\\"},\\n \\\"endpoint_url\\\": {\\\"display_name\\\": \\\"Bedrock Endpoint URL\\\"},\\n \\\"region_name\\\": {\\\"display_name\\\": \\\"AWS Region\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n model_id: str = \\\"amazon.titan-embed-text-v1\\\",\\n credentials_profile_name: Optional[str] = None,\\n endpoint_url: Optional[str] = None,\\n region_name: Optional[str] = None,\\n ) -> Embeddings:\\n try:\\n output = BedrockEmbeddings(\\n credentials_profile_name=credentials_profile_name,\\n model_id=model_id,\\n endpoint_url=endpoint_url,\\n region_name=region_name,\\n ) # type: ignore\\n except Exception as e:\\n raise ValueError(\\\"Could not connect to AmazonBedrock API.\\\") from e\\n return output\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"credentials_profile_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"credentials_profile_name\",\"display_name\":\"Credentials Profile Name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"endpoint_url\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"endpoint_url\",\"display_name\":\"Bedrock Endpoint URL\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"model_id\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"amazon.titan-embed-text-v1\",\"password\":false,\"options\":[\"amazon.titan-embed-text-v1\"],\"name\":\"model_id\",\"display_name\":\"Model Id\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"region_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"region_name\",\"display_name\":\"AWS Region\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"Embeddings model from Amazon Bedrock.\",\"base_classes\":[\"Embeddings\"],\"display_name\":\"Amazon Bedrock Embeddings\",\"custom_fields\":{\"credentials_profile_name\":null,\"endpoint_url\":null,\"model_id\":null,\"region_name\":null},\"output_types\":[\"AmazonBedrockEmbeddings\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"AmazonBedrockEmbeddings-28ASv\"},\"id\":\"AmazonBedrockEmbeddings-28ASv\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:03:41.066618\",\"folder\":null,\"id\":\"850ba4e6-96ca-49a7-9b0c-4b7048fd52c8\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"ConversationBufferMemory\",\"description\":\"Buffer for storing conversation memory.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"ConversationBufferMemory\",\"node\":{\"template\":{\"chat_memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"chat_memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseChatMessageHistory\",\"list\":false},\"ai_prefix\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"AI\",\"password\":false,\"name\":\"ai_prefix\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"human_prefix\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"Human\",\"password\":false,\"name\":\"human_prefix\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"input_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"input_key\",\"advanced\":false,\"dynamic\":false,\"info\":\"The variable to be used as Chat Input when more than one variable is available.\",\"type\":\"str\",\"list\":false},\"memory_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"chat_history\",\"password\":false,\"name\":\"memory_key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"output_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"output_key\",\"advanced\":false,\"dynamic\":false,\"info\":\"The variable to be used as Chat Output (e.g. answer in a ConversationalRetrievalChain)\",\"type\":\"str\",\"list\":false},\"return_messages\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"return_messages\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ConversationBufferMemory\"},\"description\":\"Buffer for storing conversation memory.\",\"base_classes\":[\"BaseMemory\",\"BaseChatMemory\",\"ConversationBufferMemory\"],\"display_name\":\"ConversationBufferMemory\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/memory/how_to/buffer\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"ConversationBufferMemory-WaoLx\"},\"id\":\"ConversationBufferMemory-WaoLx\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:04:46.058568\",\"folder\":null,\"id\":\"be650940-0449-4eb0-a708-056310f924fd\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Amazon Bedrock Embeddings (1)\",\"description\":\"Embeddings model from Amazon Bedrock.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AmazonBedrockEmbeddings\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Optional\\n\\nfrom langchain.embeddings import BedrockEmbeddings\\nfrom langchain.embeddings.base import Embeddings\\nfrom langflow import CustomComponent\\n\\n\\nclass AmazonBedrockEmeddingsComponent(CustomComponent):\\n \\\"\\\"\\\"\\n A custom component for implementing an Embeddings Model using Amazon Bedrock.\\n \\\"\\\"\\\"\\n\\n display_name: str = \\\"Amazon Bedrock Embeddings\\\"\\n description: str = \\\"Embeddings model from Amazon Bedrock.\\\"\\n documentation = \\\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\\\"\\n beta = True\\n\\n def build_config(self):\\n return {\\n \\\"model_id\\\": {\\n \\\"display_name\\\": \\\"Model Id\\\",\\n \\\"options\\\": [\\\"amazon.titan-embed-text-v1\\\"],\\n },\\n \\\"credentials_profile_name\\\": {\\\"display_name\\\": \\\"Credentials Profile Name\\\"},\\n \\\"endpoint_url\\\": {\\\"display_name\\\": \\\"Bedrock Endpoint URL\\\"},\\n \\\"region_name\\\": {\\\"display_name\\\": \\\"AWS Region\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n model_id: str = \\\"amazon.titan-embed-text-v1\\\",\\n credentials_profile_name: Optional[str] = None,\\n endpoint_url: Optional[str] = None,\\n region_name: Optional[str] = None,\\n ) -> Embeddings:\\n try:\\n output = BedrockEmbeddings(\\n credentials_profile_name=credentials_profile_name,\\n model_id=model_id,\\n endpoint_url=endpoint_url,\\n region_name=region_name,\\n ) # type: ignore\\n except Exception as e:\\n raise ValueError(\\\"Could not connect to AmazonBedrock API.\\\") from e\\n return output\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"credentials_profile_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"credentials_profile_name\",\"display_name\":\"Credentials Profile Name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"endpoint_url\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"endpoint_url\",\"display_name\":\"Bedrock Endpoint URL\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"model_id\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"amazon.titan-embed-text-v1\",\"password\":false,\"options\":[\"amazon.titan-embed-text-v1\"],\"name\":\"model_id\",\"display_name\":\"Model Id\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"region_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"region_name\",\"display_name\":\"AWS Region\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"Embeddings model from Amazon Bedrock.\",\"base_classes\":[\"Embeddings\"],\"display_name\":\"Amazon Bedrock Embeddings\",\"custom_fields\":{\"credentials_profile_name\":null,\"endpoint_url\":null,\"model_id\":null,\"region_name\":null},\"output_types\":[\"AmazonBedrockEmbeddings\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"AmazonBedrockEmbeddings-Bs5PG\"},\"id\":\"AmazonBedrockEmbeddings-Bs5PG\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:05:50.570800\",\"folder\":null,\"id\":\"53ad1fe2-f3af-4354-86e0-eb141ce12859\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Amazon Bedrock Embeddings (2)\",\"description\":\"Embeddings model from Amazon Bedrock.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AmazonBedrockEmbeddings\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Optional\\n\\nfrom langchain.embeddings import BedrockEmbeddings\\nfrom langchain.embeddings.base import Embeddings\\nfrom langflow import CustomComponent\\n\\n\\nclass AmazonBedrockEmeddingsComponent(CustomComponent):\\n \\\"\\\"\\\"\\n A custom component for implementing an Embeddings Model using Amazon Bedrock.\\n \\\"\\\"\\\"\\n\\n display_name: str = \\\"Amazon Bedrock Embeddings\\\"\\n description: str = \\\"Embeddings model from Amazon Bedrock.\\\"\\n documentation = \\\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\\\"\\n beta = True\\n\\n def build_config(self):\\n return {\\n \\\"model_id\\\": {\\n \\\"display_name\\\": \\\"Model Id\\\",\\n \\\"options\\\": [\\\"amazon.titan-embed-text-v1\\\"],\\n },\\n \\\"credentials_profile_name\\\": {\\\"display_name\\\": \\\"Credentials Profile Name\\\"},\\n \\\"endpoint_url\\\": {\\\"display_name\\\": \\\"Bedrock Endpoint URL\\\"},\\n \\\"region_name\\\": {\\\"display_name\\\": \\\"AWS Region\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n model_id: str = \\\"amazon.titan-embed-text-v1\\\",\\n credentials_profile_name: Optional[str] = None,\\n endpoint_url: Optional[str] = None,\\n region_name: Optional[str] = None,\\n ) -> Embeddings:\\n try:\\n output = BedrockEmbeddings(\\n credentials_profile_name=credentials_profile_name,\\n model_id=model_id,\\n endpoint_url=endpoint_url,\\n region_name=region_name,\\n ) # type: ignore\\n except Exception as e:\\n raise ValueError(\\\"Could not connect to AmazonBedrock API.\\\") from e\\n return output\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"credentials_profile_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"credentials_profile_name\",\"display_name\":\"Credentials Profile Name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"endpoint_url\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"endpoint_url\",\"display_name\":\"Bedrock Endpoint URL\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"model_id\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"amazon.titan-embed-text-v1\",\"password\":false,\"options\":[\"amazon.titan-embed-text-v1\"],\"name\":\"model_id\",\"display_name\":\"Model Id\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"region_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"region_name\",\"display_name\":\"AWS Region\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"Embeddings model from Amazon Bedrock.\",\"base_classes\":[\"Embeddings\"],\"display_name\":\"Amazon Bedrock Embeddings\",\"custom_fields\":{\"credentials_profile_name\":null,\"endpoint_url\":null,\"model_id\":null,\"region_name\":null},\"output_types\":[\"AmazonBedrockEmbeddings\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"AmazonBedrockEmbeddings-zSZ4t\"},\"id\":\"AmazonBedrockEmbeddings-zSZ4t\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:06:11.415088\",\"folder\":null,\"id\":\"e9ed1c90-146e-452d-8ccd-ebf2e0da4331\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Amazon Bedrock Embeddings (3)\",\"description\":\"Embeddings model from Amazon Bedrock.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AmazonBedrockEmbeddings\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Optional\\n\\nfrom langchain.embeddings import BedrockEmbeddings\\nfrom langchain.embeddings.base import Embeddings\\nfrom langflow import CustomComponent\\n\\n\\nclass AmazonBedrockEmeddingsComponent(CustomComponent):\\n \\\"\\\"\\\"\\n A custom component for implementing an Embeddings Model using Amazon Bedrock.\\n \\\"\\\"\\\"\\n\\n display_name: str = \\\"Amazon Bedrock Embeddings\\\"\\n description: str = \\\"Embeddings model from Amazon Bedrock.\\\"\\n documentation = \\\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\\\"\\n beta = True\\n\\n def build_config(self):\\n return {\\n \\\"model_id\\\": {\\n \\\"display_name\\\": \\\"Model Id\\\",\\n \\\"options\\\": [\\\"amazon.titan-embed-text-v1\\\"],\\n },\\n \\\"credentials_profile_name\\\": {\\\"display_name\\\": \\\"Credentials Profile Name\\\"},\\n \\\"endpoint_url\\\": {\\\"display_name\\\": \\\"Bedrock Endpoint URL\\\"},\\n \\\"region_name\\\": {\\\"display_name\\\": \\\"AWS Region\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n model_id: str = \\\"amazon.titan-embed-text-v1\\\",\\n credentials_profile_name: Optional[str] = None,\\n endpoint_url: Optional[str] = None,\\n region_name: Optional[str] = None,\\n ) -> Embeddings:\\n try:\\n output = BedrockEmbeddings(\\n credentials_profile_name=credentials_profile_name,\\n model_id=model_id,\\n endpoint_url=endpoint_url,\\n region_name=region_name,\\n ) # type: ignore\\n except Exception as e:\\n raise ValueError(\\\"Could not connect to AmazonBedrock API.\\\") from e\\n return output\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"credentials_profile_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"credentials_profile_name\",\"display_name\":\"Credentials Profile Name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"endpoint_url\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"endpoint_url\",\"display_name\":\"Bedrock Endpoint URL\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"model_id\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"amazon.titan-embed-text-v1\",\"password\":false,\"options\":[\"amazon.titan-embed-text-v1\"],\"name\":\"model_id\",\"display_name\":\"Model Id\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"region_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"region_name\",\"display_name\":\"AWS Region\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"Embeddings model from Amazon Bedrock.\",\"base_classes\":[\"Embeddings\"],\"display_name\":\"Amazon Bedrock Embeddings\",\"custom_fields\":{\"credentials_profile_name\":null,\"endpoint_url\":null,\"model_id\":null,\"region_name\":null},\"output_types\":[\"AmazonBedrockEmbeddings\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"AmazonBedrockEmbeddings-Bxhlt\"},\"id\":\"AmazonBedrockEmbeddings-Bxhlt\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:07:06.411108\",\"folder\":null,\"id\":\"83783c57-64e3-41a6-aa7e-ed82f80f1e53\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVLoader (6)\",\"description\":\"Load a `CSV` file into a list of Documents.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"z2b\":\"z9\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"CSVLoader\"},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVLoader-2pn2o\"},\"id\":\"CSVLoader-2pn2o\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:38:30.706258\",\"folder\":null,\"id\":\"c4ae9de6-9df3-4d3c-afc9-1752af4fecd7\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Agent Initializer\",\"description\":\"Initialize a Langchain Agent.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AgentInitializer\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from typing import Callable, List, Union\\n\\nfrom langchain.agents import AgentExecutor, AgentType, initialize_agent, types\\n\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import BaseChatMemory, BaseLanguageModel, Tool\\n\\n\\nclass AgentInitializerComponent(CustomComponent):\\n display_name: str = \\\"Agent Initializer\\\"\\n description: str = \\\"Initialize a Langchain Agent.\\\"\\n documentation: str = \\\"https://python.langchain.com/docs/modules/agents/agent_types/\\\"\\n\\n def build_config(self):\\n agents = list(types.AGENT_TO_CLASS.keys())\\n # field_type and required are optional\\n return {\\n \\\"agent\\\": {\\\"options\\\": agents, \\\"value\\\": agents[0], \\\"display_name\\\": \\\"Agent Type\\\"},\\n \\\"max_iterations\\\": {\\\"display_name\\\": \\\"Max Iterations\\\", \\\"value\\\": 10},\\n \\\"memory\\\": {\\\"display_name\\\": \\\"Memory\\\"},\\n \\\"tools\\\": {\\\"display_name\\\": \\\"Tools\\\"},\\n \\\"llm\\\": {\\\"display_name\\\": \\\"Language Model\\\"},\\n }\\n\\n def build(\\n self, agent: str, llm: BaseLanguageModel, memory: BaseChatMemory, tools: List[Tool], max_iterations: int\\n ) -> Union[AgentExecutor, Callable]:\\n agent = AgentType(agent)\\n return initialize_agent(\\n tools=tools,\\n llm=llm,\\n agent=agent,\\n memory=memory,\\n return_intermediate_steps=True,\\n handle_parsing_errors=True,\\n max_iterations=max_iterations,\\n )\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"agent\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"zero-shot-react-description\",\"password\":false,\"options\":[\"zero-shot-react-description\",\"react-docstore\",\"self-ask-with-search\",\"conversational-react-description\",\"chat-zero-shot-react-description\",\"chat-conversational-react-description\",\"structured-chat-zero-shot-react-description\",\"openai-functions\",\"openai-multi-functions\",\"JsonAgent\",\"CSVAgent\",\"AgentInitializer\",\"VectorStoreAgent\",\"VectorStoreRouterAgent\",\"SQLAgent\"],\"name\":\"agent\",\"display_name\":\"Agent Type\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"Language Model\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"max_iterations\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":10,\"password\":false,\"name\":\"max_iterations\",\"display_name\":\"Max Iterations\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"memory\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"display_name\":\"Memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseChatMemory\",\"list\":false},\"tools\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"tools\",\"display_name\":\"Tools\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Tool\",\"list\":true}},\"description\":\"Initialize a Langchain Agent.\",\"base_classes\":[\"Chain\",\"AgentExecutor\",\"Callable\"],\"display_name\":\"Agent Initializer\",\"custom_fields\":{\"agent\":null,\"llm\":null,\"max_iterations\":null,\"memory\":null,\"tools\":null},\"output_types\":[\"AgentInitializer\"],\"documentation\":\"https://python.langchain.com/docs/modules/agents/agent_types/\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"AgentInitializer-MJrAC\"},\"id\":\"AgentInitializer-MJrAC\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:42:54.715163\",\"folder\":null,\"id\":\"ff84b5f9-5680-4084-a9f1-7d94fe675486\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Agent Initializer (1)\",\"description\":\"Initialize a Langchain Agent.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AgentInitializer\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from typing import Callable, List, Union\\n\\nfrom langchain.agents import AgentExecutor, AgentType, initialize_agent, types\\n\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import BaseChatMemory, BaseLanguageModel, Tool\\n\\n\\nclass AgentInitializerComponent(CustomComponent):\\n display_name: str = \\\"Agent Initializer\\\"\\n description: str = \\\"Initialize a Langchain Agent.\\\"\\n documentation: str = \\\"https://python.langchain.com/docs/modules/agents/agent_types/\\\"\\n\\n def build_config(self):\\n agents = list(types.AGENT_TO_CLASS.keys())\\n # field_type and required are optional\\n return {\\n \\\"agent\\\": {\\\"options\\\": agents, \\\"value\\\": agents[0], \\\"display_name\\\": \\\"Agent Type\\\"},\\n \\\"max_iterations\\\": {\\\"display_name\\\": \\\"Max Iterations\\\", \\\"value\\\": 10},\\n \\\"memory\\\": {\\\"display_name\\\": \\\"Memory\\\"},\\n \\\"tools\\\": {\\\"display_name\\\": \\\"Tools\\\"},\\n \\\"llm\\\": {\\\"display_name\\\": \\\"Language Model\\\"},\\n }\\n\\n def build(\\n self, agent: str, llm: BaseLanguageModel, memory: BaseChatMemory, tools: List[Tool], max_iterations: int\\n ) -> Union[AgentExecutor, Callable]:\\n agent = AgentType(agent)\\n return initialize_agent(\\n tools=tools,\\n llm=llm,\\n agent=agent,\\n memory=memory,\\n return_intermediate_steps=True,\\n handle_parsing_errors=True,\\n max_iterations=max_iterations,\\n )\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"agent\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"zero-shot-react-description\",\"password\":false,\"options\":[\"zero-shot-react-description\",\"react-docstore\",\"self-ask-with-search\",\"conversational-react-description\",\"chat-zero-shot-react-description\",\"chat-conversational-react-description\",\"structured-chat-zero-shot-react-description\",\"openai-functions\",\"openai-multi-functions\",\"JsonAgent\",\"CSVAgent\",\"AgentInitializer\",\"VectorStoreAgent\",\"VectorStoreRouterAgent\",\"SQLAgent\"],\"name\":\"agent\",\"display_name\":\"Agent Type\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"Language Model\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"max_iterations\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":10,\"password\":false,\"name\":\"max_iterations\",\"display_name\":\"Max Iterations\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"memory\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"display_name\":\"Memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseChatMemory\",\"list\":false},\"tools\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"tools\",\"display_name\":\"Tools\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Tool\",\"list\":true}},\"description\":\"Initialize a Langchain Agent.\",\"base_classes\":[\"Chain\",\"AgentExecutor\",\"Callable\"],\"display_name\":\"Agent Initializer\",\"custom_fields\":{\"agent\":null,\"llm\":null,\"max_iterations\":null,\"memory\":null,\"tools\":null},\"output_types\":[\"AgentInitializer\"],\"documentation\":\"https://python.langchain.com/docs/modules/agents/agent_types/\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"AgentInitializer-3lcZ4\"},\"id\":\"AgentInitializer-3lcZ4\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:43:20.819934\",\"folder\":null,\"id\":\"97f5db9f-d6cc-4555-88fb-3be102c67814\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Exuberant Banach\",\"description\":\"Unfolding Linguistic Possibilities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-09T14:52:49.951416\",\"folder\":null,\"id\":\"a600acd1-213a-4ce7-8648-ab2ee59f5918\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"AirbyteJSONLoader (3)\",\"description\":\"Load local `Airbyte` json files.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AirbyteJSONLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".json\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"\":\"\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"AirbyteJSONLoader\"},\"description\":\"Load local `Airbyte` json files.\",\"base_classes\":[\"Document\"],\"display_name\":\"AirbyteJSONLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/airbyte_json\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"AirbyteJSONLoader-JhQtx\"},\"id\":\"AirbyteJSONLoader-JhQtx\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:44:49.587337\",\"folder\":null,\"id\":\"07c52ad7-ca52-4cdd-ab40-74a91dbad0dd\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"AirbyteJSONLoader (4)\",\"description\":\"Load local `Airbyte` json files.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AirbyteJSONLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".json\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"\":\"\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"AirbyteJSONLoader\"},\"description\":\"Load local `Airbyte` json files.\",\"base_classes\":[\"Document\"],\"display_name\":\"AirbyteJSONLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/airbyte_json\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"AirbyteJSONLoader-bIvDc\"},\"id\":\"AirbyteJSONLoader-bIvDc\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:45:13.458500\",\"folder\":null,\"id\":\"53e4d256-3653-444b-b8e0-fb97b3ae5c7e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"AirbyteJSONLoader (5)\",\"description\":\"Load local `Airbyte` json files.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AirbyteJSONLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".json\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"\":\"\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"AirbyteJSONLoader\"},\"description\":\"Load local `Airbyte` json files.\",\"base_classes\":[\"Document\"],\"display_name\":\"AirbyteJSONLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/airbyte_json\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"AirbyteJSONLoader-2BLS8\"},\"id\":\"AirbyteJSONLoader-2BLS8\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:45:44.461699\",\"folder\":null,\"id\":\"b5158cc1-c6b8-4e25-907a-bc7e7637aa38\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Amazon Bedrock Embeddings (4)\",\"description\":\"Embeddings model from Amazon Bedrock.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AmazonBedrockEmbeddings\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Optional\\n\\nfrom langchain.embeddings import BedrockEmbeddings\\nfrom langchain.embeddings.base import Embeddings\\nfrom langflow import CustomComponent\\n\\n\\nclass AmazonBedrockEmeddingsComponent(CustomComponent):\\n \\\"\\\"\\\"\\n A custom component for implementing an Embeddings Model using Amazon Bedrock.\\n \\\"\\\"\\\"\\n\\n display_name: str = \\\"Amazon Bedrock Embeddings\\\"\\n description: str = \\\"Embeddings model from Amazon Bedrock.\\\"\\n documentation = \\\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\\\"\\n beta = True\\n\\n def build_config(self):\\n return {\\n \\\"model_id\\\": {\\n \\\"display_name\\\": \\\"Model Id\\\",\\n \\\"options\\\": [\\\"amazon.titan-embed-text-v1\\\"],\\n },\\n \\\"credentials_profile_name\\\": {\\\"display_name\\\": \\\"Credentials Profile Name\\\"},\\n \\\"endpoint_url\\\": {\\\"display_name\\\": \\\"Bedrock Endpoint URL\\\"},\\n \\\"region_name\\\": {\\\"display_name\\\": \\\"AWS Region\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n model_id: str = \\\"amazon.titan-embed-text-v1\\\",\\n credentials_profile_name: Optional[str] = None,\\n endpoint_url: Optional[str] = None,\\n region_name: Optional[str] = None,\\n ) -> Embeddings:\\n try:\\n output = BedrockEmbeddings(\\n credentials_profile_name=credentials_profile_name,\\n model_id=model_id,\\n endpoint_url=endpoint_url,\\n region_name=region_name,\\n ) # type: ignore\\n except Exception as e:\\n raise ValueError(\\\"Could not connect to AmazonBedrock API.\\\") from e\\n return output\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"credentials_profile_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"credentials_profile_name\",\"display_name\":\"Credentials Profile Name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"endpoint_url\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"endpoint_url\",\"display_name\":\"Bedrock Endpoint URL\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"model_id\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"amazon.titan-embed-text-v1\",\"password\":false,\"options\":[\"amazon.titan-embed-text-v1\"],\"name\":\"model_id\",\"display_name\":\"Model Id\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"region_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"region_name\",\"display_name\":\"AWS Region\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"Embeddings model from Amazon Bedrock.\",\"base_classes\":[\"Embeddings\"],\"display_name\":\"Amazon Bedrock Embeddings\",\"custom_fields\":{\"credentials_profile_name\":null,\"endpoint_url\":null,\"model_id\":null,\"region_name\":null},\"output_types\":[\"AmazonBedrockEmbeddings\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"AmazonBedrockEmbeddings-NsBzN\"},\"id\":\"AmazonBedrockEmbeddings-NsBzN\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:50:29.791575\",\"folder\":null,\"id\":\"3fb77f72-1be7-4ce0-ae89-a82b0eee9acf\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Evil Golick\",\"description\":\"Where Language Meets Logic.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:19:02.707854\",\"folder\":null,\"id\":\"9c5d21c2-ea82-4cf4-a591-c3d3fd3f13e6\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gleeful Davinci (1)\",\"description\":\"Unleashing Linguistic Creativity.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:19:02.761150\",\"folder\":null,\"id\":\"f8e2e16e-129c-4116-9626-2c6b524d97b7\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Effervescent Degrasse\",\"description\":\"Language Models, Mapped and Mastered.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:19:02.764440\",\"folder\":null,\"id\":\"d7f4f7b5-effe-4834-8cab-4f2fc4f6e9de\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Prickly Archimedes\",\"description\":\"Language Chainlink Master.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:19:02.767546\",\"folder\":null,\"id\":\"2265d813-4a87-410f-b06a-65e35db8219e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Boring Heyrovsky\",\"description\":\"Building Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:19:02.765105\",\"folder\":null,\"id\":\"10bfd881-e67e-4c33-965d-ee041695edce\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Nostalgic Carroll\",\"description\":\"Unfolding Linguistic Possibilities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:19:02.811794\",\"folder\":null,\"id\":\"63fa5653-4513-47f2-8dfa-baeb1d981f93\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Pensive Perlman\",\"description\":\"Empowering Communication, Enabling Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:19:02.814993\",\"folder\":null,\"id\":\"f4bc5945-20d9-4703-a5bb-6a4a3ef7fc8e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Hilarious Stallman\",\"description\":\"Connect the Dots, Craft Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:19:02.813144\",\"folder\":null,\"id\":\"8d8b80f9-4b74-4cd5-bc5c-08a32c4d2b95\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Awesome Einstein\",\"description\":\"The Power of Language at Your Fingertips.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:20:19.518262\",\"folder\":null,\"id\":\"21808fd7-a492-4e29-8863-301c2785f542\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Funky Swanson\",\"description\":\"Sculpting Language with Precision.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:20:20.185637\",\"folder\":null,\"id\":\"7752299a-4aa9-44db-8d9c-5c4a2ac1b071\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Romantic Pascal\",\"description\":\"Unlock the Power of AI in Your Business Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:20:20.223064\",\"folder\":null,\"id\":\"78f48a13-6a9f-42ce-9d58-ec9b63b381d2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Twinkly Bartik\",\"description\":\"Sculpting Language with Precision.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:20:20.239758\",\"folder\":null,\"id\":\"38074091-3d7c-4d42-b61b-ae195c1b8a4e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Condescending Joliot\",\"description\":\"Language Models, Unleashed.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:20:20.271996\",\"folder\":null,\"id\":\"773020aa-5c2d-4632-ad9e-21276861ab93\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gleeful Kalam\",\"description\":\"The Power of Language at Your Fingertips.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:20:20.283929\",\"folder\":null,\"id\":\"0092d077-6d31-401f-a739-b164476b90ed\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Grinning Bhabha\",\"description\":\"Your Passport to Linguistic Landscapes.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:20:20.467739\",\"folder\":null,\"id\":\"4a395211-712d-4dd2-b3bb-e6b19200f15d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Mirthful Babbage\",\"description\":\"Design Dialogues with Langflow.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:20:20.742990\",\"folder\":null,\"id\":\"3f086a82-3e29-4328-9da8-e02dc9201744\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Tiny Volta\",\"description\":\"Nurture NLP Nodes Here.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:24:18.594247\",\"folder\":null,\"id\":\"659b8289-c8e8-413d-9b2b-51e68411f170\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Radiant Jennings\",\"description\":\"Design, Develop, Dialogize.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:24:42.640309\",\"folder\":null,\"id\":\"f55f0640-d47e-4471-b1ba-3411d38ecac5\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Distracted Shaw\",\"description\":\"Interactive Language Weaving.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:24:58.376247\",\"folder\":null,\"id\":\"a039811e-449a-4244-83ed-4ddd731a0921\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Peppy Murdock (1)\",\"description\":\"Language Chainlink Master.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:25:14.674524\",\"folder\":null,\"id\":\"0faf6144-6ca6-4f64-a343-665ae54774ef\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lively Volta\",\"description\":\"Language Models, Mapped and Mastered.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:26:50.418029\",\"folder\":null,\"id\":\"c5d149d0-c401-4f5e-b79f-2abcc7b8d98d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Bubbly Curie\",\"description\":\"Navigate the Networks of Conversation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:27:10.900899\",\"folder\":null,\"id\":\"7bb2d226-9740-433d-861f-a499632c5a13\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Radiant Nobel\",\"description\":\"Navigate the Linguistic Landscape, Discover Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:29:11.541630\",\"folder\":null,\"id\":\"947906d8-75ea-470c-a8e2-cc80c5d3bdbb\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cheerful Northcutt\",\"description\":\"Unleashing Business Potential through Language Engineering.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:29:37.169791\",\"folder\":null,\"id\":\"56f109fd-2c18-42ed-a9b2-089a678a0c11\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Suspicious Khayyam\",\"description\":\"Crafting Dialogues that Drive Business Success.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:30:24.686359\",\"folder\":null,\"id\":\"551d7bfa-49aa-43f1-a779-e47eabc2aaf2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Twinkly Spence\",\"description\":\"Create, Curate, Communicate with Langflow.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:30:47.738472\",\"folder\":null,\"id\":\"12aef128-130e-492e-bf84-62d4cb4cd456\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Mirthful Lavoisier\",\"description\":\"Nurture NLP Nodes Here.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:31:43.272365\",\"folder\":null,\"id\":\"9952c044-6903-4fba-a270-6ed0b90c93c9\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Upbeat Bose\",\"description\":\"Unravel the Art of Articulation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:32:23.972035\",\"folder\":null,\"id\":\"65f49582-c9fa-4c67-a2bc-4e8fa73ca731\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Tender Perlman\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:33:26.984083\",\"folder\":null,\"id\":\"9ae57fe2-c677-47fa-a059-7d3d915a1178\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sharp Cori\",\"description\":\"Conversation Catalyst Engine.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:33:52.377359\",\"folder\":null,\"id\":\"2920dde2-5c24-4fe0-9c06-ef86b5a16a99\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"}]" + "text": "[{\"name\":\"Awesome Euclid\",\"description\":\"Language Models, Mapped and Mastered.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":374,\"id\":\"PromptTemplate-m2yFu\",\"type\":\"genericNode\",\"position\":{\"x\":462.6456058272081,\"y\":1033.9314297130313},\"data\":{\"type\":\"PromptTemplate\",\"node\":{\"template\":{\"output_parser\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false},\"input_types\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"input_variables\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"transcription\"]},\"partial_variables\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"template\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"prompt\",\"list\":false,\"value\":\"create an image prompt based on the song's lyrics to be used as the album cover of this song:\\n\\nlyrics:\\n{transcription}\"},\"template_format\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"f-string\",\"password\":false,\"name\":\"template_format\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":false},\"validate_template\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"PromptTemplate\",\"transcription\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"transcription\",\"display_name\":\"transcription\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"A prompt template for a language model.\",\"base_classes\":[\"PromptTemplate\",\"StringPromptTemplate\",\"BasePromptTemplate\"],\"name\":\"\",\"display_name\":\"PromptTemplate\",\"documentation\":\"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\"custom_fields\":{\"\":[\"transcription\"],\"template\":[\"transcription\",\"question\"]},\"output_types\":[],\"full_path\":null,\"field_formatters\":{},\"beta\":false,\"error\":null},\"id\":\"PromptTemplate-m2yFu\"},\"selected\":false,\"positionAbsolute\":{\"x\":462.6456058272081,\"y\":1033.9314297130313},\"dragging\":false},{\"width\":384,\"height\":626,\"id\":\"ChatOpenAI-urapv\",\"type\":\"genericNode\",\"position\":{\"x\":189.94856095084924,\"y\":-85.06556385338186},\"data\":{\"type\":\"ChatOpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain_core.callbacks.base.BaseCallbackHandler\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false,\"value\":\"\"},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"gpt-4-1106-preview\",\"password\":false,\"options\":[\"gpt-4-1106-preview\",\"gpt-4\",\"gpt-4-32k\",\"gpt-3.5-turbo\",\"gpt-3.5-turbo-16k\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":0.7,\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ChatOpenAI\"},\"description\":\"`OpenAI` Chat large language models API.\",\"base_classes\":[\"ChatOpenAI\",\"BaseChatModel\",\"BaseLanguageModel\",\"BaseLLM\"],\"display_name\":\"ChatOpenAI\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"ChatOpenAI-urapv\"},\"selected\":false,\"positionAbsolute\":{\"x\":189.94856095084924,\"y\":-85.06556385338186},\"dragging\":false},{\"width\":384,\"height\":806,\"id\":\"CustomComponent-IEIUl\",\"type\":\"genericNode\",\"position\":{\"x\":2364.865919667005,\"y\":88.43094097025096},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nfrom platformdirs import user_cache_dir\\nimport base64\\nfrom PIL import Image\\nfrom io import BytesIO\\nfrom openai import OpenAI\\nfrom pathlib import Path\\n\\nclass Component(CustomComponent):\\n display_name: str = \\\"Image generator\\\"\\n description: str = \\\"generate images using Dall-E\\\"\\n documentation: str = \\\"http://docs.langflow.org/components/custom\\\"\\n\\n def build_config(self):\\n return {\\\"prompt\\\": {\\\"display_name\\\": \\\"Prompt\\\",\\\"input_types\\\":[\\\"str\\\"]},\\n \\\"api_key\\\":{\\\"display_name\\\":\\\"OpenAI API key\\\",\\\"password\\\":True},\\n \\\"model\\\":{\\\"display_name\\\":\\\"Model name\\\",\\\"advanced\\\":True,\\\"options\\\":[\\\"dall-e-2\\\",\\\"dall-e-3\\\"], \\\"value\\\":\\\"dall-e-3\\\"},\\n \\\"file_name\\\":{\\\"display_name\\\":\\\"File Name\\\"},\\n \\\"output_format\\\":{\\\"display_name\\\":\\\"Output format\\\",\\\"options\\\":[\\\"jpeg\\\",\\\"png\\\"],\\\"value\\\":\\\"jpeg\\\"},\\n \\\"width\\\":{\\\"display_name\\\":\\\"Width\\\" ,\\\"value\\\":1024},\\n \\\"height\\\":{\\\"display_name\\\":\\\"Height\\\", \\\"value\\\":1024}\\n }\\n\\n def build(self, prompt:str,api_key:str,model:str,file_name:str,output_format:str,width:int,height:int):\\n client = OpenAI(api_key=api_key)\\n cache_dir = Path(user_cache_dir(\\\"langflow\\\"))\\n images_dir = cache_dir / \\\"images\\\"\\n images_dir.mkdir(parents=True, exist_ok=True)\\n image_path = images_dir / f\\\"{file_name}.{output_format}\\\"\\n response = client.images.generate(\\n model=model,\\n prompt=prompt,\\n size=f\\\"{height}x{width}\\\",\\n response_format=\\\"b64_json\\\",\\n n=1,\\n )\\n # Decode base64-encoded image string\\n binary_data = base64.b64decode(response.data[0].b64_json)\\n # Create PIL Image object from binary image data\\n image_pil = Image.open(BytesIO(binary_data))\\n image_pil.save(image_path, format=output_format.upper())\\n return \\\"\\\"\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"api_key\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"api_key\",\"display_name\":\"OpenAI API key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"file_name\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"file_name\",\"display_name\":\"File Name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"album\"},\"height\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":1024,\"password\":false,\"name\":\"height\",\"display_name\":\"Height\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"model\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"dall-e-3\",\"password\":false,\"options\":[\"dall-e-2\",\"dall-e-3\"],\"name\":\"model\",\"display_name\":\"Model name\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"output_format\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"jpeg\",\"password\":false,\"options\":[\"jpeg\",\"png\"],\"name\":\"output_format\",\"display_name\":\"Output format\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"prompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"prompt\",\"display_name\":\"Prompt\",\"advanced\":false,\"input_types\":[\"str\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"width\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":1024,\"password\":false,\"name\":\"width\",\"display_name\":\"Width\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false}},\"description\":\"generate images using Dall-E\",\"base_classes\":[\"Data\"],\"display_name\":\"Image generator\",\"custom_fields\":{\"api_key\":null,\"file_name\":null,\"height\":null,\"model\":null,\"output_format\":null,\"prompt\":null,\"width\":null},\"output_types\":[\"Data\"],\"documentation\":\"http://docs.langflow.org/components/custom\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-IEIUl\"},\"selected\":false,\"positionAbsolute\":{\"x\":2364.865919667005,\"y\":88.43094097025096}},{\"width\":384,\"height\":338,\"id\":\"LLMChain-KlJb3\",\"type\":\"genericNode\",\"position\":{\"x\":1242.9851164540805,\"y\":-139.74634696823108},\"data\":{\"type\":\"LLMChain\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Callable, Optional, Union\\n\\nfrom langchain.chains import LLMChain\\n\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import (\\n BaseLanguageModel,\\n BaseMemory,\\n BasePromptTemplate,\\n Chain,\\n)\\n\\n\\nclass LLMChainComponent(CustomComponent):\\n display_name = \\\"LLMChain\\\"\\n description = \\\"Chain to run queries against LLMs\\\"\\n\\n def build_config(self):\\n return {\\n \\\"prompt\\\": {\\\"display_name\\\": \\\"Prompt\\\"},\\n \\\"llm\\\": {\\\"display_name\\\": \\\"LLM\\\"},\\n \\\"memory\\\": {\\\"display_name\\\": \\\"Memory\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n prompt: BasePromptTemplate,\\n llm: BaseLanguageModel,\\n memory: Optional[BaseMemory] = None,\\n ) -> Union[Chain, Callable]:\\n return LLMChain(prompt=prompt, llm=llm, memory=memory)\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"display_name\":\"code\"},\"_type\":\"CustomComponent\",\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"display_name\":\"Memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseMemory\",\"list\":false},\"prompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"prompt\",\"display_name\":\"Prompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BasePromptTemplate\",\"list\":false}},\"description\":\"Chain to run queries against LLMs\",\"base_classes\":[\"Chain\",\"Callable\"],\"display_name\":\"LLMChain\",\"custom_fields\":{\"llm\":null,\"memory\":null,\"prompt\":null},\"output_types\":[\"LLMChain\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"LLMChain-KlJb3\"},\"selected\":false,\"positionAbsolute\":{\"x\":1242.9851164540805,\"y\":-139.74634696823108},\"dragging\":false},{\"width\":384,\"height\":328,\"id\":\"CustomComponent-bCuc0\",\"type\":\"genericNode\",\"position\":{\"x\":1747.8107777342625,\"y\":319.13729017446667},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\n\\nclass Component(CustomComponent):\\n display_name: str = \\\"Custom Component\\\"\\n description: str = \\\"Create any custom component you want!\\\"\\n documentation: str = \\\"http://docs.langflow.org/components/custom\\\"\\n\\n def build_config(self):\\n return {\\\"param\\\": {\\\"display_name\\\": \\\"Parameter\\\"}}\\n\\n def build(self, param: Chain) -> str:\\n result = param.run({})\\n self.status = result\\n return result\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"param\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"param\",\"display_name\":\"Parameter\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Chain\",\"list\":false}},\"description\":\"Create any custom component you want!\",\"base_classes\":[\"str\"],\"display_name\":\"Custom Component\",\"custom_fields\":{\"param\":null},\"output_types\":[\"str\"],\"documentation\":\"http://docs.langflow.org/components/custom\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-bCuc0\"},\"selected\":false,\"positionAbsolute\":{\"x\":1747.8107777342625,\"y\":319.13729017446667}}],\"edges\":[{\"source\":\"LLMChain-KlJb3\",\"target\":\"CustomComponent-bCuc0\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“Chainล“,ล“Callableล“],ล“dataTypeล“:ล“LLMChainล“,ล“idล“:ล“LLMChain-KlJb3ล“}\",\"targetHandle\":\"{ล“fieldNameล“:ล“paramล“,ล“idล“:ล“CustomComponent-bCuc0ล“,ล“inputTypesล“:null,ล“typeล“:ล“Chainล“}\",\"id\":\"reactflow__edge-LLMChain-KlJb3{ล“baseClassesล“:[ล“Chainล“,ล“Callableล“],ล“dataTypeล“:ล“LLMChainล“,ล“idล“:ล“LLMChain-KlJb3ล“}-CustomComponent-bCuc0{ล“fieldNameล“:ล“paramล“,ล“idล“:ล“CustomComponent-bCuc0ล“,ล“inputTypesล“:null,ล“typeล“:ล“Chainล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"param\",\"id\":\"CustomComponent-bCuc0\",\"inputTypes\":null,\"type\":\"Chain\"},\"sourceHandle\":{\"baseClasses\":[\"Chain\",\"Callable\"],\"dataType\":\"LLMChain\",\"id\":\"LLMChain-KlJb3\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"selected\":false},{\"source\":\"ChatOpenAI-urapv\",\"target\":\"LLMChain-KlJb3\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“ChatOpenAIล“,ล“BaseChatModelล“,ล“BaseLanguageModelล“,ล“BaseLLMล“],ล“dataTypeล“:ล“ChatOpenAIล“,ล“idล“:ล“ChatOpenAI-urapvล“}\",\"targetHandle\":\"{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“LLMChain-KlJb3ล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLanguageModelล“}\",\"id\":\"reactflow__edge-ChatOpenAI-urapv{ล“baseClassesล“:[ล“ChatOpenAIล“,ล“BaseChatModelล“,ล“BaseLanguageModelล“,ล“BaseLLMล“],ล“dataTypeล“:ล“ChatOpenAIล“,ล“idล“:ล“ChatOpenAI-urapvล“}-LLMChain-KlJb3{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“LLMChain-KlJb3ล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLanguageModelล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"LLMChain-KlJb3\",\"inputTypes\":null,\"type\":\"BaseLanguageModel\"},\"sourceHandle\":{\"baseClasses\":[\"ChatOpenAI\",\"BaseChatModel\",\"BaseLanguageModel\",\"BaseLLM\"],\"dataType\":\"ChatOpenAI\",\"id\":\"ChatOpenAI-urapv\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"selected\":false},{\"source\":\"PromptTemplate-m2yFu\",\"target\":\"LLMChain-KlJb3\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“PromptTemplateล“,ล“StringPromptTemplateล“,ล“BasePromptTemplateล“],ล“dataTypeล“:ล“PromptTemplateล“,ล“idล“:ล“PromptTemplate-m2yFuล“}\",\"targetHandle\":\"{ล“fieldNameล“:ล“promptล“,ล“idล“:ล“LLMChain-KlJb3ล“,ล“inputTypesล“:null,ล“typeล“:ล“BasePromptTemplateล“}\",\"id\":\"reactflow__edge-PromptTemplate-m2yFu{ล“baseClassesล“:[ล“PromptTemplateล“,ล“StringPromptTemplateล“,ล“BasePromptTemplateล“],ล“dataTypeล“:ล“PromptTemplateล“,ล“idล“:ล“PromptTemplate-m2yFuล“}-LLMChain-KlJb3{ล“fieldNameล“:ล“promptล“,ล“idล“:ล“LLMChain-KlJb3ล“,ล“inputTypesล“:null,ล“typeล“:ล“BasePromptTemplateล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"prompt\",\"id\":\"LLMChain-KlJb3\",\"inputTypes\":null,\"type\":\"BasePromptTemplate\"},\"sourceHandle\":{\"baseClasses\":[\"PromptTemplate\",\"StringPromptTemplate\",\"BasePromptTemplate\"],\"dataType\":\"PromptTemplate\",\"id\":\"PromptTemplate-m2yFu\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"selected\":false},{\"source\":\"CustomComponent-bCuc0\",\"target\":\"CustomComponent-IEIUl\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-bCuc0ล“}\",\"targetHandle\":\"{ล“fieldNameล“:ล“promptล“,ล“idล“:ล“CustomComponent-IEIUlล“,ล“inputTypesล“:[ล“strล“],ล“typeล“:ล“strล“}\",\"id\":\"reactflow__edge-CustomComponent-bCuc0{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-bCuc0ล“}-CustomComponent-IEIUl{ล“fieldNameล“:ล“promptล“,ล“idล“:ล“CustomComponent-IEIUlล“,ล“inputTypesล“:[ล“strล“],ล“typeล“:ล“strล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"prompt\",\"id\":\"CustomComponent-IEIUl\",\"inputTypes\":[\"str\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-bCuc0\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"selected\":false}],\"viewport\":{\"x\":92.23454077990459,\"y\":183.8125619056221,\"zoom\":0.6070974421975234}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:33:18.503954\",\"folder\":null,\"id\":\"fe142ce5-32dc-4955-b186-672ced662f13\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Goofy Darwin\",\"description\":\"Conversation Catalyst Engine.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":626,\"id\":\"OpenAI-3ZVDh\",\"type\":\"genericNode\",\"position\":{\"x\":-4.0041891741949485,\"y\":-114.02615182719649},\"data\":{\"type\":\"OpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain_core.callbacks.base.BaseCallbackHandler\",\"list\":true},\"allowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":[],\"password\":false,\"name\":\"allowed_special\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"batch_size\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":20,\"password\":false,\"name\":\"batch_size\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"best_of\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"best_of\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"disallowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"all\",\"password\":false,\"name\":\"disallowed_special\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"frequency_penalty\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":0,\"password\":false,\"name\":\"frequency_penalty\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"logit_bias\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"logit_bias\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":256,\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"text-davinci-003\",\"password\":false,\"options\":[\"text-davinci-003\",\"text-davinci-002\",\"text-curie-001\",\"text-babbage-001\",\"text-ada-001\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"sk-...\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"presence_penalty\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":0,\"password\":false,\"name\":\"presence_penalty\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":0.7,\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"top_p\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"top_p\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"OpenAI\"},\"description\":\"OpenAI large language models.\",\"base_classes\":[\"OpenAI\",\"BaseLLM\",\"BaseOpenAI\",\"BaseLanguageModel\"],\"display_name\":\"OpenAI\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/llms/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"OpenAI-3ZVDh\"},\"selected\":true,\"positionAbsolute\":{\"x\":-4.0041891741949485,\"y\":-114.02615182719649},\"dragging\":false},{\"width\":384,\"height\":338,\"id\":\"LLMChain-RFYXY\",\"type\":\"genericNode\",\"position\":{\"x\":586.672100458868,\"y\":10.967049167706678},\"data\":{\"type\":\"LLMChain\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Callable, Optional, Union\\n\\nfrom langchain.chains import LLMChain\\n\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import (\\n BaseLanguageModel,\\n BaseMemory,\\n BasePromptTemplate,\\n Chain,\\n)\\n\\n\\nclass LLMChainComponent(CustomComponent):\\n display_name = \\\"LLMChain\\\"\\n description = \\\"Chain to run queries against LLMs\\\"\\n\\n def build_config(self):\\n return {\\n \\\"prompt\\\": {\\\"display_name\\\": \\\"Prompt\\\"},\\n \\\"llm\\\": {\\\"display_name\\\": \\\"LLM\\\"},\\n \\\"memory\\\": {\\\"display_name\\\": \\\"Memory\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n prompt: BasePromptTemplate,\\n llm: BaseLanguageModel,\\n memory: Optional[BaseMemory] = None,\\n ) -> Union[Chain, Callable]:\\n return LLMChain(prompt=prompt, llm=llm, memory=memory)\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"display_name\":\"Memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseMemory\",\"list\":false},\"prompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"prompt\",\"display_name\":\"Prompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BasePromptTemplate\",\"list\":false}},\"description\":\"Chain to run queries against LLMs\",\"base_classes\":[\"Chain\",\"Callable\"],\"display_name\":\"LLMChain\",\"custom_fields\":{\"llm\":null,\"memory\":null,\"prompt\":null},\"output_types\":[\"LLMChain\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"LLMChain-RFYXY\"},\"positionAbsolute\":{\"x\":586.672100458868,\"y\":10.967049167706678}},{\"width\":384,\"height\":242,\"id\":\"ChatPromptTemplate-ce1sg\",\"type\":\"genericNode\",\"position\":{\"x\":395.598984452791,\"y\":612.188491773035},\"data\":{\"type\":\"ChatPromptTemplate\",\"node\":{\"template\":{\"messages\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"messages\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseMessagePromptTemplate\",\"list\":true},\"output_parser\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false},\"input_types\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"input_variables\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true},\"partial_variables\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"validate_template\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ChatPromptTemplate\"},\"description\":\"A prompt template for chat models.\",\"base_classes\":[\"ChatPromptTemplate\",\"BaseChatPromptTemplate\",\"BasePromptTemplate\"],\"display_name\":\"ChatPromptTemplate\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/chat/how_to/prompts\",\"beta\":false,\"error\":null},\"id\":\"ChatPromptTemplate-ce1sg\"},\"selected\":false,\"positionAbsolute\":{\"x\":395.598984452791,\"y\":612.188491773035},\"dragging\":false}],\"edges\":[{\"source\":\"OpenAI-3ZVDh\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“OpenAIล“,ล“BaseLLMล“,ล“BaseOpenAIล“,ล“BaseLanguageModelล“],ล“dataTypeล“:ล“OpenAIล“,ล“idล“:ล“OpenAI-3ZVDhล“}\",\"target\":\"LLMChain-RFYXY\",\"targetHandle\":\"{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“LLMChain-RFYXYล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLanguageModelล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"LLMChain-RFYXY\",\"inputTypes\":null,\"type\":\"BaseLanguageModel\"},\"sourceHandle\":{\"baseClasses\":[\"OpenAI\",\"BaseLLM\",\"BaseOpenAI\",\"BaseLanguageModel\"],\"dataType\":\"OpenAI\",\"id\":\"OpenAI-3ZVDh\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-OpenAI-3ZVDh{ล“baseClassesล“:[ล“OpenAIล“,ล“BaseLLMล“,ล“BaseOpenAIล“,ล“BaseLanguageModelล“],ล“dataTypeล“:ล“OpenAIล“,ล“idล“:ล“OpenAI-3ZVDhล“}-LLMChain-RFYXY{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“LLMChain-RFYXYล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLanguageModelล“}\"},{\"source\":\"ChatPromptTemplate-ce1sg\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“ChatPromptTemplateล“,ล“BaseChatPromptTemplateล“,ล“BasePromptTemplateล“],ล“dataTypeล“:ล“ChatPromptTemplateล“,ล“idล“:ล“ChatPromptTemplate-ce1sgล“}\",\"target\":\"LLMChain-RFYXY\",\"targetHandle\":\"{ล“fieldNameล“:ล“promptล“,ล“idล“:ล“LLMChain-RFYXYล“,ล“inputTypesล“:null,ล“typeล“:ล“BasePromptTemplateล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"prompt\",\"id\":\"LLMChain-RFYXY\",\"inputTypes\":null,\"type\":\"BasePromptTemplate\"},\"sourceHandle\":{\"baseClasses\":[\"ChatPromptTemplate\",\"BaseChatPromptTemplate\",\"BasePromptTemplate\"],\"dataType\":\"ChatPromptTemplate\",\"id\":\"ChatPromptTemplate-ce1sg\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-ChatPromptTemplate-ce1sg{ล“baseClassesล“:[ล“ChatPromptTemplateล“,ล“BaseChatPromptTemplateล“,ล“BasePromptTemplateล“],ล“dataTypeล“:ล“ChatPromptTemplateล“,ล“idล“:ล“ChatPromptTemplate-ce1sgล“}-LLMChain-RFYXY{ล“fieldNameล“:ล“promptล“,ล“idล“:ล“LLMChain-RFYXYล“,ล“inputTypesล“:null,ล“typeล“:ล“BasePromptTemplateล“}\"}],\"viewport\":{\"x\":8.832868402772647,\"y\":189.85443326477025,\"zoom\":0.6070974421975235}},\"is_component\":false,\"updated_at\":\"2023-12-04T22:50:19.584160\",\"folder\":null,\"id\":\"103766f0-1f50-427a-9ba7-2ab73343c524\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Perky Easley\",\"description\":\"Your Toolkit for Text Generation.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":626,\"id\":\"ChatOpenAI-VPh47\",\"type\":\"genericNode\",\"position\":{\"x\":-328.5742193020408,\"y\":-420.1025929438987},\"data\":{\"type\":\"ChatOpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain_core.callbacks.base.BaseCallbackHandler\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"gpt-3.5-turbo\",\"password\":false,\"options\":[\"gpt-4-1106-preview\",\"gpt-4\",\"gpt-4-32k\",\"gpt-3.5-turbo\",\"gpt-3.5-turbo-16k\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"sk-...\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":0.7,\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ChatOpenAI\"},\"description\":\"`OpenAI` Chat large language models API.\",\"base_classes\":[\"BaseChatModel\",\"ChatOpenAI\",\"BaseLanguageModel\",\"BaseLLM\"],\"display_name\":\"ChatOpenAI\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"ChatOpenAI-VPh47\"},\"selected\":false,\"positionAbsolute\":{\"x\":-328.5742193020408,\"y\":-420.1025929438987},\"dragging\":false},{\"width\":384,\"height\":338,\"id\":\"LLMChain-NgFyo\",\"type\":\"genericNode\",\"position\":{\"x\":225.3113389084088,\"y\":-193.3520019494289},\"data\":{\"type\":\"LLMChain\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Callable, Optional, Union\\n\\nfrom langchain.chains import LLMChain\\n\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import (\\n BaseLanguageModel,\\n BaseMemory,\\n BasePromptTemplate,\\n Chain,\\n)\\n\\n\\nclass LLMChainComponent(CustomComponent):\\n display_name = \\\"LLMChain\\\"\\n description = \\\"Chain to run queries against LLMs\\\"\\n\\n def build_config(self):\\n return {\\n \\\"prompt\\\": {\\\"display_name\\\": \\\"Prompt\\\"},\\n \\\"llm\\\": {\\\"display_name\\\": \\\"LLM\\\"},\\n \\\"memory\\\": {\\\"display_name\\\": \\\"Memory\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n prompt: BasePromptTemplate,\\n llm: BaseLanguageModel,\\n memory: Optional[BaseMemory] = None,\\n ) -> Union[Chain, Callable]:\\n return LLMChain(prompt=prompt, llm=llm, memory=memory)\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"display_name\":\"Memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseMemory\",\"list\":false},\"prompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"prompt\",\"display_name\":\"Prompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BasePromptTemplate\",\"list\":false}},\"description\":\"Chain to run queries against LLMs\",\"base_classes\":[\"Chain\",\"Callable\"],\"display_name\":\"LLMChain\",\"custom_fields\":{\"llm\":null,\"memory\":null,\"prompt\":null},\"output_types\":[\"LLMChain\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"LLMChain-NgFyo\"},\"selected\":false,\"positionAbsolute\":{\"x\":225.3113389084088,\"y\":-193.3520019494289},\"dragging\":false},{\"width\":384,\"height\":374,\"id\":\"PromptTemplate-oAFjh\",\"type\":\"genericNode\",\"position\":{\"x\":-342.62522294052764,\"y\":391.20629510686103},\"data\":{\"type\":\"PromptTemplate\",\"node\":{\"template\":{\"output_parser\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false},\"input_types\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"input_variables\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"links\"]},\"partial_variables\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"template\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"prompt\",\"list\":false,\"value\":\"Answer everything with links\\n{links}\"},\"template_format\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"f-string\",\"password\":false,\"name\":\"template_format\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":false},\"validate_template\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"PromptTemplate\",\"links\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"links\",\"display_name\":\"links\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"A prompt template for a language model.\",\"base_classes\":[\"BasePromptTemplate\",\"StringPromptTemplate\",\"PromptTemplate\"],\"name\":\"\",\"display_name\":\"PromptTemplate\",\"documentation\":\"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\"custom_fields\":{\"\":[\"links\"]},\"output_types\":[],\"full_path\":null,\"field_formatters\":{},\"beta\":false,\"error\":null},\"id\":\"PromptTemplate-oAFjh\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":-342.62522294052764,\"y\":391.20629510686103}}],\"edges\":[{\"source\":\"ChatOpenAI-VPh47\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“BaseChatModelล“,ล“ChatOpenAIล“,ล“BaseLanguageModelล“,ล“BaseLLMล“],ล“dataTypeล“:ล“ChatOpenAIล“,ล“idล“:ล“ChatOpenAI-VPh47ล“}\",\"target\":\"LLMChain-NgFyo\",\"targetHandle\":\"{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“LLMChain-NgFyoล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLanguageModelล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"LLMChain-NgFyo\",\"inputTypes\":null,\"type\":\"BaseLanguageModel\"},\"sourceHandle\":{\"baseClasses\":[\"BaseChatModel\",\"ChatOpenAI\",\"BaseLanguageModel\",\"BaseLLM\"],\"dataType\":\"ChatOpenAI\",\"id\":\"ChatOpenAI-VPh47\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-ChatOpenAI-VPh47{ล“baseClassesล“:[ล“BaseChatModelล“,ล“ChatOpenAIล“,ล“BaseLanguageModelล“,ล“BaseLLMล“],ล“dataTypeล“:ล“ChatOpenAIล“,ล“idล“:ล“ChatOpenAI-VPh47ล“}-LLMChain-NgFyo{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“LLMChain-NgFyoล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLanguageModelล“}\"},{\"source\":\"PromptTemplate-oAFjh\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“BasePromptTemplateล“,ล“StringPromptTemplateล“,ล“PromptTemplateล“],ล“dataTypeล“:ล“PromptTemplateล“,ล“idล“:ล“PromptTemplate-oAFjhล“}\",\"target\":\"LLMChain-NgFyo\",\"targetHandle\":\"{ล“fieldNameล“:ล“promptล“,ล“idล“:ล“LLMChain-NgFyoล“,ล“inputTypesล“:null,ล“typeล“:ล“BasePromptTemplateล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"prompt\",\"id\":\"LLMChain-NgFyo\",\"inputTypes\":null,\"type\":\"BasePromptTemplate\"},\"sourceHandle\":{\"baseClasses\":[\"BasePromptTemplate\",\"StringPromptTemplate\",\"PromptTemplate\"],\"dataType\":\"PromptTemplate\",\"id\":\"PromptTemplate-oAFjh\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-PromptTemplate-oAFjh{ล“baseClassesล“:[ล“BasePromptTemplateล“,ล“StringPromptTemplateล“,ล“PromptTemplateล“],ล“dataTypeล“:ล“PromptTemplateล“,ล“idล“:ล“PromptTemplate-oAFjhล“}-LLMChain-NgFyo{ล“fieldNameล“:ล“promptล“,ล“idล“:ล“LLMChain-NgFyoล“,ล“inputTypesล“:null,ล“typeล“:ล“BasePromptTemplateล“}\"}],\"viewport\":{\"x\":338.6546182690814,\"y\":53.026340800283265,\"zoom\":0.7169776240079143}},\"is_component\":false,\"updated_at\":\"2023-12-04T22:53:25.148460\",\"folder\":null,\"id\":\"a794fc48-5e9b-42a3-924f-7fe610500035\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"(D) Basic Chat (1) (4)\",\"description\":\"Simplest possible chat model\",\"data\":{\"nodes\":[{\"width\":384,\"height\":626,\"id\":\"ChatOpenAI-fBcfh\",\"type\":\"genericNode\",\"position\":{\"x\":228.87326389541306,\"y\":465.8628482073749},\"data\":{\"type\":\"ChatOpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain.callbacks.base.BaseCallbackHandler\",\"list\":true},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":6,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"gpt-3.5-turbo\",\"password\":false,\"options\":[\"gpt-3.5-turbo-0613\",\"gpt-3.5-turbo\",\"gpt-3.5-turbo-16k-0613\",\"gpt-3.5-turbo-16k\",\"gpt-4-0613\",\"gpt-4-32k-0613\",\"gpt-4\",\"gpt-4-32k\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"sk-...\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false,\"value\":60},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":0.7,\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ChatOpenAI\"},\"description\":\"`OpenAI` Chat large language models API.\",\"base_classes\":[\"BaseChatModel\",\"BaseLanguageModel\",\"ChatOpenAI\",\"BaseLLM\"],\"display_name\":\"ChatOpenAI\",\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai\"},\"id\":\"ChatOpenAI-fBcfh\",\"value\":null},\"selected\":false,\"dragging\":false,\"positionAbsolute\":{\"x\":228.87326389541306,\"y\":465.8628482073749}},{\"width\":384,\"height\":310,\"id\":\"ConversationChain-bVNex\",\"type\":\"genericNode\",\"position\":{\"x\":806,\"y\":554},\"data\":{\"type\":\"ConversationChain\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain.callbacks.base.BaseCallbackHandler\",\"list\":true},\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseMemory\",\"list\":false},\"output_parser\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":{\"_type\":\"default\"},\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLLMOutputParser\",\"list\":false},\"prompt\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":{\"input_variables\":[\"history\",\"input\"],\"output_parser\":null,\"partial_variables\":{},\"template\":\"The following is a friendly conversation between a human and an AI. The AI is talkative and provides lots of specific details from its context. If the AI does not know the answer to a question, it truthfully says it does not know.\\n\\nCurrent conversation:\\n{history}\\nHuman: {input}\\nAI:\",\"template_format\":\"f-string\",\"validate_template\":true,\"_type\":\"prompt\"},\"password\":false,\"name\":\"prompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BasePromptTemplate\",\"list\":false},\"input_key\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"input\",\"password\":false,\"name\":\"input_key\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"llm_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"llm_kwargs\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"output_key\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"response\",\"password\":false,\"name\":\"output_key\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"return_final_only\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":true,\"password\":false,\"name\":\"return_final_only\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ConversationChain\"},\"description\":\"Chain to have a conversation and load context from memory.\",\"base_classes\":[\"ConversationChain\",\"Chain\",\"LLMChain\",\"function\"],\"display_name\":\"ConversationChain\",\"documentation\":\"\"},\"id\":\"ConversationChain-bVNex\",\"value\":null},\"selected\":false,\"dragging\":false,\"positionAbsolute\":{\"x\":806,\"y\":554}}],\"edges\":[{\"source\":\"ChatOpenAI-fBcfh\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“BaseChatModelล“,ล“BaseLanguageModelล“,ล“ChatOpenAIล“,ล“BaseLLMล“],ล“dataTypeล“:ล“ChatOpenAIล“,ล“idล“:ล“ChatOpenAI-fBcfhล“}\",\"target\":\"ConversationChain-bVNex\",\"targetHandle\":\"{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“ConversationChain-bVNexล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLanguageModelล“}\",\"className\":\"stroke-gray-900 stroke-connection\",\"id\":\"reactflow__edge-ChatOpenAI-fBcfh{ล“baseClassesล“:[ล“BaseChatModelล“,ล“BaseLanguageModelล“,ล“ChatOpenAIล“,ล“BaseLLMล“],ล“dataTypeล“:ล“ChatOpenAIล“,ล“idล“:ล“ChatOpenAI-fBcfhล“}-ConversationChain-bVNex{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“ConversationChain-bVNexล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLanguageModelล“}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"BaseChatModel\",\"BaseLanguageModel\",\"ChatOpenAI\",\"BaseLLM\"],\"dataType\":\"ChatOpenAI\",\"id\":\"ChatOpenAI-fBcfh\"},\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"ConversationChain-bVNex\",\"inputTypes\":null,\"type\":\"BaseLanguageModel\"}},\"style\":{\"stroke\":\"#555\"},\"animated\":false}],\"viewport\":{\"x\":-118.21416568593895,\"y\":-240.64815770363373,\"zoom\":0.7642485855675408}},\"is_component\":false,\"updated_at\":\"2023-12-04T22:57:55.879806\",\"folder\":null,\"id\":\"bddebeea-b80a-4b28-8895-c4425687dcce\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Directory Loader\",\"description\":\"Generic File Loader\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"import os\\n\\nfrom langchain.schema import Document\\nfrom langflow import CustomComponent\\nimport glob\\n\\nclass DirectoryLoaderComponent(CustomComponent):\\n display_name: str = \\\"Directory Loader\\\"\\n description: str = \\\"Generic File Loader\\\"\\n beta = True\\n loaders_info = [\\n {\\n \\\"loader\\\": \\\"AirbyteJSONLoader\\\",\\n \\\"name\\\": \\\"Airbyte JSON (.jsonl)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.AirbyteJSONLoader\\\",\\n \\\"defaultFor\\\": [\\\"jsonl\\\"],\\n \\\"allowdTypes\\\": [\\\"jsonl\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"JSONLoader\\\",\\n \\\"name\\\": \\\"JSON (.json)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.JSONLoader\\\",\\n \\\"defaultFor\\\": [\\\"json\\\"],\\n \\\"allowdTypes\\\": [\\\"json\\\"],\\n \\\"kwargs\\\": {\\\"jq_schema\\\": \\\".\\\", \\\"text_content\\\": False}\\n },\\n {\\n \\\"loader\\\": \\\"BSHTMLLoader\\\",\\n \\\"name\\\": \\\"BeautifulSoup4 HTML (.html, .htm)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.BSHTMLLoader\\\",\\n \\\"allowdTypes\\\": [\\\"html\\\", \\\"htm\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"CSVLoader\\\",\\n \\\"name\\\": \\\"CSV (.csv)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.CSVLoader\\\",\\n \\\"defaultFor\\\": [\\\"csv\\\"],\\n \\\"allowdTypes\\\": [\\\"csv\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"CoNLLULoader\\\",\\n \\\"name\\\": \\\"CoNLL-U (.conllu)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.CoNLLULoader\\\",\\n \\\"defaultFor\\\": [\\\"conllu\\\"],\\n \\\"allowdTypes\\\": [\\\"conllu\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"EverNoteLoader\\\",\\n \\\"name\\\": \\\"EverNote (.enex)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.EverNoteLoader\\\",\\n \\\"defaultFor\\\": [\\\"enex\\\"],\\n \\\"allowdTypes\\\": [\\\"enex\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"FacebookChatLoader\\\",\\n \\\"name\\\": \\\"Facebook Chat (.json)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.FacebookChatLoader\\\",\\n \\\"allowdTypes\\\": [\\\"json\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"OutlookMessageLoader\\\",\\n \\\"name\\\": \\\"Outlook Message (.msg)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.OutlookMessageLoader\\\",\\n \\\"defaultFor\\\": [\\\"msg\\\"],\\n \\\"allowdTypes\\\": [\\\"msg\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"PyPDFLoader\\\",\\n \\\"name\\\": \\\"PyPDF (.pdf)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.PyPDFLoader\\\",\\n \\\"defaultFor\\\": [\\\"pdf\\\"],\\n \\\"allowdTypes\\\": [\\\"pdf\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"STRLoader\\\",\\n \\\"name\\\": \\\"Subtitle (.str)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.STRLoader\\\",\\n \\\"defaultFor\\\": [\\\"str\\\"],\\n \\\"allowdTypes\\\": [\\\"str\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"TextLoader\\\",\\n \\\"name\\\": \\\"Text (.txt)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.TextLoader\\\",\\n \\\"defaultFor\\\": [\\\"txt\\\"],\\n \\\"allowdTypes\\\": [\\\"txt\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"UnstructuredEmailLoader\\\",\\n \\\"name\\\": \\\"Unstructured Email (.eml)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.UnstructuredEmailLoader\\\",\\n \\\"defaultFor\\\": [\\\"eml\\\"],\\n \\\"allowdTypes\\\": [\\\"eml\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"UnstructuredHTMLLoader\\\",\\n \\\"name\\\": \\\"Unstructured HTML (.html, .htm)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.UnstructuredHTMLLoader\\\",\\n \\\"defaultFor\\\": [\\\"html\\\", \\\"htm\\\"],\\n \\\"allowdTypes\\\": [\\\"html\\\", \\\"htm\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"UnstructuredMarkdownLoader\\\",\\n \\\"name\\\": \\\"Unstructured Markdown (.md)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.UnstructuredMarkdownLoader\\\",\\n \\\"defaultFor\\\": [\\\"md\\\"],\\n \\\"allowdTypes\\\": [\\\"md\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"UnstructuredPowerPointLoader\\\",\\n \\\"name\\\": \\\"Unstructured PowerPoint (.pptx)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.UnstructuredPowerPointLoader\\\",\\n \\\"defaultFor\\\": [\\\"pptx\\\"],\\n \\\"allowdTypes\\\": [\\\"pptx\\\"],\\n },\\n {\\n \\\"loader\\\": \\\"UnstructuredWordLoader\\\",\\n \\\"name\\\": \\\"Unstructured Word (.docx)\\\",\\n \\\"import\\\": \\\"langchain.document_loaders.UnstructuredWordLoader\\\",\\n \\\"defaultFor\\\": [\\\"docx\\\"],\\n \\\"allowdTypes\\\": [\\\"docx\\\"],\\n },\\n]\\n\\n\\n def build_config(self):\\n loader_options = [\\\"Automatic\\\"] + [\\n loader_info[\\\"name\\\"] for loader_info in self.loaders_info\\n ]\\n\\n file_types = []\\n suffixes = []\\n\\n for loader_info in self.loaders_info:\\n if \\\"allowedTypes\\\" in loader_info:\\n file_types.extend(loader_info[\\\"allowedTypes\\\"])\\n suffixes.extend([f\\\".{ext}\\\" for ext in loader_info[\\\"allowedTypes\\\"]])\\n\\n return {\\n \\\"directory_path\\\": {\\n \\\"display_name\\\": \\\"Directory Path\\\",\\n \\\"required\\\": True,\\n },\\n \\\"loader\\\": {\\n \\\"display_name\\\": \\\"Loader\\\",\\n \\\"is_list\\\": True,\\n \\\"required\\\": True,\\n \\\"options\\\": loader_options,\\n \\\"value\\\": \\\"Automatic\\\",\\n },\\n }\\n\\n def build(self, directory_path: str, loader: str) -> Document:\\n # Verifique se o diretรณrio existe\\n if not os.path.exists(directory_path):\\n raise ValueError(f\\\"Directory not found: {directory_path}\\\")\\n\\n files = glob.glob(directory_path + \\\"/*.*\\\")\\n\\n\\n loader_info = None\\n if loader == \\\"Automatic\\\":\\n for file in files:\\n file_type = file.split(\\\".\\\")[-1]\\n\\n\\n for info in self.loaders_info:\\n if \\\"defaultFor\\\" in info:\\n if file_type in info[\\\"defaultFor\\\"]:\\n loader_info = info\\n break\\n if loader_info:\\n break\\n\\n if not loader_info:\\n raise ValueError(\\n \\\"No default loader found for any file in the directory\\\"\\n )\\n\\n else:\\n for info in self.loaders_info:\\n if info[\\\"name\\\"] == loader:\\n loader_info = info\\n break\\n\\n if not loader_info:\\n raise ValueError(f\\\"Loader {loader} not found in the loader info list\\\")\\n\\n loader_import = loader_info[\\\"import\\\"]\\n module_name, class_name = loader_import.rsplit(\\\".\\\", 1)\\n\\n try:\\n # Importe o loader dinamicamente\\n loader_module = __import__(module_name, fromlist=[class_name])\\n loader_instance = getattr(loader_module, class_name)\\n except ImportError as e:\\n raise ValueError(\\n f\\\"Loader {loader} could not be imported\\\\nLoader info:\\\\n{loader_info}\\\"\\n ) from e\\n\\n results = []\\n for file in files:\\n file_path = os.path.join(directory_path, file)\\n kwargs = loader_info.get(\\\"kwargs\\\", {})\\n result = loader_instance(file_path=file_path, **kwargs).load()\\n results.append(result)\\n self.status = results\\n return results\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"directory_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"directory_path\",\"display_name\":\"Directory Path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"/Users/ogabrielluiz/Projects/langflow2/docs\"},\"loader\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"Automatic\",\"password\":false,\"options\":[\"Automatic\",\"Airbyte JSON (.jsonl)\",\"JSON (.json)\",\"BeautifulSoup4 HTML (.html, .htm)\",\"CSV (.csv)\",\"CoNLL-U (.conllu)\",\"EverNote (.enex)\",\"Facebook Chat (.json)\",\"Outlook Message (.msg)\",\"PyPDF (.pdf)\",\"Subtitle (.str)\",\"Text (.txt)\",\"Unstructured Email (.eml)\",\"Unstructured HTML (.html, .htm)\",\"Unstructured Markdown (.md)\",\"Unstructured PowerPoint (.pptx)\",\"Unstructured Word (.docx)\"],\"name\":\"loader\",\"display_name\":\"Loader\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true}},\"description\":\"Generic File Loader\",\"base_classes\":[\"Document\"],\"display_name\":\"Directory Loader\",\"custom_fields\":{\"directory_path\":null,\"loader\":null},\"output_types\":[\"Document\"],\"documentation\":\"\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"CustomComponent-Ip6tG\"},\"id\":\"CustomComponent-Ip6tG\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-04T22:58:38.570303\",\"folder\":null,\"id\":\"5fe4debc-b6a7-45d4-a694-c02d8aa93b08\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Whisper Transcriber\",\"description\":\"Converts audio to text using OpenAI's Whisper.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom typing import Optional, List, Dict, Union\\nfrom langflow.field_typing import (\\n AgentExecutor,\\n BaseChatMemory,\\n BaseLanguageModel,\\n BaseLLM,\\n BaseLoader,\\n BaseMemory,\\n BaseOutputParser,\\n BasePromptTemplate,\\n BaseRetriever,\\n Callable,\\n Chain,\\n ChatPromptTemplate,\\n Data,\\n Document,\\n Embeddings,\\n NestedDict,\\n Object,\\n PromptTemplate,\\n TextSplitter,\\n Tool,\\n VectorStore,\\n)\\n\\nfrom openai import OpenAI\\nclass Component(CustomComponent):\\n display_name: str = \\\"Whisper Transcriber\\\"\\n description: str = \\\"Converts audio to text using OpenAI's Whisper.\\\"\\n\\n def build_config(self):\\n return {\\\"audio\\\":{\\\"field_type\\\":\\\"file\\\",\\\"suffixes\\\":[\\\".mp3\\\", \\\".mp4\\\", \\\".m4a\\\"]},\\\"OpenAIKey\\\":{\\\"field_type\\\":\\\"str\\\",\\\"password\\\":True}}\\n\\n def build(self, audio:str, OpenAIKey:str) -> str:\\n \\n # TODO: if output path, persist & load it instead\\n \\n client = OpenAI(api_key=OpenAIKey)\\n \\n audio_file= open(audio, \\\"rb\\\")\\n transcript = client.audio.transcriptions.create(\\n model=\\\"whisper-1\\\", \\n file=audio_file,\\n response_format=\\\"text\\\"\\n )\\n \\n \\n self.status = transcript\\n return transcript\\n\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"OpenAIKey\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"OpenAIKey\",\"display_name\":\"OpenAIKey\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"audio\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"suffixes\":[\".mp3\",\".mp4\",\".m4a\"],\"password\":false,\"name\":\"audio\",\"display_name\":\"audio\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"file_path\":\"/Users/rodrigonader/Library/Caches/langflow/19b3e1c9-90bf-405f-898a-e982f47adf76/a3308ce7e9b10088fcd985aabb6d17b012c6b6e81ff8806356574474c9d10229.m4a\",\"value\":\"Audio Recording 2023-11-29 at 12.12.04.m4a\"}},\"description\":\"Converts audio to text using OpenAI's Whisper.\",\"base_classes\":[\"str\"],\"display_name\":\"Whisper Transcriber\",\"custom_fields\":{\"OpenAIKey\":null,\"audio\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"CustomComponent-GJRrs\"},\"id\":\"CustomComponent-GJRrs\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-04T22:58:39.710502\",\"folder\":null,\"id\":\"bd9e911d-46bd-429f-aa75-dd740430695e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Youtube Conversation\",\"description\":\"Craft Meaningful Interactions, Generate Value.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":589,\"id\":\"CustomComponent-h0NSI\",\"type\":\"genericNode\",\"position\":{\"x\":714.9531293402755,\"y\":0.4994374160582993},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"import requests\\nfrom langflow import CustomComponent\\nfrom langchain.llms.base import BaseLLM\\nfrom langchain.schema import Document\\nfrom langchain.document_loaders import YoutubeLoader\\n\\n# Example usage:\\n\\nclass YourComponent(CustomComponent):\\n display_name: str = \\\"YouTube Transcript\\\"\\n description: str = \\\"YouTube transcripts refer to the written text versions of the spoken content in a video uploaded to the YouTube platform.\\\"\\n\\n def build_config(self):\\n return {\\\"url\\\": {\\\"multiline\\\": True, \\\"required\\\": True}}\\n\\n def build(self, url: str, llm: BaseLLM, dependencies: Document, language: str = \\\"en\\\") -> Document:\\n dependencies\\n response = requests.get(url)\\n loader = YoutubeLoader.from_youtube_url(url, add_video_info=True, language=[language])\\n result = loader.load()\\n self.repr_value = str(result)\\n return result\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"dependencies\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"dependencies\",\"display_name\":\"dependencies\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Document\",\"list\":false},\"language\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"en\",\"password\":false,\"name\":\"language\",\"display_name\":\"language\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"llm\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLLM\",\"list\":false},\"url\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"YouTube transcripts refer to the written text versions of the spoken content in a video uploaded to the YouTube platform.\",\"base_classes\":[\"Document\"],\"display_name\":\"YouTube Transcript\",\"custom_fields\":{\"dependencies\":null,\"language\":null,\"llm\":null,\"url\":null},\"output_types\":[\"Document\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-h0NSI\"},\"selected\":false,\"dragging\":false,\"positionAbsolute\":{\"x\":714.9531293402755,\"y\":0.4994374160582993}},{\"width\":384,\"height\":629,\"id\":\"ChatOpenAI-q61Y2\",\"type\":\"genericNode\",\"position\":{\"x\":18,\"y\":625.5521045590924},\"data\":{\"type\":\"ChatOpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain.callbacks.base.BaseCallbackHandler\",\"list\":true},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":6,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false,\"value\":\"\"},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"gpt-3.5-turbo-16k\",\"password\":false,\"options\":[\"gpt-3.5-turbo-0613\",\"gpt-3.5-turbo\",\"gpt-3.5-turbo-16k-0613\",\"gpt-3.5-turbo-16k\",\"gpt-4-0613\",\"gpt-4-32k-0613\",\"gpt-4\",\"gpt-4-32k\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":0.7,\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ChatOpenAI\"},\"description\":\"`OpenAI` Chat large language models API.\",\"base_classes\":[\"ChatOpenAI\",\"BaseChatModel\",\"BaseLanguageModel\",\"BaseLLM\"],\"display_name\":\"ChatOpenAI\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"ChatOpenAI-q61Y2\"},\"selected\":false,\"positionAbsolute\":{\"x\":18,\"y\":625.5521045590924},\"dragging\":false},{\"width\":384,\"height\":539,\"id\":\"Chroma-gVhy7\",\"type\":\"genericNode\",\"position\":{\"x\":2110.365967257855,\"y\":805.0149521868784},\"data\":{\"type\":\"Chroma\",\"node\":{\"template\":{\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"chromadb.Client\",\"list\":false},\"client_settings\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client_settings\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"chromadb.config.Setting\",\"list\":true},\"documents\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"documents\",\"display_name\":\"Documents\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Document\",\"list\":true},\"embedding\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"embedding\",\"display_name\":\"Embedding\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Embeddings\",\"list\":false},\"chroma_server_cors_allow_origins\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"chroma_server_cors_allow_origins\",\"display_name\":\"Chroma Server CORS Allow Origins\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"chroma_server_grpc_port\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"chroma_server_grpc_port\",\"display_name\":\"Chroma Server GRPC Port\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"chroma_server_host\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"chroma_server_host\",\"display_name\":\"Chroma Server Host\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"chroma_server_http_port\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"chroma_server_http_port\",\"display_name\":\"Chroma Server HTTP Port\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"chroma_server_ssl_enabled\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"chroma_server_ssl_enabled\",\"display_name\":\"Chroma Server SSL Enabled\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"collection_metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"collection_metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"collection_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"langchain\",\"password\":false,\"name\":\"collection_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"ids\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"ids\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"metadatas\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadatas\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":true},\"persist\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"persist\",\"display_name\":\"Persist\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"persist_directory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"persist_directory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"search_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"{}\",\"password\":false,\"name\":\"search_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"NestedDict\",\"list\":false},\"_type\":\"Chroma\"},\"description\":\"Create a Chroma vectorstore from a raw documents.\",\"base_classes\":[\"VectorStore\",\"Chroma\",\"BaseRetriever\",\"VectorStoreRetriever\"],\"display_name\":\"Chroma\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/vectorstores/integrations/chroma\",\"beta\":false,\"error\":null},\"id\":\"Chroma-gVhy7\"},\"selected\":false,\"positionAbsolute\":{\"x\":2110.365967257855,\"y\":805.0149521868784},\"dragging\":false},{\"width\":384,\"height\":501,\"id\":\"RecursiveCharacterTextSplitter-1eaOX\",\"type\":\"genericNode\",\"position\":{\"x\":1409.2872773444874,\"y\":19.45456141103284},\"data\":{\"type\":\"RecursiveCharacterTextSplitter\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Optional\\nfrom langflow import CustomComponent\\nfrom langchain.schema import Document\\nfrom langflow.utils.util import build_loader_repr_from_documents\\n\\n\\nclass RecursiveCharacterTextSplitterComponent(CustomComponent):\\n display_name: str = \\\"Recursive Character Text Splitter\\\"\\n description: str = \\\"Split text into chunks of a specified length.\\\"\\n documentation: str = \\\"https://docs.langflow.org/components/text-splitters#recursivecharactertextsplitter\\\"\\n\\n def build_config(self):\\n return {\\n \\\"documents\\\": {\\n \\\"display_name\\\": \\\"Documents\\\",\\n \\\"info\\\": \\\"The documents to split.\\\",\\n },\\n \\\"separators\\\": {\\n \\\"display_name\\\": \\\"Separators\\\",\\n \\\"info\\\": 'The characters to split on.\\\\nIf left empty defaults to [\\\"\\\\\\\\n\\\\\\\\n\\\", \\\"\\\\\\\\n\\\", \\\" \\\", \\\"\\\"].',\\n \\\"is_list\\\": True,\\n },\\n \\\"chunk_size\\\": {\\n \\\"display_name\\\": \\\"Chunk Size\\\",\\n \\\"info\\\": \\\"The maximum length of each chunk.\\\",\\n \\\"field_type\\\": \\\"int\\\",\\n \\\"value\\\": 1000,\\n },\\n \\\"chunk_overlap\\\": {\\n \\\"display_name\\\": \\\"Chunk Overlap\\\",\\n \\\"info\\\": \\\"The amount of overlap between chunks.\\\",\\n \\\"field_type\\\": \\\"int\\\",\\n \\\"value\\\": 200,\\n },\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n documents: list[Document],\\n separators: Optional[list[str]] = None,\\n chunk_size: Optional[int] = 1000,\\n chunk_overlap: Optional[int] = 200,\\n ) -> list[Document]:\\n \\\"\\\"\\\"\\n Split text into chunks of a specified length.\\n\\n Args:\\n separators (list[str]): The characters to split on.\\n chunk_size (int): The maximum length of each chunk.\\n chunk_overlap (int): The amount of overlap between chunks.\\n length_function (function): The function to use to calculate the length of the text.\\n\\n Returns:\\n list[str]: The chunks of text.\\n \\\"\\\"\\\"\\n from langchain.text_splitter import RecursiveCharacterTextSplitter\\n\\n if separators == \\\"\\\":\\n separators = None\\n elif separators:\\n # check if the separators list has escaped characters\\n # if there are escaped characters, unescape them\\n separators = [x.encode().decode(\\\"unicode-escape\\\") for x in separators]\\n\\n # Make sure chunk_size and chunk_overlap are ints\\n if isinstance(chunk_size, str):\\n chunk_size = int(chunk_size)\\n if isinstance(chunk_overlap, str):\\n chunk_overlap = int(chunk_overlap)\\n splitter = RecursiveCharacterTextSplitter(\\n separators=separators,\\n chunk_size=chunk_size,\\n chunk_overlap=chunk_overlap,\\n )\\n\\n docs = splitter.split_documents(documents)\\n self.repr_value = build_loader_repr_from_documents(docs)\\n return docs\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"chunk_overlap\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"50\",\"password\":false,\"name\":\"chunk_overlap\",\"display_name\":\"Chunk Overlap\",\"advanced\":false,\"dynamic\":false,\"info\":\"The amount of overlap between chunks.\",\"type\":\"int\",\"list\":false},\"chunk_size\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"400\",\"password\":false,\"name\":\"chunk_size\",\"display_name\":\"Chunk Size\",\"advanced\":false,\"dynamic\":false,\"info\":\"The maximum length of each chunk.\",\"type\":\"int\",\"list\":false},\"documents\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"documents\",\"display_name\":\"Documents\",\"advanced\":false,\"dynamic\":false,\"info\":\"The documents to split.\",\"type\":\"Document\",\"list\":true},\"separators\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"separators\",\"display_name\":\"Separators\",\"advanced\":false,\"dynamic\":false,\"info\":\"The characters to split on.\\nIf left empty defaults to [\\\"\\\\n\\\\n\\\", \\\"\\\\n\\\", \\\" \\\", \\\"\\\"].\",\"type\":\"str\",\"list\":true,\"value\":[\" \"]}},\"description\":\"Split text into chunks of a specified length.\",\"base_classes\":[\"Document\"],\"display_name\":\"Recursive Character Text Splitter\",\"custom_fields\":{\"chunk_overlap\":null,\"chunk_size\":null,\"documents\":null,\"separators\":null},\"output_types\":[\"RecursiveCharacterTextSplitter\"],\"documentation\":\"https://docs.langflow.org/components/text-splitters#recursivecharactertextsplitter\",\"beta\":true,\"error\":null},\"id\":\"RecursiveCharacterTextSplitter-1eaOX\"},\"selected\":false,\"positionAbsolute\":{\"x\":1409.2872773444874,\"y\":19.45456141103284},\"dragging\":false},{\"width\":384,\"height\":367,\"id\":\"OpenAIEmbeddings-cduOO\",\"type\":\"genericNode\",\"position\":{\"x\":1405.1176670984544,\"y\":1029.459061269321},\"data\":{\"type\":\"OpenAIEmbeddings\",\"node\":{\"template\":{\"allowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[],\"password\":false,\"name\":\"allowed_special\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Literal'all'\",\"list\":true},\"disallowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"all\",\"password\":false,\"name\":\"disallowed_special\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Literal'all'\",\"list\":true},\"chunk_size\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":1000,\"password\":false,\"name\":\"chunk_size\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"deployment\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"text-embedding-ada-002\",\"password\":false,\"name\":\"deployment\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"embedding_ctx_length\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":8191,\"password\":false,\"name\":\"embedding_ctx_length\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"{'Authorization': 'Bearer '}\",\"password\":false,\"name\":\"headers\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":6,\"password\":false,\"name\":\"max_retries\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"model\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"text-embedding-ada-002\",\"password\":false,\"name\":\"model\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_api_type\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_type\",\"display_name\":\"OpenAI API Type\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"openai_api_version\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_version\",\"display_name\":\"OpenAI API Version\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"show_progress_bar\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"show_progress_bar\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"skip_empty\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"skip_empty\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"_type\":\"OpenAIEmbeddings\"},\"description\":\"OpenAI embedding models.\",\"base_classes\":[\"Embeddings\",\"OpenAIEmbeddings\"],\"display_name\":\"OpenAIEmbeddings\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"OpenAIEmbeddings-cduOO\"},\"selected\":false,\"positionAbsolute\":{\"x\":1405.1176670984544,\"y\":1029.459061269321}},{\"width\":384,\"height\":339,\"id\":\"RetrievalQA-4PmTB\",\"type\":\"genericNode\",\"position\":{\"x\":2711.7786966415715,\"y\":709.4450828605463},\"data\":{\"type\":\"RetrievalQA\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain.callbacks.base.BaseCallbackHandler\",\"list\":true},\"combine_documents_chain\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"combine_documents_chain\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseCombineDocumentsChain\",\"list\":false},\"memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseMemory\",\"list\":false},\"retriever\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"retriever\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseRetriever\",\"list\":false},\"input_key\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"query\",\"password\":false,\"name\":\"input_key\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"output_key\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"result\",\"password\":false,\"name\":\"output_key\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"return_source_documents\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":true,\"password\":false,\"name\":\"return_source_documents\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"RetrievalQA\"},\"description\":\"Chain for question-answering against an index.\",\"base_classes\":[\"RetrievalQA\",\"Chain\",\"BaseRetrievalQA\",\"function\"],\"display_name\":\"RetrievalQA\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/chains/popular/vector_db_qa\",\"beta\":false,\"error\":null},\"id\":\"RetrievalQA-4PmTB\"},\"selected\":false,\"positionAbsolute\":{\"x\":2711.7786966415715,\"y\":709.4450828605463}},{\"width\":384,\"height\":333,\"id\":\"CombineDocsChain-yk0JF\",\"type\":\"genericNode\",\"position\":{\"x\":2125.6202053356537,\"y\":199.07708924409633},\"data\":{\"type\":\"CombineDocsChain\",\"node\":{\"template\":{\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"chain_type\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"stuff\",\"password\":false,\"options\":[\"stuff\",\"map_reduce\",\"map_rerank\",\"refine\"],\"name\":\"chain_type\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"_type\":\"load_qa_chain\"},\"description\":\"Load question answering chain.\",\"base_classes\":[\"BaseCombineDocumentsChain\",\"function\"],\"display_name\":\"CombineDocsChain\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"\",\"beta\":false,\"error\":null},\"id\":\"CombineDocsChain-yk0JF\"},\"selected\":false,\"positionAbsolute\":{\"x\":2125.6202053356537,\"y\":199.07708924409633},\"dragging\":false},{\"width\":384,\"height\":417,\"id\":\"CustomComponent-y6Wg0\",\"type\":\"genericNode\",\"position\":{\"x\":39.400034102832365,\"y\":-499.03551482195707},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\n\\nimport subprocess\\n\\nfrom langchain.llms.base import BaseLLM\\nfrom langchain.chains import LLMChain\\nfrom langchain.prompts import PromptTemplate\\nfrom langchain.schema import Document\\n\\nfrom typing import List\\n\\n\\nclass YourComponent(CustomComponent):\\n display_name: str = \\\"PIP Install\\\"\\n description: str = \\\"Create any custom component you want!\\\"\\n\\n def build(self, libs: List[str]) -> Document:\\n def install_package(package_name):\\n subprocess.check_call([\\\"pip\\\", \\\"install\\\", package_name])\\n for lib in libs:\\n install_package(lib)\\n return \\\"\\\"\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"libs\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"libs\",\"display_name\":\"libs\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"requests\",\"pytube\"]}},\"description\":\"Create any custom component you want!\",\"base_classes\":[\"Document\"],\"display_name\":\"PIP Install\",\"custom_fields\":{\"libs\":null},\"output_types\":[],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-y6Wg0\"},\"selected\":false,\"dragging\":false,\"positionAbsolute\":{\"x\":39.400034102832365,\"y\":-499.03551482195707}}],\"edges\":[{\"source\":\"ChatOpenAI-q61Y2\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“ChatOpenAIล“,ล“BaseChatModelล“,ล“BaseLanguageModelล“,ล“BaseLLMล“],ล“dataTypeล“:ล“ChatOpenAIล“,ล“idล“:ล“ChatOpenAI-q61Y2ล“}\",\"target\":\"CustomComponent-h0NSI\",\"targetHandle\":\"{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“CustomComponent-h0NSIล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLLMล“}\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-ChatOpenAI-q61Y2{ล“baseClassesล“:[ล“ChatOpenAIล“,ล“BaseChatModelล“,ล“BaseLanguageModelล“,ล“BaseLLMล“],ล“dataTypeล“:ล“ChatOpenAIล“,ล“idล“:ล“ChatOpenAI-q61Y2ล“}-CustomComponent-h0NSI{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“CustomComponent-h0NSIล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLLMล“}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"ChatOpenAI\",\"BaseChatModel\",\"BaseLanguageModel\",\"BaseLLM\"],\"dataType\":\"ChatOpenAI\",\"id\":\"ChatOpenAI-q61Y2\"},\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"CustomComponent-h0NSI\",\"inputTypes\":null,\"type\":\"BaseLLM\"}}},{\"source\":\"CustomComponent-y6Wg0\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“Documentล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-y6Wg0ล“}\",\"target\":\"CustomComponent-h0NSI\",\"targetHandle\":\"{ล“fieldNameล“:ล“dependenciesล“,ล“idล“:ล“CustomComponent-h0NSIล“,ล“inputTypesล“:null,ล“typeล“:ล“Documentล“}\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-y6Wg0{ล“baseClassesล“:[ล“Documentล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-y6Wg0ล“}-CustomComponent-h0NSI{ล“fieldNameล“:ล“dependenciesล“,ล“idล“:ล“CustomComponent-h0NSIล“,ล“inputTypesล“:null,ล“typeล“:ล“Documentล“}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"Document\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-y6Wg0\"},\"targetHandle\":{\"fieldName\":\"dependencies\",\"id\":\"CustomComponent-h0NSI\",\"inputTypes\":null,\"type\":\"Document\"}}},{\"source\":\"CustomComponent-h0NSI\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“Documentล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-h0NSIล“}\",\"target\":\"RecursiveCharacterTextSplitter-1eaOX\",\"targetHandle\":\"{ล“fieldNameล“:ล“documentsล“,ล“idล“:ล“RecursiveCharacterTextSplitter-1eaOXล“,ล“inputTypesล“:null,ล“typeล“:ล“Documentล“}\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-h0NSI{ล“baseClassesล“:[ล“Documentล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-h0NSIล“}-RecursiveCharacterTextSplitter-1eaOX{ล“fieldNameล“:ล“documentsล“,ล“idล“:ล“RecursiveCharacterTextSplitter-1eaOXล“,ล“inputTypesล“:null,ล“typeล“:ล“Documentล“}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"Document\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-h0NSI\"},\"targetHandle\":{\"fieldName\":\"documents\",\"id\":\"RecursiveCharacterTextSplitter-1eaOX\",\"inputTypes\":null,\"type\":\"Document\"}},\"selected\":false},{\"source\":\"OpenAIEmbeddings-cduOO\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“Embeddingsล“,ล“OpenAIEmbeddingsล“],ล“dataTypeล“:ล“OpenAIEmbeddingsล“,ล“idล“:ล“OpenAIEmbeddings-cduOOล“}\",\"target\":\"Chroma-gVhy7\",\"targetHandle\":\"{ล“fieldNameล“:ล“embeddingล“,ล“idล“:ล“Chroma-gVhy7ล“,ล“inputTypesล“:null,ล“typeล“:ล“Embeddingsล“}\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-OpenAIEmbeddings-cduOO{ล“baseClassesล“:[ล“Embeddingsล“,ล“OpenAIEmbeddingsล“],ล“dataTypeล“:ล“OpenAIEmbeddingsล“,ล“idล“:ล“OpenAIEmbeddings-cduOOล“}-Chroma-gVhy7{ล“fieldNameล“:ล“embeddingล“,ล“idล“:ล“Chroma-gVhy7ล“,ล“inputTypesล“:null,ล“typeล“:ล“Embeddingsล“}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"Embeddings\",\"OpenAIEmbeddings\"],\"dataType\":\"OpenAIEmbeddings\",\"id\":\"OpenAIEmbeddings-cduOO\"},\"targetHandle\":{\"fieldName\":\"embedding\",\"id\":\"Chroma-gVhy7\",\"inputTypes\":null,\"type\":\"Embeddings\"}}},{\"source\":\"RecursiveCharacterTextSplitter-1eaOX\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“Documentล“],ล“dataTypeล“:ล“RecursiveCharacterTextSplitterล“,ล“idล“:ล“RecursiveCharacterTextSplitter-1eaOXล“}\",\"target\":\"Chroma-gVhy7\",\"targetHandle\":\"{ล“fieldNameล“:ล“documentsล“,ล“idล“:ล“Chroma-gVhy7ล“,ล“inputTypesล“:null,ล“typeล“:ล“Documentล“}\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-RecursiveCharacterTextSplitter-1eaOX{ล“baseClassesล“:[ล“Documentล“],ล“dataTypeล“:ล“RecursiveCharacterTextSplitterล“,ล“idล“:ล“RecursiveCharacterTextSplitter-1eaOXล“}-Chroma-gVhy7{ล“fieldNameล“:ล“documentsล“,ล“idล“:ล“Chroma-gVhy7ล“,ล“inputTypesล“:null,ล“typeล“:ล“Documentล“}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"Document\"],\"dataType\":\"RecursiveCharacterTextSplitter\",\"id\":\"RecursiveCharacterTextSplitter-1eaOX\"},\"targetHandle\":{\"fieldName\":\"documents\",\"id\":\"Chroma-gVhy7\",\"inputTypes\":null,\"type\":\"Document\"}}},{\"source\":\"ChatOpenAI-q61Y2\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“ChatOpenAIล“,ล“BaseChatModelล“,ล“BaseLanguageModelล“,ล“BaseLLMล“],ล“dataTypeล“:ล“ChatOpenAIล“,ล“idล“:ล“ChatOpenAI-q61Y2ล“}\",\"target\":\"CombineDocsChain-yk0JF\",\"targetHandle\":\"{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“CombineDocsChain-yk0JFล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLanguageModelล“}\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-ChatOpenAI-q61Y2{ล“baseClassesล“:[ล“ChatOpenAIล“,ล“BaseChatModelล“,ล“BaseLanguageModelล“,ล“BaseLLMล“],ล“dataTypeล“:ล“ChatOpenAIล“,ล“idล“:ล“ChatOpenAI-q61Y2ล“}-CombineDocsChain-yk0JF{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“CombineDocsChain-yk0JFล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLanguageModelล“}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"ChatOpenAI\",\"BaseChatModel\",\"BaseLanguageModel\",\"BaseLLM\"],\"dataType\":\"ChatOpenAI\",\"id\":\"ChatOpenAI-q61Y2\"},\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"CombineDocsChain-yk0JF\",\"inputTypes\":null,\"type\":\"BaseLanguageModel\"}}},{\"source\":\"CombineDocsChain-yk0JF\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“BaseCombineDocumentsChainล“,ล“functionล“],ล“dataTypeล“:ล“CombineDocsChainล“,ล“idล“:ล“CombineDocsChain-yk0JFล“}\",\"target\":\"RetrievalQA-4PmTB\",\"targetHandle\":\"{ล“fieldNameล“:ล“combine_documents_chainล“,ล“idล“:ล“RetrievalQA-4PmTBล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseCombineDocumentsChainล“}\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CombineDocsChain-yk0JF{ล“baseClassesล“:[ล“BaseCombineDocumentsChainล“,ล“functionล“],ล“dataTypeล“:ล“CombineDocsChainล“,ล“idล“:ล“CombineDocsChain-yk0JFล“}-RetrievalQA-4PmTB{ล“fieldNameล“:ล“combine_documents_chainล“,ล“idล“:ล“RetrievalQA-4PmTBล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseCombineDocumentsChainล“}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"BaseCombineDocumentsChain\",\"function\"],\"dataType\":\"CombineDocsChain\",\"id\":\"CombineDocsChain-yk0JF\"},\"targetHandle\":{\"fieldName\":\"combine_documents_chain\",\"id\":\"RetrievalQA-4PmTB\",\"inputTypes\":null,\"type\":\"BaseCombineDocumentsChain\"}}},{\"source\":\"Chroma-gVhy7\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“VectorStoreล“,ล“Chromaล“,ล“BaseRetrieverล“,ล“VectorStoreRetrieverล“],ล“dataTypeล“:ล“Chromaล“,ล“idล“:ล“Chroma-gVhy7ล“}\",\"target\":\"RetrievalQA-4PmTB\",\"targetHandle\":\"{ล“fieldNameล“:ล“retrieverล“,ล“idล“:ล“RetrievalQA-4PmTBล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseRetrieverล“}\",\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-Chroma-gVhy7{ล“baseClassesล“:[ล“VectorStoreล“,ล“Chromaล“,ล“BaseRetrieverล“,ล“VectorStoreRetrieverล“],ล“dataTypeล“:ล“Chromaล“,ล“idล“:ล“Chroma-gVhy7ล“}-RetrievalQA-4PmTB{ล“fieldNameล“:ล“retrieverล“,ล“idล“:ล“RetrievalQA-4PmTBล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseRetrieverล“}\",\"data\":{\"sourceHandle\":{\"baseClasses\":[\"VectorStore\",\"Chroma\",\"BaseRetriever\",\"VectorStoreRetriever\"],\"dataType\":\"Chroma\",\"id\":\"Chroma-gVhy7\"},\"targetHandle\":{\"fieldName\":\"retriever\",\"id\":\"RetrievalQA-4PmTB\",\"inputTypes\":null,\"type\":\"BaseRetriever\"}}}],\"viewport\":{\"x\":189.54413265004274,\"y\":259.89949657174975,\"zoom\":0.291027508374689}},\"is_component\":false,\"updated_at\":\"2023-12-04T22:59:08.830269\",\"folder\":null,\"id\":\"bc7eb94b-6fc6-49cb-9b19-35347ba51afa\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Web Scraper - Content & Links\",\"description\":\"Fetch and parse text and links from a given URL.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":338,\"id\":\"LLMChain-H7PBy\",\"type\":\"genericNode\",\"position\":{\"x\":1682.494010974207,\"y\":275.5701585623092},\"data\":{\"type\":\"LLMChain\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Callable, Optional, Union\\n\\nfrom langchain.chains import LLMChain\\n\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import (\\n BaseLanguageModel,\\n BaseMemory,\\n BasePromptTemplate,\\n Chain,\\n)\\n\\n\\nclass LLMChainComponent(CustomComponent):\\n display_name = \\\"LLMChain\\\"\\n description = \\\"Chain to run queries against LLMs\\\"\\n\\n def build_config(self):\\n return {\\n \\\"prompt\\\": {\\\"display_name\\\": \\\"Prompt\\\"},\\n \\\"llm\\\": {\\\"display_name\\\": \\\"LLM\\\"},\\n \\\"memory\\\": {\\\"display_name\\\": \\\"Memory\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n prompt: BasePromptTemplate,\\n llm: BaseLanguageModel,\\n memory: Optional[BaseMemory] = None,\\n ) -> Union[Chain, Callable]:\\n return LLMChain(prompt=prompt, llm=llm, memory=memory)\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"display_name\":\"Memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseMemory\",\"list\":false},\"prompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"prompt\",\"display_name\":\"Prompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BasePromptTemplate\",\"list\":false}},\"description\":\"Chain to run queries against LLMs\",\"base_classes\":[\"Chain\",\"Callable\"],\"display_name\":\"LLMChain\",\"custom_fields\":{\"llm\":null,\"memory\":null,\"prompt\":null},\"output_types\":[\"LLMChain\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"LLMChain-H7PBy\"},\"selected\":false,\"positionAbsolute\":{\"x\":1682.494010974207,\"y\":275.5701585623092},\"dragging\":false},{\"width\":384,\"height\":626,\"id\":\"ChatOpenAI-VSAdc\",\"type\":\"genericNode\",\"position\":{\"x\":1002.4263147022411,\"y\":-198.2305006886859},\"data\":{\"type\":\"ChatOpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain_core.callbacks.base.BaseCallbackHandler\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false,\"value\":\"\"},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"gpt-4-1106-preview\",\"password\":false,\"options\":[\"gpt-4-1106-preview\",\"gpt-4\",\"gpt-4-32k\",\"gpt-3.5-turbo\",\"gpt-3.5-turbo-16k\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"sk-...\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"0.1\",\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ChatOpenAI\"},\"description\":\"`OpenAI` Chat large language models API.\",\"base_classes\":[\"BaseLanguageModel\",\"ChatOpenAI\",\"BaseChatModel\",\"BaseLLM\"],\"display_name\":\"ChatOpenAI\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"ChatOpenAI-VSAdc\"},\"selected\":false,\"dragging\":false,\"positionAbsolute\":{\"x\":1002.4263147022411,\"y\":-198.2305006886859}},{\"width\":384,\"height\":374,\"data\":{\"id\":\"GroupNode-WXPMk\",\"type\":\"PromptTemplate\",\"node\":{\"output_types\":[],\"display_name\":\"Web Scraper\",\"documentation\":\"\",\"base_classes\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"description\":\"Fetch and parse text and links from a given URL.\",\"template\":{\"code_CustomComponent-f6nOg\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport html2text\\n\\nclass ConvertHTMLToMarkdown(CustomComponent):\\n display_name: str = \\\"HTML to Markdown\\\"\\n description: str = \\\"Converts HTML content to Markdown format.\\\"\\n\\n def build(self, html_content: Data, ignore_links: bool = False) -> str:\\n converter = html2text.HTML2Text()\\n converter.ignore_links = ignore_links\\n markdown_text = converter.handle(html_content)\\n self.status = markdown_text\\n return markdown_text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-f6nOg\",\"field\":\"code\"},\"display_name\":\"Code\"},\"ignore_links_CustomComponent-f6nOg\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"ignore_links\",\"display_name\":\"ignore_links\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-f6nOg\",\"field\":\"ignore_links\"}},\"code_CustomComponent-FGzJJ\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"Fetch HTML\\\"\\n description: str = \\\"Fetches HTML content from a specified URL.\\\"\\n \\n def build_config(self):\\n return {\\\"url\\\": {\\\"input_types\\\": [\\\"Data\\\", \\\"str\\\"]}} \\n\\n def build(self, url: str) -> Data:\\n response = requests.get(url)\\n self.status = str(response) + \\\"\\\\n\\\\n\\\" + response.text\\n return response.text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-FGzJJ\",\"field\":\"code\"},\"display_name\":\"Code\"},\"code_CustomComponent-0XtUN\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from bs4 import BeautifulSoup\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ParseHTMLContent(CustomComponent):\\n display_name: str = \\\"Parse HTML\\\"\\n description: str = \\\"Parses HTML content using Beautiful Soup.\\\"\\n\\n def build(self, html_content: Data) -> Data:\\n soup = BeautifulSoup(html_content, 'html.parser')\\n self.status = soup\\n return soup\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-0XtUN\",\"field\":\"code\"},\"display_name\":\"Code\"},\"code_CustomComponent-ODIcp\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ExtractHyperlinks(CustomComponent):\\n display_name: str = \\\"Extract Hyperlinks\\\"\\n description: str = \\\"Extracts hyperlinks from parsed HTML content.\\\"\\n\\n def build(self, soup: Data) -> list:\\n links = [link.get('href') for link in soup.find_all('a')]\\n self.status = links\\n return links\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-ODIcp\",\"field\":\"code\"},\"display_name\":\"Code\"},\"output_parser_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"output_parser\"},\"display_name\":\"Output Parser\"},\"input_types_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"input_types\"},\"display_name\":\"Input Types\"},\"input_variables_PromptTemplate-H9Udy\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"url\",\"html_markdown\",\"html_links\",\"query\"],\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"input_variables\"},\"display_name\":\"Input Variables\"},\"partial_variables_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"partial_variables\"},\"display_name\":\"Partial Variables\"},\"template_PromptTemplate-H9Udy\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"template\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"prompt\",\"list\":false,\"value\":\"Below is the HTML content (as markdown) and hyperlinks extracted from {url}\\n\\n---\\n\\nContent:\\n\\n{html_markdown}\\n\\n---\\n\\nLinks:\\n\\n{html_links}\\n\\n---\\n\\nAnswer the user query as best as possible.\\n\\nUser query:\\n\\n{query}\\n\\nAnswer:\\n\",\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"template\"},\"display_name\":\"Template\"},\"template_format_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"f-string\",\"password\":false,\"name\":\"template_format\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"template_format\"},\"display_name\":\"Template Format\"},\"validate_template_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"validate_template\"},\"display_name\":\"Validate Template\"},\"query_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"give me links\",\"password\":false,\"name\":\"query\",\"display_name\":\"query\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"query\"}},\"code_CustomComponent-OACE0\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"URL Input\\\"\\n\\n def build(self, url: str) -> str:\\n return url\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-OACE0\",\"field\":\"code\"},\"display_name\":\"Code\"},\"url_CustomComponent-OACE0\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-OACE0\",\"field\":\"url\"},\"value\":\"https://paperswithcode.com/\"},\"code_CustomComponent-whsQ5\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\n\\nclass ListToMarkdownBullets(CustomComponent):\\n display_name: str = \\\"List to Bullets\\\"\\n description: str = \\\"Converts a Python list into Markdown bullet points.\\\"\\n\\n def build(self, items: list) -> str:\\n markdown_bullets = '\\\\n'.join(f'* {item}' for item in items)\\n return markdown_bullets\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-whsQ5\",\"field\":\"code\"},\"display_name\":\"Code\"}},\"flow\":{\"data\":{\"nodes\":[{\"width\":384,\"height\":405,\"id\":\"CustomComponent-f6nOg\",\"type\":\"genericNode\",\"position\":{\"x\":665.2835942536854,\"y\":-371.7823429271119},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport html2text\\n\\nclass ConvertHTMLToMarkdown(CustomComponent):\\n display_name: str = \\\"HTML to Markdown\\\"\\n description: str = \\\"Converts HTML content to Markdown format.\\\"\\n\\n def build(self, html_content: Data, ignore_links: bool = False) -> str:\\n converter = html2text.HTML2Text()\\n converter.ignore_links = ignore_links\\n markdown_text = converter.handle(html_content)\\n self.status = markdown_text\\n return markdown_text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"html_content\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"html_content\",\"display_name\":\"html_content\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false},\"ignore_links\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"ignore_links\",\"display_name\":\"ignore_links\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false}},\"description\":\"Converts HTML content to Markdown format.\",\"base_classes\":[\"str\"],\"display_name\":\"HTML to Markdown\",\"custom_fields\":{\"html_content\":null,\"ignore_links\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-f6nOg\"},\"selected\":true,\"positionAbsolute\":{\"x\":665.2835942536854,\"y\":-371.7823429271119},\"dragging\":false},{\"width\":384,\"height\":375,\"id\":\"CustomComponent-FGzJJ\",\"type\":\"genericNode\",\"position\":{\"x\":-464.4553400967736,\"y\":-225.62715888255525},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"Fetch HTML\\\"\\n description: str = \\\"Fetches HTML content from a specified URL.\\\"\\n \\n def build_config(self):\\n return {\\\"url\\\": {\\\"input_types\\\": [\\\"Data\\\", \\\"str\\\"]}} \\n\\n def build(self, url: str) -> Data:\\n response = requests.get(url)\\n self.status = str(response) + \\\"\\\\n\\\\n\\\" + response.text\\n return response.text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"url\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"input_types\":[\"Data\",\"str\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"}},\"description\":\"Fetches HTML content from a specified URL.\",\"base_classes\":[\"Data\"],\"display_name\":\"Fetch HTML\",\"custom_fields\":{\"url\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-FGzJJ\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":-464.4553400967736,\"y\":-225.62715888255525}},{\"width\":384,\"height\":329,\"id\":\"CustomComponent-0XtUN\",\"type\":\"genericNode\",\"position\":{\"x\":214.00059169497604,\"y\":177.27071061129823},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from bs4 import BeautifulSoup\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ParseHTMLContent(CustomComponent):\\n display_name: str = \\\"Parse HTML\\\"\\n description: str = \\\"Parses HTML content using Beautiful Soup.\\\"\\n\\n def build(self, html_content: Data) -> Data:\\n soup = BeautifulSoup(html_content, 'html.parser')\\n self.status = soup\\n return soup\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"html_content\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"html_content\",\"display_name\":\"html_content\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false}},\"description\":\"Parses HTML content using Beautiful Soup.\",\"base_classes\":[\"Data\"],\"display_name\":\"Parse HTML\",\"custom_fields\":{\"html_content\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-0XtUN\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":214.00059169497604,\"y\":177.27071061129823}},{\"width\":384,\"height\":329,\"id\":\"CustomComponent-ODIcp\",\"type\":\"genericNode\",\"position\":{\"x\":845.0502195222412,\"y\":366.54344452019404},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ExtractHyperlinks(CustomComponent):\\n display_name: str = \\\"Extract Hyperlinks\\\"\\n description: str = \\\"Extracts hyperlinks from parsed HTML content.\\\"\\n\\n def build(self, soup: Data) -> list:\\n links = [link.get('href') for link in soup.find_all('a')]\\n self.status = links\\n return links\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"soup\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"soup\",\"display_name\":\"soup\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false}},\"description\":\"Extracts hyperlinks from parsed HTML content.\",\"base_classes\":[\"list\"],\"display_name\":\"Extract Hyperlinks\",\"custom_fields\":{\"soup\":null},\"output_types\":[\"list\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-ODIcp\"},\"selected\":true,\"positionAbsolute\":{\"x\":845.0502195222412,\"y\":366.54344452019404},\"dragging\":false},{\"width\":384,\"height\":657,\"id\":\"PromptTemplate-H9Udy\",\"type\":\"genericNode\",\"position\":{\"x\":2230.389721706283,\"y\":584.4905083765256},\"data\":{\"type\":\"PromptTemplate\",\"node\":{\"template\":{\"output_parser\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false},\"input_types\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"input_variables\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"url\",\"html_markdown\",\"html_links\",\"query\"]},\"partial_variables\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"template\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"prompt\",\"list\":false,\"value\":\"Below is the HTML content (as markdown) and hyperlinks extracted from {url}\\n\\n---\\n\\nContent:\\n\\n{html_markdown}\\n\\n---\\n\\nLinks:\\n\\n{html_links}\\n\\n---\\n\\nAnswer the user query as best as possible.\\n\\nUser query:\\n\\n{query}\\n\\nAnswer:\\n\"},\"template_format\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"f-string\",\"password\":false,\"name\":\"template_format\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":false},\"validate_template\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"PromptTemplate\",\"url\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"html_markdown\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"html_markdown\",\"display_name\":\"html_markdown\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"html_links\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"html_links\",\"display_name\":\"html_links\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"query\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"query\",\"display_name\":\"query\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"A prompt template for a language model.\",\"base_classes\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"name\":\"\",\"display_name\":\"PromptTemplate\",\"documentation\":\"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\"custom_fields\":{\"\":[\"url\",\"html_markdown\",\"html_links\",\"query\"]},\"output_types\":[],\"full_path\":null,\"field_formatters\":{},\"beta\":false,\"error\":null},\"id\":\"PromptTemplate-H9Udy\"},\"selected\":true,\"positionAbsolute\":{\"x\":2230.389721706283,\"y\":584.4905083765256},\"dragging\":false},{\"width\":384,\"height\":347,\"id\":\"CustomComponent-OACE0\",\"type\":\"genericNode\",\"position\":{\"x\":-1155.9497945157625,\"y\":198.13583204151553},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"URL Input\\\"\\n\\n def build(self, url: str) -> str:\\n return url\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"url\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":null,\"base_classes\":[\"str\"],\"display_name\":\"URL Input\",\"custom_fields\":{\"url\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-OACE0\"},\"selected\":true,\"positionAbsolute\":{\"x\":-1155.9497945157625,\"y\":198.13583204151553},\"dragging\":false},{\"width\":384,\"height\":329,\"id\":\"CustomComponent-whsQ5\",\"type\":\"genericNode\",\"position\":{\"x\":1396.5574076376327,\"y\":694.8308714574463},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\n\\nclass ListToMarkdownBullets(CustomComponent):\\n display_name: str = \\\"List to Bullets\\\"\\n description: str = \\\"Converts a Python list into Markdown bullet points.\\\"\\n\\n def build(self, items: list) -> str:\\n markdown_bullets = '\\\\n'.join(f'* {item}' for item in items)\\n return markdown_bullets\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"items\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"items\",\"display_name\":\"items\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"list\",\"list\":true}},\"description\":\"Converts a Python list into Markdown bullet points.\",\"base_classes\":[\"str\"],\"display_name\":\"List to Bullets\",\"custom_fields\":{\"items\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-whsQ5\"},\"selected\":true,\"positionAbsolute\":{\"x\":1396.5574076376327,\"y\":694.8308714574463},\"dragging\":false}],\"edges\":[{\"source\":\"CustomComponent-FGzJJ\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-FGzJJล“}\",\"target\":\"CustomComponent-f6nOg\",\"targetHandle\":\"{ล“fieldNameล“:ล“html_contentล“,ล“idล“:ล“CustomComponent-f6nOgล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_content\",\"id\":\"CustomComponent-f6nOg\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-FGzJJ\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-FGzJJ{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-FGzJJล“}-CustomComponent-f6nOg{ล“fieldNameล“:ล“html_contentล“,ล“idล“:ล“CustomComponent-f6nOgล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"selected\":true},{\"source\":\"CustomComponent-FGzJJ\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-FGzJJล“}\",\"target\":\"CustomComponent-0XtUN\",\"targetHandle\":\"{ล“fieldNameล“:ล“html_contentล“,ล“idล“:ล“CustomComponent-0XtUNล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_content\",\"id\":\"CustomComponent-0XtUN\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-FGzJJ\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-FGzJJ{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-FGzJJล“}-CustomComponent-0XtUN{ล“fieldNameล“:ล“html_contentล“,ล“idล“:ล“CustomComponent-0XtUNล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"selected\":true},{\"source\":\"CustomComponent-0XtUN\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-0XtUNล“}\",\"target\":\"CustomComponent-ODIcp\",\"targetHandle\":\"{ล“fieldNameล“:ล“soupล“,ล“idล“:ล“CustomComponent-ODIcpล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"soup\",\"id\":\"CustomComponent-ODIcp\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-0XtUN\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-0XtUN{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-0XtUNล“}-CustomComponent-ODIcp{ล“fieldNameล“:ล“soupล“,ล“idล“:ล“CustomComponent-ODIcpล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"selected\":true},{\"source\":\"CustomComponent-OACE0\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-OACE0ล“}\",\"target\":\"CustomComponent-FGzJJ\",\"targetHandle\":\"{ล“fieldNameล“:ล“urlล“,ล“idล“:ล“CustomComponent-FGzJJล“,ล“inputTypesล“:[ล“Dataล“,ล“strล“],ล“typeล“:ล“strล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"url\",\"id\":\"CustomComponent-FGzJJ\",\"inputTypes\":[\"Data\",\"str\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-OACE0\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-OACE0{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-OACE0ล“}-CustomComponent-FGzJJ{ล“fieldNameล“:ล“urlล“,ล“idล“:ล“CustomComponent-FGzJJล“,ล“inputTypesล“:[ล“Dataล“,ล“strล“],ล“typeล“:ล“strล“}\",\"selected\":true},{\"source\":\"CustomComponent-OACE0\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-OACE0ล“}\",\"target\":\"PromptTemplate-H9Udy\",\"targetHandle\":\"{ล“fieldNameล“:ล“urlล“,ล“idล“:ล“PromptTemplate-H9Udyล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"url\",\"id\":\"PromptTemplate-H9Udy\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-OACE0\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-OACE0{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-OACE0ล“}-PromptTemplate-H9Udy{ล“fieldNameล“:ล“urlล“,ล“idล“:ล“PromptTemplate-H9Udyล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"selected\":true},{\"source\":\"CustomComponent-ODIcp\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“listล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-ODIcpล“}\",\"target\":\"CustomComponent-whsQ5\",\"targetHandle\":\"{ล“fieldNameล“:ล“itemsล“,ล“idล“:ล“CustomComponent-whsQ5ล“,ล“inputTypesล“:null,ล“typeล“:ล“listล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"items\",\"id\":\"CustomComponent-whsQ5\",\"inputTypes\":null,\"type\":\"list\"},\"sourceHandle\":{\"baseClasses\":[\"list\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-ODIcp\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-ODIcp{ล“baseClassesล“:[ล“listล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-ODIcpล“}-CustomComponent-whsQ5{ล“fieldNameล“:ล“itemsล“,ล“idล“:ล“CustomComponent-whsQ5ล“,ล“inputTypesล“:null,ล“typeล“:ล“listล“}\",\"selected\":true},{\"source\":\"CustomComponent-whsQ5\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-whsQ5ล“}\",\"target\":\"PromptTemplate-H9Udy\",\"targetHandle\":\"{ล“fieldNameล“:ล“html_linksล“,ล“idล“:ล“PromptTemplate-H9Udyล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_links\",\"id\":\"PromptTemplate-H9Udy\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-whsQ5\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-whsQ5{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-whsQ5ล“}-PromptTemplate-H9Udy{ล“fieldNameล“:ล“html_linksล“,ล“idล“:ล“PromptTemplate-H9Udyล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"selected\":true},{\"source\":\"CustomComponent-f6nOg\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-f6nOgล“}\",\"target\":\"PromptTemplate-H9Udy\",\"targetHandle\":\"{ล“fieldNameล“:ล“html_markdownล“,ล“idล“:ล“PromptTemplate-H9Udyล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_markdown\",\"id\":\"PromptTemplate-H9Udy\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-f6nOg\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-f6nOg{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-f6nOgล“}-PromptTemplate-H9Udy{ล“fieldNameล“:ล“html_markdownล“,ล“idล“:ล“PromptTemplate-H9Udyล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"selected\":true}],\"viewport\":{\"x\":343.0346131188585,\"y\":341.89843948642147,\"zoom\":0.24148408223121196}},\"is_component\":false,\"name\":\"Fluffy Ptolemy\",\"description\":\"\",\"id\":\"W5oNW\"}}},\"id\":\"GroupNode-WXPMk\",\"position\":{\"x\":873.0737834322758,\"y\":598.8401015776466},\"type\":\"genericNode\",\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":873.0737834322758,\"y\":598.8401015776466}}],\"edges\":[{\"source\":\"ChatOpenAI-VSAdc\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“BaseLanguageModelล“,ล“ChatOpenAIล“,ล“BaseChatModelล“,ล“BaseLLMล“],ล“dataTypeล“:ล“ChatOpenAIล“,ล“idล“:ล“ChatOpenAI-VSAdcล“}\",\"target\":\"LLMChain-H7PBy\",\"targetHandle\":\"{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“LLMChain-H7PByล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLanguageModelล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"LLMChain-H7PBy\",\"inputTypes\":null,\"type\":\"BaseLanguageModel\"},\"sourceHandle\":{\"baseClasses\":[\"BaseLanguageModel\",\"ChatOpenAI\",\"BaseChatModel\",\"BaseLLM\"],\"dataType\":\"ChatOpenAI\",\"id\":\"ChatOpenAI-VSAdc\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-ChatOpenAI-VSAdc{ล“baseClassesล“:[ล“BaseLanguageModelล“,ล“ChatOpenAIล“,ล“BaseChatModelล“,ล“BaseLLMล“],ล“dataTypeล“:ล“ChatOpenAIล“,ล“idล“:ล“ChatOpenAI-VSAdcล“}-LLMChain-H7PBy{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“LLMChain-H7PByล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLanguageModelล“}\"},{\"source\":\"GroupNode-WXPMk\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“StringPromptTemplateล“,ล“BasePromptTemplateล“,ล“PromptTemplateล“],ล“dataTypeล“:ล“PromptTemplateล“,ล“idล“:ล“GroupNode-WXPMkล“}\",\"target\":\"LLMChain-H7PBy\",\"targetHandle\":\"{ล“fieldNameล“:ล“promptล“,ล“idล“:ล“LLMChain-H7PByล“,ล“inputTypesล“:null,ล“typeล“:ล“BasePromptTemplateล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"prompt\",\"id\":\"LLMChain-H7PBy\",\"inputTypes\":null,\"type\":\"BasePromptTemplate\"},\"sourceHandle\":{\"baseClasses\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"dataType\":\"PromptTemplate\",\"id\":\"GroupNode-WXPMk\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-GroupNode-WXPMk{ล“baseClassesล“:[ล“StringPromptTemplateล“,ล“BasePromptTemplateล“,ล“PromptTemplateล“],ล“dataTypeล“:ล“PromptTemplateล“,ล“idล“:ล“GroupNode-WXPMkล“}-LLMChain-H7PBy{ล“fieldNameล“:ล“promptล“,ล“idล“:ล“LLMChain-H7PByล“,ล“inputTypesล“:null,ล“typeล“:ล“BasePromptTemplateล“}\"}],\"viewport\":{\"x\":-348.6161822813733,\"y\":121.40545291211492,\"zoom\":0.6801854262029781}},\"is_component\":false,\"updated_at\":\"2023-12-04T23:22:27.784647\",\"folder\":null,\"id\":\"efc3bf27-3cf1-4561-9a83-3df347572440\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sad Joliot\",\"description\":\"Navigate the Networks of Conversation.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":338,\"id\":\"LLMChain-RQsU1\",\"type\":\"genericNode\",\"position\":{\"x\":514.4440482813261,\"y\":528.164086188516},\"data\":{\"type\":\"LLMChain\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Callable, Optional, Union\\n\\nfrom langchain.chains import LLMChain\\n\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import (\\n BaseLanguageModel,\\n BaseMemory,\\n BasePromptTemplate,\\n Chain,\\n)\\n\\n\\nclass LLMChainComponent(CustomComponent):\\n display_name = \\\"LLMChain\\\"\\n description = \\\"Chain to run queries against LLMs\\\"\\n\\n def build_config(self):\\n return {\\n \\\"prompt\\\": {\\\"display_name\\\": \\\"Prompt\\\"},\\n \\\"llm\\\": {\\\"display_name\\\": \\\"LLM\\\"},\\n \\\"memory\\\": {\\\"display_name\\\": \\\"Memory\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n prompt: BasePromptTemplate,\\n llm: BaseLanguageModel,\\n memory: Optional[BaseMemory] = None,\\n ) -> Union[Chain, Callable]:\\n return LLMChain(prompt=prompt, llm=llm, memory=memory)\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"display_name\":\"Memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseMemory\",\"list\":false},\"prompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"prompt\",\"display_name\":\"Prompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BasePromptTemplate\",\"list\":false}},\"description\":\"Chain to run queries against LLMs\",\"base_classes\":[\"Chain\",\"Callable\"],\"display_name\":\"LLMChain\",\"custom_fields\":{\"llm\":null,\"memory\":null,\"prompt\":null},\"output_types\":[\"LLMChain\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"LLMChain-RQsU1\"},\"selected\":false,\"positionAbsolute\":{\"x\":514.4440482813261,\"y\":528.164086188516}},{\"width\":384,\"height\":626,\"id\":\"ChatOpenAI-NTTcv\",\"type\":\"genericNode\",\"position\":{\"x\":-221.33853765781578,\"y\":-35.48749923706055},\"data\":{\"type\":\"ChatOpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain_core.callbacks.base.BaseCallbackHandler\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"gpt-4-1106-preview\",\"password\":false,\"options\":[\"gpt-4-1106-preview\",\"gpt-4\",\"gpt-4-32k\",\"gpt-3.5-turbo\",\"gpt-3.5-turbo-16k\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"sk-...\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"0.1\",\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ChatOpenAI\"},\"description\":\"`OpenAI` Chat large language models API.\",\"base_classes\":[\"BaseLanguageModel\",\"ChatOpenAI\",\"BaseChatModel\",\"BaseLLM\"],\"display_name\":\"ChatOpenAI\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"ChatOpenAI-NTTcv\"},\"selected\":false,\"positionAbsolute\":{\"x\":-221.33853765781578,\"y\":-35.48749923706055}},{\"width\":384,\"height\":374,\"id\":\"PromptTemplate-VELMV\",\"type\":\"genericNode\",\"position\":{\"x\":-222,\"y\":682.560723386973},\"data\":{\"id\":\"PromptTemplate-VELMV\",\"type\":\"PromptTemplate\",\"node\":{\"output_types\":[],\"display_name\":\"Web Scraper\",\"documentation\":\"\",\"base_classes\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"description\":\"Fetch and parse text and links from a given URL.\",\"template\":{\"code_CustomComponent-f6nOg\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport html2text\\n\\nclass ConvertHTMLToMarkdown(CustomComponent):\\n display_name: str = \\\"HTML to Markdown\\\"\\n description: str = \\\"Converts HTML content to Markdown format.\\\"\\n\\n def build(self, html_content: Data, ignore_links: bool = False) -> str:\\n converter = html2text.HTML2Text()\\n converter.ignore_links = ignore_links\\n markdown_text = converter.handle(html_content)\\n self.status = markdown_text\\n return markdown_text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-f6nOg\",\"field\":\"code\"},\"display_name\":\"Code\"},\"ignore_links_CustomComponent-f6nOg\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"ignore_links\",\"display_name\":\"ignore_links\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-f6nOg\",\"field\":\"ignore_links\"}},\"code_CustomComponent-FGzJJ\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"Fetch HTML\\\"\\n description: str = \\\"Fetches HTML content from a specified URL.\\\"\\n \\n def build_config(self):\\n return {\\\"url\\\": {\\\"input_types\\\": [\\\"Data\\\", \\\"str\\\"]}} \\n\\n def build(self, url: str) -> Data:\\n response = requests.get(url)\\n self.status = str(response) + \\\"\\\\n\\\\n\\\" + response.text\\n return response.text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-FGzJJ\",\"field\":\"code\"},\"display_name\":\"Code\"},\"code_CustomComponent-0XtUN\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from bs4 import BeautifulSoup\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ParseHTMLContent(CustomComponent):\\n display_name: str = \\\"Parse HTML\\\"\\n description: str = \\\"Parses HTML content using Beautiful Soup.\\\"\\n\\n def build(self, html_content: Data) -> Data:\\n soup = BeautifulSoup(html_content, 'html.parser')\\n self.status = soup\\n return soup\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-0XtUN\",\"field\":\"code\"},\"display_name\":\"Code\"},\"code_CustomComponent-ODIcp\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ExtractHyperlinks(CustomComponent):\\n display_name: str = \\\"Extract Hyperlinks\\\"\\n description: str = \\\"Extracts hyperlinks from parsed HTML content.\\\"\\n\\n def build(self, soup: Data) -> list:\\n links = [link.get('href') for link in soup.find_all('a')]\\n self.status = links\\n return links\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-ODIcp\",\"field\":\"code\"},\"display_name\":\"Code\"},\"output_parser_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"output_parser\"},\"display_name\":\"Output Parser\"},\"input_types_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"input_types\"},\"display_name\":\"Input Types\"},\"input_variables_PromptTemplate-H9Udy\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"url\",\"html_markdown\",\"html_links\",\"query\"],\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"input_variables\"},\"display_name\":\"Input Variables\"},\"partial_variables_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"partial_variables\"},\"display_name\":\"Partial Variables\"},\"template_PromptTemplate-H9Udy\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"template\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"prompt\",\"list\":false,\"value\":\"Below is the HTML content (as markdown) and hyperlinks extracted from {url}\\n\\n---\\n\\nContent:\\n\\n{html_markdown}\\n\\n---\\n\\nLinks:\\n\\n{html_links}\\n\\n---\\n\\nAnswer the user query as best as possible.\\n\\nUser query:\\n\\n{query}\\n\\nAnswer:\\n\",\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"template\"},\"display_name\":\"Template\"},\"template_format_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"f-string\",\"password\":false,\"name\":\"template_format\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"template_format\"},\"display_name\":\"Template Format\"},\"validate_template_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":true,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"validate_template\"},\"display_name\":\"Validate Template\"},\"query_PromptTemplate-H9Udy\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"query\",\"display_name\":\"query\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"proxy\":{\"id\":\"PromptTemplate-H9Udy\",\"field\":\"query\"}},\"code_CustomComponent-OACE0\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"URL Input\\\"\\n\\n def build(self, url: str) -> str:\\n return url\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-OACE0\",\"field\":\"code\"},\"display_name\":\"Code\"},\"url_CustomComponent-OACE0\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-OACE0\",\"field\":\"url\"},\"value\":\"https://paperswithcode.com/\"},\"code_CustomComponent-whsQ5\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\n\\nclass ListToMarkdownBullets(CustomComponent):\\n display_name: str = \\\"List to Bullets\\\"\\n description: str = \\\"Converts a Python list into Markdown bullet points.\\\"\\n\\n def build(self, items: list) -> str:\\n markdown_bullets = '\\\\n'.join(f'* {item}' for item in items)\\n return markdown_bullets\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"proxy\":{\"id\":\"CustomComponent-whsQ5\",\"field\":\"code\"},\"display_name\":\"Code\"}},\"flow\":{\"data\":{\"nodes\":[{\"width\":384,\"height\":405,\"id\":\"CustomComponent-f6nOg\",\"type\":\"genericNode\",\"position\":{\"x\":665.2835942536854,\"y\":-371.7823429271119},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport html2text\\n\\nclass ConvertHTMLToMarkdown(CustomComponent):\\n display_name: str = \\\"HTML to Markdown\\\"\\n description: str = \\\"Converts HTML content to Markdown format.\\\"\\n\\n def build(self, html_content: Data, ignore_links: bool = False) -> str:\\n converter = html2text.HTML2Text()\\n converter.ignore_links = ignore_links\\n markdown_text = converter.handle(html_content)\\n self.status = markdown_text\\n return markdown_text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"html_content\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"html_content\",\"display_name\":\"html_content\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false},\"ignore_links\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"ignore_links\",\"display_name\":\"ignore_links\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false}},\"description\":\"Converts HTML content to Markdown format.\",\"base_classes\":[\"str\"],\"display_name\":\"HTML to Markdown\",\"custom_fields\":{\"html_content\":null,\"ignore_links\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-f6nOg\"},\"selected\":true,\"positionAbsolute\":{\"x\":665.2835942536854,\"y\":-371.7823429271119},\"dragging\":false},{\"width\":384,\"height\":375,\"id\":\"CustomComponent-FGzJJ\",\"type\":\"genericNode\",\"position\":{\"x\":-464.4553400967736,\"y\":-225.62715888255525},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"Fetch HTML\\\"\\n description: str = \\\"Fetches HTML content from a specified URL.\\\"\\n \\n def build_config(self):\\n return {\\\"url\\\": {\\\"input_types\\\": [\\\"Data\\\", \\\"str\\\"]}} \\n\\n def build(self, url: str) -> Data:\\n response = requests.get(url)\\n self.status = str(response) + \\\"\\\\n\\\\n\\\" + response.text\\n return response.text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"url\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"input_types\":[\"Data\",\"str\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"}},\"description\":\"Fetches HTML content from a specified URL.\",\"base_classes\":[\"Data\"],\"display_name\":\"Fetch HTML\",\"custom_fields\":{\"url\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-FGzJJ\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":-464.4553400967736,\"y\":-225.62715888255525}},{\"width\":384,\"height\":329,\"id\":\"CustomComponent-0XtUN\",\"type\":\"genericNode\",\"position\":{\"x\":214.00059169497604,\"y\":177.27071061129823},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from bs4 import BeautifulSoup\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ParseHTMLContent(CustomComponent):\\n display_name: str = \\\"Parse HTML\\\"\\n description: str = \\\"Parses HTML content using Beautiful Soup.\\\"\\n\\n def build(self, html_content: Data) -> Data:\\n soup = BeautifulSoup(html_content, 'html.parser')\\n self.status = soup\\n return soup\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"html_content\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"html_content\",\"display_name\":\"html_content\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false}},\"description\":\"Parses HTML content using Beautiful Soup.\",\"base_classes\":[\"Data\"],\"display_name\":\"Parse HTML\",\"custom_fields\":{\"html_content\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-0XtUN\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":214.00059169497604,\"y\":177.27071061129823}},{\"width\":384,\"height\":329,\"id\":\"CustomComponent-ODIcp\",\"type\":\"genericNode\",\"position\":{\"x\":845.0502195222412,\"y\":366.54344452019404},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ExtractHyperlinks(CustomComponent):\\n display_name: str = \\\"Extract Hyperlinks\\\"\\n description: str = \\\"Extracts hyperlinks from parsed HTML content.\\\"\\n\\n def build(self, soup: Data) -> list:\\n links = [link.get('href') for link in soup.find_all('a')]\\n self.status = links\\n return links\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"soup\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"soup\",\"display_name\":\"soup\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false}},\"description\":\"Extracts hyperlinks from parsed HTML content.\",\"base_classes\":[\"list\"],\"display_name\":\"Extract Hyperlinks\",\"custom_fields\":{\"soup\":null},\"output_types\":[\"list\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-ODIcp\"},\"selected\":true,\"positionAbsolute\":{\"x\":845.0502195222412,\"y\":366.54344452019404},\"dragging\":false},{\"width\":384,\"height\":657,\"id\":\"PromptTemplate-H9Udy\",\"type\":\"genericNode\",\"position\":{\"x\":2230.389721706283,\"y\":584.4905083765256},\"data\":{\"type\":\"PromptTemplate\",\"node\":{\"template\":{\"output_parser\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false},\"input_types\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"input_variables\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"url\",\"html_markdown\",\"html_links\",\"query\"]},\"partial_variables\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"template\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"prompt\",\"list\":false,\"value\":\"Below is the HTML content (as markdown) and hyperlinks extracted from {url}\\n\\n---\\n\\nContent:\\n\\n{html_markdown}\\n\\n---\\n\\nLinks:\\n\\n{html_links}\\n\\n---\\n\\nAnswer the user query as best as possible.\\n\\nUser query:\\n\\n{query}\\n\\nAnswer:\\n\"},\"template_format\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"f-string\",\"password\":false,\"name\":\"template_format\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":false},\"validate_template\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"PromptTemplate\",\"url\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"html_markdown\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"html_markdown\",\"display_name\":\"html_markdown\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"html_links\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"html_links\",\"display_name\":\"html_links\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"query\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"query\",\"display_name\":\"query\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"A prompt template for a language model.\",\"base_classes\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"name\":\"\",\"display_name\":\"PromptTemplate\",\"documentation\":\"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\"custom_fields\":{\"\":[\"url\",\"html_markdown\",\"html_links\",\"query\"]},\"output_types\":[],\"full_path\":null,\"field_formatters\":{},\"beta\":false,\"error\":null},\"id\":\"PromptTemplate-H9Udy\"},\"selected\":true,\"positionAbsolute\":{\"x\":2230.389721706283,\"y\":584.4905083765256},\"dragging\":false},{\"width\":384,\"height\":347,\"id\":\"CustomComponent-OACE0\",\"type\":\"genericNode\",\"position\":{\"x\":-1155.9497945157625,\"y\":198.13583204151553},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"URL Input\\\"\\n\\n def build(self, url: str) -> str:\\n return url\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"url\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":null,\"base_classes\":[\"str\"],\"display_name\":\"URL Input\",\"custom_fields\":{\"url\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-OACE0\"},\"selected\":true,\"positionAbsolute\":{\"x\":-1155.9497945157625,\"y\":198.13583204151553},\"dragging\":false},{\"width\":384,\"height\":329,\"id\":\"CustomComponent-whsQ5\",\"type\":\"genericNode\",\"position\":{\"x\":1396.5574076376327,\"y\":694.8308714574463},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\n\\nclass ListToMarkdownBullets(CustomComponent):\\n display_name: str = \\\"List to Bullets\\\"\\n description: str = \\\"Converts a Python list into Markdown bullet points.\\\"\\n\\n def build(self, items: list) -> str:\\n markdown_bullets = '\\\\n'.join(f'* {item}' for item in items)\\n return markdown_bullets\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"items\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"items\",\"display_name\":\"items\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"list\",\"list\":true}},\"description\":\"Converts a Python list into Markdown bullet points.\",\"base_classes\":[\"str\"],\"display_name\":\"List to Bullets\",\"custom_fields\":{\"items\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-whsQ5\"},\"selected\":true,\"positionAbsolute\":{\"x\":1396.5574076376327,\"y\":694.8308714574463},\"dragging\":false}],\"edges\":[{\"source\":\"CustomComponent-FGzJJ\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-FGzJJล“}\",\"target\":\"CustomComponent-f6nOg\",\"targetHandle\":\"{ล“fieldNameล“:ล“html_contentล“,ล“idล“:ล“CustomComponent-f6nOgล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_content\",\"id\":\"CustomComponent-f6nOg\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-FGzJJ\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-FGzJJ{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-FGzJJล“}-CustomComponent-f6nOg{ล“fieldNameล“:ล“html_contentล“,ล“idล“:ล“CustomComponent-f6nOgล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"selected\":true},{\"source\":\"CustomComponent-FGzJJ\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-FGzJJล“}\",\"target\":\"CustomComponent-0XtUN\",\"targetHandle\":\"{ล“fieldNameล“:ล“html_contentล“,ล“idล“:ล“CustomComponent-0XtUNล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_content\",\"id\":\"CustomComponent-0XtUN\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-FGzJJ\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-FGzJJ{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-FGzJJล“}-CustomComponent-0XtUN{ล“fieldNameล“:ล“html_contentล“,ล“idล“:ล“CustomComponent-0XtUNล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"selected\":true},{\"source\":\"CustomComponent-0XtUN\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-0XtUNล“}\",\"target\":\"CustomComponent-ODIcp\",\"targetHandle\":\"{ล“fieldNameล“:ล“soupล“,ล“idล“:ล“CustomComponent-ODIcpล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"soup\",\"id\":\"CustomComponent-ODIcp\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-0XtUN\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-0XtUN{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-0XtUNล“}-CustomComponent-ODIcp{ล“fieldNameล“:ล“soupล“,ล“idล“:ล“CustomComponent-ODIcpล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"selected\":true},{\"source\":\"CustomComponent-OACE0\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-OACE0ล“}\",\"target\":\"CustomComponent-FGzJJ\",\"targetHandle\":\"{ล“fieldNameล“:ล“urlล“,ล“idล“:ล“CustomComponent-FGzJJล“,ล“inputTypesล“:[ล“Dataล“,ล“strล“],ล“typeล“:ล“strล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"url\",\"id\":\"CustomComponent-FGzJJ\",\"inputTypes\":[\"Data\",\"str\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-OACE0\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-OACE0{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-OACE0ล“}-CustomComponent-FGzJJ{ล“fieldNameล“:ล“urlล“,ล“idล“:ล“CustomComponent-FGzJJล“,ล“inputTypesล“:[ล“Dataล“,ล“strล“],ล“typeล“:ล“strล“}\",\"selected\":true},{\"source\":\"CustomComponent-OACE0\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-OACE0ล“}\",\"target\":\"PromptTemplate-H9Udy\",\"targetHandle\":\"{ล“fieldNameล“:ล“urlล“,ล“idล“:ล“PromptTemplate-H9Udyล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"url\",\"id\":\"PromptTemplate-H9Udy\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-OACE0\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-OACE0{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-OACE0ล“}-PromptTemplate-H9Udy{ล“fieldNameล“:ล“urlล“,ล“idล“:ล“PromptTemplate-H9Udyล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"selected\":true},{\"source\":\"CustomComponent-ODIcp\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“listล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-ODIcpล“}\",\"target\":\"CustomComponent-whsQ5\",\"targetHandle\":\"{ล“fieldNameล“:ล“itemsล“,ล“idล“:ล“CustomComponent-whsQ5ล“,ล“inputTypesล“:null,ล“typeล“:ล“listล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"items\",\"id\":\"CustomComponent-whsQ5\",\"inputTypes\":null,\"type\":\"list\"},\"sourceHandle\":{\"baseClasses\":[\"list\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-ODIcp\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-ODIcp{ล“baseClassesล“:[ล“listล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-ODIcpล“}-CustomComponent-whsQ5{ล“fieldNameล“:ล“itemsล“,ล“idล“:ล“CustomComponent-whsQ5ล“,ล“inputTypesล“:null,ล“typeล“:ล“listล“}\",\"selected\":true},{\"source\":\"CustomComponent-whsQ5\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-whsQ5ล“}\",\"target\":\"PromptTemplate-H9Udy\",\"targetHandle\":\"{ล“fieldNameล“:ล“html_linksล“,ล“idล“:ล“PromptTemplate-H9Udyล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_links\",\"id\":\"PromptTemplate-H9Udy\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-whsQ5\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-whsQ5{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-whsQ5ล“}-PromptTemplate-H9Udy{ล“fieldNameล“:ล“html_linksล“,ล“idล“:ล“PromptTemplate-H9Udyล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"selected\":true},{\"source\":\"CustomComponent-f6nOg\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-f6nOgล“}\",\"target\":\"PromptTemplate-H9Udy\",\"targetHandle\":\"{ล“fieldNameล“:ล“html_markdownล“,ล“idล“:ล“PromptTemplate-H9Udyล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_markdown\",\"id\":\"PromptTemplate-H9Udy\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-f6nOg\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-foreground stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-f6nOg{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-f6nOgล“}-PromptTemplate-H9Udy{ล“fieldNameล“:ล“html_markdownล“,ล“idล“:ล“PromptTemplate-H9Udyล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"selected\":true}],\"viewport\":{\"x\":343.0346131188585,\"y\":341.89843948642147,\"zoom\":0.24148408223121196}},\"is_component\":false,\"name\":\"Fluffy Ptolemy\",\"description\":\"\",\"id\":\"W5oNW\"}}},\"selected\":false,\"positionAbsolute\":{\"x\":-222,\"y\":682.560723386973}}],\"edges\":[{\"source\":\"ChatOpenAI-NTTcv\",\"target\":\"LLMChain-RQsU1\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“BaseLanguageModelล“,ล“ChatOpenAIล“,ล“BaseChatModelล“,ล“BaseLLMล“],ล“dataTypeล“:ล“ChatOpenAIล“,ล“idล“:ล“ChatOpenAI-NTTcvล“}\",\"targetHandle\":\"{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“LLMChain-RQsU1ล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLanguageModelล“}\",\"id\":\"reactflow__edge-ChatOpenAI-NTTcv{ล“baseClassesล“:[ล“BaseLanguageModelล“,ล“ChatOpenAIล“,ล“BaseChatModelล“,ล“BaseLLMล“],ล“dataTypeล“:ล“ChatOpenAIล“,ล“idล“:ล“ChatOpenAI-NTTcvล“}-LLMChain-RQsU1{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“LLMChain-RQsU1ล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLanguageModelล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"LLMChain-RQsU1\",\"inputTypes\":null,\"type\":\"BaseLanguageModel\"},\"sourceHandle\":{\"baseClasses\":[\"BaseLanguageModel\",\"ChatOpenAI\",\"BaseChatModel\",\"BaseLLM\"],\"dataType\":\"ChatOpenAI\",\"id\":\"ChatOpenAI-NTTcv\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 \",\"animated\":false,\"selected\":false},{\"source\":\"PromptTemplate-VELMV\",\"target\":\"LLMChain-RQsU1\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“StringPromptTemplateล“,ล“BasePromptTemplateล“,ล“PromptTemplateล“],ล“dataTypeล“:ล“PromptTemplateล“,ล“idล“:ล“PromptTemplate-VELMVล“}\",\"targetHandle\":\"{ล“fieldNameล“:ล“promptล“,ล“idล“:ล“LLMChain-RQsU1ล“,ล“inputTypesล“:null,ล“typeล“:ล“BasePromptTemplateล“}\",\"id\":\"reactflow__edge-PromptTemplate-VELMV{ล“baseClassesล“:[ล“StringPromptTemplateล“,ล“BasePromptTemplateล“,ล“PromptTemplateล“],ล“dataTypeล“:ล“PromptTemplateล“,ล“idล“:ล“PromptTemplate-VELMVล“}-LLMChain-RQsU1{ล“fieldNameล“:ล“promptล“,ล“idล“:ล“LLMChain-RQsU1ล“,ล“inputTypesล“:null,ล“typeล“:ล“BasePromptTemplateล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"prompt\",\"id\":\"LLMChain-RQsU1\",\"inputTypes\":null,\"type\":\"BasePromptTemplate\"},\"sourceHandle\":{\"baseClasses\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"dataType\":\"PromptTemplate\",\"id\":\"PromptTemplate-VELMV\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 \",\"animated\":false,\"selected\":false}],\"viewport\":{\"x\":298.29888454238517,\"y\":96.95765543775741,\"zoom\":0.5140569133280332}},\"is_component\":false,\"updated_at\":\"2023-12-04T23:23:08.584967\",\"folder\":null,\"id\":\"5df79f1d-f592-4d59-8c0f-9f3c2f6465b1\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Silly Pasteur\",\"description\":\"Nurture NLP Nodes Here.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":338,\"id\":\"LLMChain-cHel8\",\"type\":\"genericNode\",\"position\":{\"x\":547.3876889720291,\"y\":299.2057833881307},\"data\":{\"type\":\"LLMChain\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Callable, Optional, Union\\n\\nfrom langchain.chains import LLMChain\\n\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import (\\n BaseLanguageModel,\\n BaseMemory,\\n BasePromptTemplate,\\n Chain,\\n)\\n\\n\\nclass LLMChainComponent(CustomComponent):\\n display_name = \\\"LLMChain\\\"\\n description = \\\"Chain to run queries against LLMs\\\"\\n\\n def build_config(self):\\n return {\\n \\\"prompt\\\": {\\\"display_name\\\": \\\"Prompt\\\"},\\n \\\"llm\\\": {\\\"display_name\\\": \\\"LLM\\\"},\\n \\\"memory\\\": {\\\"display_name\\\": \\\"Memory\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n prompt: BasePromptTemplate,\\n llm: BaseLanguageModel,\\n memory: Optional[BaseMemory] = None,\\n ) -> Union[Chain, Callable]:\\n return LLMChain(prompt=prompt, llm=llm, memory=memory)\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"display_name\":\"Memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseMemory\",\"list\":false},\"prompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"prompt\",\"display_name\":\"Prompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BasePromptTemplate\",\"list\":false}},\"description\":\"Chain to run queries against LLMs\",\"base_classes\":[\"Chain\",\"Callable\"],\"display_name\":\"LLMChain\",\"custom_fields\":{\"llm\":null,\"memory\":null,\"prompt\":null},\"output_types\":[\"LLMChain\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"LLMChain-cHel8\"},\"selected\":false,\"positionAbsolute\":{\"x\":547.3876889720291,\"y\":299.2057833881307},\"dragging\":false},{\"width\":384,\"height\":626,\"id\":\"ChatOpenAI-LA6y0\",\"type\":\"genericNode\",\"position\":{\"x\":-272.94405331278074,\"y\":-603.148171441675},\"data\":{\"type\":\"ChatOpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain_core.callbacks.base.BaseCallbackHandler\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"gpt-4-1106-preview\",\"password\":false,\"options\":[\"gpt-4-1106-preview\",\"gpt-4\",\"gpt-4-32k\",\"gpt-3.5-turbo\",\"gpt-3.5-turbo-16k\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"sk-...\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"0.1\",\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ChatOpenAI\"},\"description\":\"`OpenAI` Chat large language models API.\",\"base_classes\":[\"BaseLanguageModel\",\"ChatOpenAI\",\"BaseChatModel\",\"BaseLLM\"],\"display_name\":\"ChatOpenAI\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/chat/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"ChatOpenAI-LA6y0\"},\"selected\":false,\"dragging\":false,\"positionAbsolute\":{\"x\":-272.94405331278074,\"y\":-603.148171441675}},{\"width\":384,\"height\":404,\"id\":\"CustomComponent-ZNoRM\",\"type\":\"genericNode\",\"position\":{\"x\":-103.65741264289085,\"y\":134.62332404764658},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport html2text\\n\\nclass ConvertHTMLToMarkdown(CustomComponent):\\n display_name: str = \\\"HTML to Markdown\\\"\\n description: str = \\\"Converts HTML content to Markdown format.\\\"\\n\\n def build(self, html_content: Data, ignore_links: bool = False) -> str:\\n converter = html2text.HTML2Text()\\n converter.ignore_links = ignore_links\\n markdown_text = converter.handle(html_content)\\n self.status = markdown_text\\n return markdown_text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"display_name\":\"code\"},\"_type\":\"CustomComponent\",\"html_content\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"html_content\",\"display_name\":\"html_content\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false},\"ignore_links\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"ignore_links\",\"display_name\":\"ignore_links\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false}},\"description\":\"Converts HTML content to Markdown format.\",\"base_classes\":[\"str\"],\"display_name\":\"HTML to Markdown\",\"custom_fields\":{\"html_content\":null,\"ignore_links\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-ZNoRM\"},\"selected\":false,\"positionAbsolute\":{\"x\":-103.65741264289085,\"y\":134.62332404764658},\"dragging\":false},{\"width\":384,\"height\":374,\"id\":\"CustomComponent-zNSTv\",\"type\":\"genericNode\",\"position\":{\"x\":-1233.3963469933499,\"y\":280.77850809220325},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"Fetch HTML\\\"\\n description: str = \\\"Fetches HTML content from a specified URL.\\\"\\n \\n def build_config(self):\\n return {\\\"url\\\": {\\\"input_types\\\": [\\\"Data\\\", \\\"str\\\"]}} \\n\\n def build(self, url: str) -> Data:\\n response = requests.get(url)\\n self.status = str(response) + \\\"\\\\n\\\\n\\\" + response.text\\n return response.text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"display_name\":\"code\"},\"_type\":\"CustomComponent\",\"url\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"input_types\":[\"Data\",\"str\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"}},\"description\":\"Fetches HTML content from a specified URL.\",\"base_classes\":[\"Data\"],\"display_name\":\"Fetch HTML\",\"custom_fields\":{\"url\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-zNSTv\"},\"selected\":false,\"dragging\":false,\"positionAbsolute\":{\"x\":-1233.3963469933499,\"y\":280.77850809220325}},{\"width\":384,\"height\":328,\"id\":\"CustomComponent-Ihm2o\",\"type\":\"genericNode\",\"position\":{\"x\":-554.9404152016002,\"y\":683.6763775860567},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from bs4 import BeautifulSoup\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ParseHTMLContent(CustomComponent):\\n display_name: str = \\\"Parse HTML\\\"\\n description: str = \\\"Parses HTML content using Beautiful Soup.\\\"\\n\\n def build(self, html_content: Data) -> Data:\\n soup = BeautifulSoup(html_content, 'html.parser')\\n self.status = soup\\n return soup\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"display_name\":\"code\"},\"_type\":\"CustomComponent\",\"html_content\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"html_content\",\"display_name\":\"html_content\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false}},\"description\":\"Parses HTML content using Beautiful Soup.\",\"base_classes\":[\"Data\"],\"display_name\":\"Parse HTML\",\"custom_fields\":{\"html_content\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-Ihm2o\"},\"selected\":false,\"dragging\":false,\"positionAbsolute\":{\"x\":-554.9404152016002,\"y\":683.6763775860567}},{\"width\":384,\"height\":328,\"id\":\"CustomComponent-6ST9l\",\"type\":\"genericNode\",\"position\":{\"x\":76.10921262566495,\"y\":872.9491114949525},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\nclass ExtractHyperlinks(CustomComponent):\\n display_name: str = \\\"Extract Hyperlinks\\\"\\n description: str = \\\"Extracts hyperlinks from parsed HTML content.\\\"\\n\\n def build(self, soup: Data) -> list:\\n links = [link.get('href') for link in soup.find_all('a')]\\n self.status = links\\n return links\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"display_name\":\"code\"},\"_type\":\"CustomComponent\",\"soup\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"soup\",\"display_name\":\"soup\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false}},\"description\":\"Extracts hyperlinks from parsed HTML content.\",\"base_classes\":[\"list\"],\"display_name\":\"Extract Hyperlinks\",\"custom_fields\":{\"soup\":null},\"output_types\":[\"list\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-6ST9l\"},\"selected\":false,\"positionAbsolute\":{\"x\":76.10921262566495,\"y\":872.9491114949525},\"dragging\":false},{\"width\":384,\"height\":654,\"id\":\"PromptTemplate-l35W1\",\"type\":\"genericNode\",\"position\":{\"x\":1461.4487148097069,\"y\":1090.896175351284},\"data\":{\"type\":\"PromptTemplate\",\"node\":{\"template\":{\"output_parser\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false,\"display_name\":\"output_parser\"},\"input_types\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false,\"display_name\":\"input_types\"},\"input_variables\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"url\",\"html_markdown\",\"html_links\",\"query\"],\"display_name\":\"input_variables\"},\"partial_variables\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false,\"display_name\":\"partial_variables\"},\"template\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"prompt\",\"list\":false,\"value\":\"Below is the HTML content (as markdown) and hyperlinks extracted from {url}\\n\\n---\\n\\nContent:\\n\\n{html_markdown}\\n\\n---\\n\\nLinks:\\n\\n{html_links}\\n\\n---\\n\\nAnswer the user query as best as possible.\\n\\nUser query:\\n\\n{query}\\n\\nAnswer:\\n\",\"display_name\":\"template\"},\"template_format\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"f-string\",\"password\":false,\"name\":\"template_format\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":false,\"display_name\":\"template_format\"},\"validate_template\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false,\"display_name\":\"validate_template\"},\"_type\":\"PromptTemplate\",\"url\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"html_markdown\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"html_markdown\",\"display_name\":\"html_markdown\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"html_links\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"html_links\",\"display_name\":\"html_links\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"query\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"query\",\"display_name\":\"query\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"A prompt template for a language model.\",\"base_classes\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"name\":\"\",\"display_name\":\"PromptTemplate\",\"documentation\":\"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\"custom_fields\":{\"\":[\"url\",\"html_markdown\",\"html_links\",\"query\"]},\"output_types\":[],\"full_path\":null,\"field_formatters\":{},\"beta\":false,\"error\":null},\"id\":\"PromptTemplate-l35W1\"},\"selected\":false,\"positionAbsolute\":{\"x\":1461.4487148097069,\"y\":1090.896175351284},\"dragging\":false},{\"width\":384,\"height\":346,\"id\":\"CustomComponent-iTLf4\",\"type\":\"genericNode\",\"position\":{\"x\":-1924.8908014123388,\"y\":704.5414990162741},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nimport requests\\n\\nclass FetchHTMLContent(CustomComponent):\\n display_name: str = \\\"URL Input\\\"\\n\\n def build(self, url: str) -> str:\\n return url\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"display_name\":\"code\"},\"_type\":\"CustomComponent\",\"url\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"url\",\"display_name\":\"url\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"https://paperswithcode.com/\"}},\"description\":null,\"base_classes\":[\"str\"],\"display_name\":\"URL Input\",\"custom_fields\":{\"url\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-iTLf4\"},\"selected\":false,\"positionAbsolute\":{\"x\":-1924.8908014123388,\"y\":704.5414990162741},\"dragging\":false},{\"width\":384,\"height\":328,\"id\":\"CustomComponent-jWLUz\",\"type\":\"genericNode\",\"position\":{\"x\":627.6164007410564,\"y\":1201.2365384322047},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\n\\nclass ListToMarkdownBullets(CustomComponent):\\n display_name: str = \\\"List to Bullets\\\"\\n description: str = \\\"Converts a Python list into Markdown bullet points.\\\"\\n\\n def build(self, items: list) -> str:\\n markdown_bullets = '\\\\n'.join(f'* {item}' for item in items)\\n return markdown_bullets\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false,\"display_name\":\"code\"},\"_type\":\"CustomComponent\",\"items\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"items\",\"display_name\":\"items\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"list\",\"list\":true}},\"description\":\"Converts a Python list into Markdown bullet points.\",\"base_classes\":[\"str\"],\"display_name\":\"List to Bullets\",\"custom_fields\":{\"items\":null},\"output_types\":[\"str\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"CustomComponent-jWLUz\"},\"selected\":false,\"positionAbsolute\":{\"x\":627.6164007410564,\"y\":1201.2365384322047},\"dragging\":false}],\"edges\":[{\"source\":\"ChatOpenAI-LA6y0\",\"target\":\"LLMChain-cHel8\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“BaseLanguageModelล“,ล“ChatOpenAIล“,ล“BaseChatModelล“,ล“BaseLLMล“],ล“dataTypeล“:ล“ChatOpenAIล“,ล“idล“:ล“ChatOpenAI-LA6y0ล“}\",\"targetHandle\":\"{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“LLMChain-cHel8ล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLanguageModelล“}\",\"id\":\"reactflow__edge-ChatOpenAI-LA6y0{ล“baseClassesล“:[ล“BaseLanguageModelล“,ล“ChatOpenAIล“,ล“BaseChatModelล“,ล“BaseLLMล“],ล“dataTypeล“:ล“ChatOpenAIล“,ล“idล“:ล“ChatOpenAI-LA6y0ล“}-LLMChain-cHel8{ล“fieldNameล“:ล“llmล“,ล“idล“:ล“LLMChain-cHel8ล“,ล“inputTypesล“:null,ล“typeล“:ล“BaseLanguageModelล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"llm\",\"id\":\"LLMChain-cHel8\",\"inputTypes\":null,\"type\":\"BaseLanguageModel\"},\"sourceHandle\":{\"baseClasses\":[\"BaseLanguageModel\",\"ChatOpenAI\",\"BaseChatModel\",\"BaseLLM\"],\"dataType\":\"ChatOpenAI\",\"id\":\"ChatOpenAI-LA6y0\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"selected\":false},{\"source\":\"CustomComponent-zNSTv\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-zNSTvล“}\",\"target\":\"CustomComponent-ZNoRM\",\"targetHandle\":\"{ล“fieldNameล“:ล“html_contentล“,ล“idล“:ล“CustomComponent-ZNoRMล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_content\",\"id\":\"CustomComponent-ZNoRM\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-zNSTv\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-zNSTv{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-zNSTvล“}-CustomComponent-ZNoRM{ล“fieldNameล“:ล“html_contentล“,ล“idล“:ล“CustomComponent-ZNoRMล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"selected\":false},{\"source\":\"CustomComponent-zNSTv\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-zNSTvล“}\",\"target\":\"CustomComponent-Ihm2o\",\"targetHandle\":\"{ล“fieldNameล“:ล“html_contentล“,ล“idล“:ล“CustomComponent-Ihm2oล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_content\",\"id\":\"CustomComponent-Ihm2o\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-zNSTv\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-zNSTv{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-zNSTvล“}-CustomComponent-Ihm2o{ล“fieldNameล“:ล“html_contentล“,ล“idล“:ล“CustomComponent-Ihm2oล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"selected\":false},{\"source\":\"CustomComponent-Ihm2o\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-Ihm2oล“}\",\"target\":\"CustomComponent-6ST9l\",\"targetHandle\":\"{ล“fieldNameล“:ล“soupล“,ล“idล“:ล“CustomComponent-6ST9lล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"soup\",\"id\":\"CustomComponent-6ST9l\",\"inputTypes\":null,\"type\":\"Data\"},\"sourceHandle\":{\"baseClasses\":[\"Data\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-Ihm2o\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-Ihm2o{ล“baseClassesล“:[ล“Dataล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-Ihm2oล“}-CustomComponent-6ST9l{ล“fieldNameล“:ล“soupล“,ล“idล“:ล“CustomComponent-6ST9lล“,ล“inputTypesล“:null,ล“typeล“:ล“Dataล“}\",\"selected\":false},{\"source\":\"CustomComponent-iTLf4\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-iTLf4ล“}\",\"target\":\"CustomComponent-zNSTv\",\"targetHandle\":\"{ล“fieldNameล“:ล“urlล“,ล“idล“:ล“CustomComponent-zNSTvล“,ล“inputTypesล“:[ล“Dataล“,ล“strล“],ล“typeล“:ล“strล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"url\",\"id\":\"CustomComponent-zNSTv\",\"inputTypes\":[\"Data\",\"str\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-iTLf4\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-iTLf4{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-iTLf4ล“}-CustomComponent-zNSTv{ล“fieldNameล“:ล“urlล“,ล“idล“:ล“CustomComponent-zNSTvล“,ล“inputTypesล“:[ล“Dataล“,ล“strล“],ล“typeล“:ล“strล“}\",\"selected\":false},{\"source\":\"CustomComponent-iTLf4\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-iTLf4ล“}\",\"target\":\"PromptTemplate-l35W1\",\"targetHandle\":\"{ล“fieldNameล“:ล“urlล“,ล“idล“:ล“PromptTemplate-l35W1ล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"url\",\"id\":\"PromptTemplate-l35W1\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-iTLf4\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-iTLf4{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-iTLf4ล“}-PromptTemplate-l35W1{ล“fieldNameล“:ล“urlล“,ล“idล“:ล“PromptTemplate-l35W1ล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"selected\":false},{\"source\":\"CustomComponent-6ST9l\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“listล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-6ST9lล“}\",\"target\":\"CustomComponent-jWLUz\",\"targetHandle\":\"{ล“fieldNameล“:ล“itemsล“,ล“idล“:ล“CustomComponent-jWLUzล“,ล“inputTypesล“:null,ล“typeล“:ล“listล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"items\",\"id\":\"CustomComponent-jWLUz\",\"inputTypes\":null,\"type\":\"list\"},\"sourceHandle\":{\"baseClasses\":[\"list\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-6ST9l\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-6ST9l{ล“baseClassesล“:[ล“listล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-6ST9lล“}-CustomComponent-jWLUz{ล“fieldNameล“:ล“itemsล“,ล“idล“:ล“CustomComponent-jWLUzล“,ล“inputTypesล“:null,ล“typeล“:ล“listล“}\",\"selected\":false},{\"source\":\"CustomComponent-jWLUz\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-jWLUzล“}\",\"target\":\"PromptTemplate-l35W1\",\"targetHandle\":\"{ล“fieldNameล“:ล“html_linksล“,ล“idล“:ล“PromptTemplate-l35W1ล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_links\",\"id\":\"PromptTemplate-l35W1\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-jWLUz\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-jWLUz{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-jWLUzล“}-PromptTemplate-l35W1{ล“fieldNameล“:ล“html_linksล“,ล“idล“:ล“PromptTemplate-l35W1ล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"selected\":false},{\"source\":\"CustomComponent-ZNoRM\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-ZNoRMล“}\",\"target\":\"PromptTemplate-l35W1\",\"targetHandle\":\"{ล“fieldNameล“:ล“html_markdownล“,ล“idล“:ล“PromptTemplate-l35W1ล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"html_markdown\",\"id\":\"PromptTemplate-l35W1\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"str\"],\"dataType\":\"CustomComponent\",\"id\":\"CustomComponent-ZNoRM\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-CustomComponent-ZNoRM{ล“baseClassesล“:[ล“strล“],ล“dataTypeล“:ล“CustomComponentล“,ล“idล“:ล“CustomComponent-ZNoRMล“}-PromptTemplate-l35W1{ล“fieldNameล“:ล“html_markdownล“,ล“idล“:ล“PromptTemplate-l35W1ล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"selected\":false},{\"source\":\"PromptTemplate-l35W1\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“StringPromptTemplateล“,ล“BasePromptTemplateล“,ล“PromptTemplateล“],ล“dataTypeล“:ล“PromptTemplateล“,ล“idล“:ล“PromptTemplate-l35W1ล“}\",\"target\":\"LLMChain-cHel8\",\"targetHandle\":\"{ล“fieldNameล“:ล“promptล“,ล“idล“:ล“LLMChain-cHel8ล“,ล“inputTypesล“:null,ล“typeล“:ล“BasePromptTemplateล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"prompt\",\"id\":\"LLMChain-cHel8\",\"inputTypes\":null,\"type\":\"BasePromptTemplate\"},\"sourceHandle\":{\"baseClasses\":[\"StringPromptTemplate\",\"BasePromptTemplate\",\"PromptTemplate\"],\"dataType\":\"PromptTemplate\",\"id\":\"PromptTemplate-l35W1\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-PromptTemplate-mJqEg{ล“baseClassesล“:[ล“StringPromptTemplateล“,ล“BasePromptTemplateล“,ล“PromptTemplateล“],ล“dataTypeล“:ล“PromptTemplateล“,ล“idล“:ล“PromptTemplate-mJqEgล“}-LLMChain-cHel8{ล“fieldNameล“:ล“promptล“,ล“idล“:ล“LLMChain-cHel8ล“,ล“inputTypesล“:null,ล“typeล“:ล“BasePromptTemplateล“}\"}],\"viewport\":{\"x\":206.6159172940935,\"y\":79.94375811155385,\"zoom\":0.5140569133280333}},\"is_component\":false,\"updated_at\":\"2023-12-06T00:23:04.515144\",\"folder\":null,\"id\":\"ecfb377a-7e88-405d-8d66-7560735ce446\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lonely Lovelace\",\"description\":\"Smart Chains, Smarter Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-04T23:43:25.925753\",\"folder\":null,\"id\":\"30e71767-6128-40e4-9a6d-b9197b679971\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Custom Component\",\"description\":\"Create any custom component you want!\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\n\\n\\nclass Component(CustomComponent):\\n display_name: str = \\\"Custom Component\\\"\\n description: str = \\\"Create any custom component you want!\\\"\\n documentation: str = \\\"http://docs.langflow.org/components/custom\\\"\\n\\n def build_config(self):\\n return {\\\"param\\\": {\\\"display_name\\\": \\\"Parameter\\\"}}\\n\\n def build(self, param: Data) -> Data:\\n return param\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"param\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"param\",\"display_name\":\"Parameter\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false}},\"description\":\"Create any custom component you want!\",\"base_classes\":[\"Data\"],\"display_name\":\"Custom Component\",\"custom_fields\":{\"param\":null},\"output_types\":[\"CustomComponent\"],\"documentation\":\"http://docs.langflow.org/components/custom\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"CustomComponent-IxJqc\"},\"id\":\"CustomComponent-IxJqc\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-05T22:08:27.080204\",\"folder\":null,\"id\":\"f3c56abb-96d8-4a09-80d3-f60181661b3c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Amazing Wilson\",\"description\":\"Unfolding Linguistic Possibilities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-05T23:49:58.272677\",\"folder\":null,\"id\":\"324499a6-17a6-49de-96b1-b88955ed2c3d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Nauseous Kowalevski\",\"description\":\"Create, Curate, Communicate with Langflow.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:45:27.084387\",\"folder\":null,\"id\":\"e3168485-d31b-472a-907f-faf833bf7824\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Silly Fermi\",\"description\":\"Craft Meaningful Interactions, Generate Value.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:45:57.134463\",\"folder\":null,\"id\":\"d0ecea5d-bcf9-4b8e-88f0-3c243d309336\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Friendly Ardinghelli\",\"description\":\"Smart Chains, Smarter Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:45:57.138184\",\"folder\":null,\"id\":\"a406912d-b0e2-4954-bef3-ee80c29eca3c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gleeful Easley\",\"description\":\"Bridging Prompts for Brilliance.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:45:57.162908\",\"folder\":null,\"id\":\"57b32155-4c6e-4823-ad03-8dd09d8abc62\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Effervescent Varahamihira\",\"description\":\"Create, Chain, Communicate.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:45:57.135644\",\"folder\":null,\"id\":\"18daa0ff-2e5d-457a-95d7-710affec5c4d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Jubilant Joliot\",\"description\":\"Language Architect at Work!\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:45:57.139496\",\"folder\":null,\"id\":\"9255e938-280e-4ce7-91cd-8622126a7d02\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Adoring Carroll\",\"description\":\"Nurture NLP Nodes Here.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:45:57.162240\",\"folder\":null,\"id\":\"a7a680b9-30b1-4438-ac24-da597de443aa\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Berserk Herschel\",\"description\":\"Your Hub for Text Generation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:46:02.593504\",\"folder\":null,\"id\":\"37a439b0-7b1d-45e3-b4fa-5c73669bae3b\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Distracted Joliot\",\"description\":\"Conversational Cartography Unlocked.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:04.845238\",\"folder\":null,\"id\":\"4d23fd0a-8ad5-46b9-bb99-eed4138e7426\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Happy Babbage\",\"description\":\"Flow into the Future of Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:41.899665\",\"folder\":null,\"id\":\"1c8ad5b9-5524-41fe-a762-52c75126b832\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Adoring Brown\",\"description\":\"Unlock the Power of AI in Your Business Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:42.702031\",\"folder\":null,\"id\":\"9d4c8e79-4904-4a51-a4bb-146c3d8db10e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Focused Mahavira\",\"description\":\"Design, Develop, Dialogize.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:42.786331\",\"folder\":null,\"id\":\"4ba370d1-1f8e-4a23-99aa-99e2cd9b7cbf\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Mad Gates\",\"description\":\"Where Language Meets Logic.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:42.838989\",\"folder\":null,\"id\":\"992c3cd3-1d79-4986-8c04-88a34130fa30\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Serene Mcclintock\",\"description\":\"Unlock the Power of AI in Your Business Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:42.932723\",\"folder\":null,\"id\":\"a65bfd13-44df-4090-aca0-5057e21e9997\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Berserk Feynman\",\"description\":\"Text Generation Meets Business Transformation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:42.931359\",\"folder\":null,\"id\":\"7a05dac5-c005-411d-9994-19d61e71ce78\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sprightly Perlman\",\"description\":\"Interactive Language Weaving.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:43.054687\",\"folder\":null,\"id\":\"6db24541-7211-48e6-a792-1a4a99a0ef90\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Jolly Colden\",\"description\":\"Flow into the Future of Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:47:43.078384\",\"folder\":null,\"id\":\"13ac42e8-9124-4bf4-9ea2-28671ef2d9a4\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gleeful Kaku\",\"description\":\"The Power of Language at Your Fingertips.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:50:33.156776\",\"folder\":null,\"id\":\"79262d75-5c62-4b14-b067-f4297f5c912f\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Jovial Khayyam\",\"description\":\"Empowering Communication, Enabling Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:51:13.295375\",\"folder\":null,\"id\":\"3b397e74-d8be-4728-9d6c-05f7c78106a7\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Goofy Mccarthy\",\"description\":\"Building Powerful Solutions with Language Models.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:51:27.632685\",\"folder\":null,\"id\":\"13f4e1fd-45eb-4271-92fd-0d70a31c61d2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cocky Lalande\",\"description\":\"Building Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:51:54.628983\",\"folder\":null,\"id\":\"9cfd60d8-9311-47b0-b71b-f488f1940bc7\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Romantic Mirzakhani\",\"description\":\"Innovation in Interaction with Langflow.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:52:52.622698\",\"folder\":null,\"id\":\"0d849403-0f75-455d-b4e4-0d622ee3305a\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Grinning Brown\",\"description\":\"Building Powerful Solutions with Language Models.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:53:06.056636\",\"folder\":null,\"id\":\"8643ba14-52d6-4d36-9981-5fd37de5dd76\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Kickass Watt\",\"description\":\"Transform Your Business with Smart Dialogues.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:53:23.338727\",\"folder\":null,\"id\":\"818d3066-bf08-4bf9-adcd-739f8abbfa5d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Goofy Bose\",\"description\":\"Unravel the Art of Articulation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:53:41.218861\",\"folder\":null,\"id\":\"28eff43e-0ecf-47bf-9851-f1492589978e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Optimistic Jennings\",\"description\":\"Create Powerful Connections, Boost Business Value.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:55:03.681106\",\"folder\":null,\"id\":\"68f59069-bc2a-464f-a983-4b61e32e01af\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Pedantic Mirzakhani\",\"description\":\"Language Chainlink Master.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:55:31.761949\",\"folder\":null,\"id\":\"5d981c0e-81b3-44cc-a5be-8f55b92bfed5\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Peppy Murdock\",\"description\":\"Create Powerful Connections, Boost Business Value.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:56:45.548598\",\"folder\":null,\"id\":\"e812ad47-47e8-422b-b94c-84fd0263c9c8\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Berserk Fermat\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:58:50.234270\",\"folder\":null,\"id\":\"82aaf449-e737-4699-9360-929ab6108dc7\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Tiny Albattani\",\"description\":\"Your Toolkit for Text Generation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T22:59:53.946035\",\"folder\":null,\"id\":\"097cb080-274b-40ca-8dde-7900a949568a\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cranky Kirch\",\"description\":\"Sculpting Language with Precision.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:00:51.745350\",\"folder\":null,\"id\":\"837d7b5f-8495-46a9-b00e-ad1b7ebb52f4\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Effervescent Kowalevski\",\"description\":\"Empowering Language Engineering.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:02:53.336102\",\"folder\":null,\"id\":\"3ff079c2-d9f9-4da6-a22a-423fa35670ff\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Radiant Stallman\",\"description\":\"Navigate the Linguistic Landscape, Discover Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:03:28.268357\",\"folder\":null,\"id\":\"c8b204dd-3d57-4bc8-aa13-1d559672e75b\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Grinning Swirles\",\"description\":\"Unleashing Linguistic Creativity.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:03:51.194455\",\"folder\":null,\"id\":\"a097f083-5880-4cf7-986b-51898bc68e11\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Dreamy Williams\",\"description\":\"Interactive Language Weaving.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:04:36.678251\",\"folder\":null,\"id\":\"d9585f63-ce76-42ce-87bc-8e69601ea5c6\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Zany Hawking\",\"description\":\"Flow into the Future of Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:05:13.672479\",\"folder\":null,\"id\":\"612a01d5-8c8d-4cc1-8c54-35626b7f4a6d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Amazing Kilby\",\"description\":\"Your Toolkit for Text Generation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:10:37.047955\",\"folder\":null,\"id\":\"2d05a598-3cdf-452a-bd5d-b0e569e562e3\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Insane Cori\",\"description\":\"Empowering Communication, Enabling Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:18:12.426578\",\"folder\":null,\"id\":\"d1769a4a-c1e9-4d74-9273-1e76cfcf21f3\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Compassionate Tesla\",\"description\":\"Graph Your Way to Great Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:18:52.806238\",\"folder\":null,\"id\":\"28c5d9dd-0466-4c80-9e58-b1e061cd358d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Jubilant Goldstine\",\"description\":\"Harness the Power of Conversational AI.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-06T23:21:44.488510\",\"folder\":null,\"id\":\"b3c57e4f-28a1-4580-bf08-a9484bdd66e8\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Elegant Curie\",\"description\":\"Building Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:23:47.610237\",\"folder\":null,\"id\":\"28fb024e-6ba1-4f5b-83b3-4742b3b8117c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Twinkly Chandrasekhar\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:24:29.824530\",\"folder\":null,\"id\":\"d2b87cf7-9167-4030-8e9f-b8d9aa0cadee\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Pensive Nobel\",\"description\":\"Crafting Dialogues that Drive Business Success.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:26:51.210699\",\"folder\":null,\"id\":\"c2c9fbac-7d97-40c2-8055-dff608df9414\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Elated Edison\",\"description\":\"Advanced NLP for Groundbreaking Business Solutions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:27:35.822482\",\"folder\":null,\"id\":\"a55561cd-4b25-473f-bde5-884cbabb0d24\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Dazzling Lichterman\",\"description\":\"Building Linguistic Labyrinths.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:29:09.259381\",\"folder\":null,\"id\":\"9c6fe6d4-8311-4fc6-8b02-2a816d7c059d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Distracted Bhaskara\",\"description\":\"Navigate the Networks of Conversation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:31:36.053452\",\"folder\":null,\"id\":\"ef6fc1ab-aff8-45a1-8cd5-bc8e38565e4d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Evil Watt\",\"description\":\"Building Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:32:26.765250\",\"folder\":null,\"id\":\"499b5351-9c09-4934-9f9d-a24be2fd8b24\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Jolly Wien\",\"description\":\"Bridging Prompts for Brilliance.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:33:23.648859\",\"folder\":null,\"id\":\"a57eda91-7f6e-410d-9990-385fe0c724f3\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Nostalgic Spence\",\"description\":\"Mapping Meaningful Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:34:22.576407\",\"folder\":null,\"id\":\"685f685e-8a1b-4b7e-9e21-6cdd72163c91\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Comical Fermat\",\"description\":\"Create, Connect, Converse.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:35:44.920540\",\"folder\":null,\"id\":\"3e061766-b834-4fa4-ba9c-b060925d9703\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Grave Volta\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:36:33.001572\",\"folder\":null,\"id\":\"135f2fd9-e005-40bc-a9bf-c25107388415\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gleeful Davinci\",\"description\":\"Create Powerful Connections, Boost Business Value.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:37:16.208823\",\"folder\":null,\"id\":\"167cdb24-7e1c-475b-893a-cca2f125426c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Hilarious Sinoussi\",\"description\":\"Language Chainlink Master.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:38:07.215401\",\"folder\":null,\"id\":\"48113cab-2c04-493f-8c2e-c8d067826aa2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Grave Sagan\",\"description\":\"Connect the Dots, Craft Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:39:19.479656\",\"folder\":null,\"id\":\"28d292dc-e094-4ffe-a657-178892933267\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cranky Hoover\",\"description\":\"Crafting Dialogues that Drive Business Success.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:40:02.895859\",\"folder\":null,\"id\":\"0c9849b7-b2d6-4d0e-8334-abfb3ae183dd\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Evil Mendeleev\",\"description\":\"Unfolding Linguistic Possibilities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:40:27.867247\",\"folder\":null,\"id\":\"d78c52e9-1941-4555-9bb9-abd01f176705\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Effervescent Dubinsky\",\"description\":\"Where Language Meets Logic.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:41:23.177402\",\"folder\":null,\"id\":\"5277a04c-b5da-4597-aaa2-a6b66ea11d02\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cocky Poitras\",\"description\":\"Where Language Meets Logic.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:42:08.731865\",\"folder\":null,\"id\":\"b0d0c8de-4eea-484a-a068-b13e63f7e71c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Pedantic Ptolemy\",\"description\":\"Crafting Conversations, One Node at a Time.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:42:25.658996\",\"folder\":null,\"id\":\"b6f155e2-03eb-4232-9bab-145463382fe9\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Loving Cray\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:43:57.530112\",\"folder\":null,\"id\":\"b75c10ca-9ecb-432b-88ab-e1847e836e22\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Effervescent Pasteur\",\"description\":\"Language Models, Mapped and Mastered.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:44:58.979393\",\"folder\":null,\"id\":\"3710eccb-e7a7-41d5-9339-d9c301515d17\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Pensive Gates\",\"description\":\"The Power of Language at Your Fingertips.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:45:42.744174\",\"folder\":null,\"id\":\"fdd2271e-92f6-4349-8c01-2ec0e9e73f13\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Determined Khorana\",\"description\":\"Beyond Text Generation - Unleashing Business Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:46:10.084684\",\"folder\":null,\"id\":\"88b49a97-0888-4fea-8d9b-6ac2cc6d158e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lonely Booth\",\"description\":\"Design Dialogues with Langflow.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:46:41.577750\",\"folder\":null,\"id\":\"629afe54-8796-45be-a570-e3ac79c60792\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Jubilant Mendeleev\",\"description\":\"Chain the Words, Master Language!\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:47:22.631243\",\"folder\":null,\"id\":\"7bf481b0-73fe-4f5b-a3d4-1263d9d8e827\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Clever Varahamihira\",\"description\":\"Building Powerful Solutions with Language Models.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:49:51.026960\",\"folder\":null,\"id\":\"df9e86b6-56c9-4848-9010-102615314766\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sleepy Stallman\",\"description\":\"Empowering Language Engineering.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:50:14.932236\",\"folder\":null,\"id\":\"3e66994c-9b7a-4b85-a917-65d1959d7352\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Modest Wozniak\",\"description\":\"Advanced NLP for Groundbreaking Business Solutions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:51:13.811894\",\"folder\":null,\"id\":\"d10f924a-5780-4255-9f41-3e102ae03e84\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Hopeful Mirzakhani\",\"description\":\"Graph Your Way to Great Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:52:23.906908\",\"folder\":null,\"id\":\"f3378fa8-ccaf-4a3b-90d6-b8ab0c4e481f\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Awesome Joule\",\"description\":\"Design, Develop, Dialogize.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:52:43.863440\",\"folder\":null,\"id\":\"deaa50e7-a8b1-46b1-856c-334ee781e1c2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Peppy Shockley\",\"description\":\"Generate, Innovate, Communicate.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:53:43.299699\",\"folder\":null,\"id\":\"c72eac2c-d924-40c6-a102-da524216d090\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Zany Dewey\",\"description\":\"Flow into the Future of Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:54:18.848827\",\"folder\":null,\"id\":\"d9425324-bb60-462e-b431-90a536f2bc76\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gloomy Joliot\",\"description\":\"Language Engineering Excellence.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:58:12.348608\",\"folder\":null,\"id\":\"621ba134-3fac-487c-98cd-96941439f1be\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Backstabbing Franklin\",\"description\":\"Craft Language Connections Here.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:58:13.491824\",\"folder\":null,\"id\":\"86ca9773-c7b7-4a1a-859a-6cbe0ddff206\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sharp Swartz\",\"description\":\"Beyond Text Generation - Unleashing Business Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:58:13.524414\",\"folder\":null,\"id\":\"da1c02b7-d608-4498-9946-7d02f55fa103\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Serene Volta\",\"description\":\"Connect the Dots, Craft Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:58:13.641432\",\"folder\":null,\"id\":\"8d5dd998-6b51-4f65-8331-086a7f3b11d7\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Focused Lichterman\",\"description\":\"Crafting Dialogues that Drive Business Success.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:58:13.746120\",\"folder\":null,\"id\":\"942027d3-e2ea-48c6-8279-0a41b54e8862\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lively Einstein\",\"description\":\"Unleashing Linguistic Creativity.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:58:13.746904\",\"folder\":null,\"id\":\"9e9b6298-1073-4297-8ecc-3c620b432e70\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cocky Planck\",\"description\":\"Empowering Language Engineering.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:58:13.747420\",\"folder\":null,\"id\":\"7cd60c83-b797-4e60-af6d-cbc540657943\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Suspicious Zobell\",\"description\":\"Innovation in Interaction, Revolution in Revenue.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:58:13.749951\",\"folder\":null,\"id\":\"dab08306-9521-4e15-aa11-e6a6a4e210f8\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Small Knuth\",\"description\":\"Nurture NLP Nodes Here.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:16.772119\",\"folder\":null,\"id\":\"c9149590-636a-44f5-aaae-45a4e78fe4df\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Evil Wright\",\"description\":\"Unfolding Linguistic Possibilities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:52.954568\",\"folder\":null,\"id\":\"6b23b2ad-c07c-46f6-b9ad-268783d1712e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Vibrant Lalande\",\"description\":\"Language Models, Mapped and Mastered.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:53.656156\",\"folder\":null,\"id\":\"ece3bcf6-a147-4559-862e-cacff9db5f48\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Happy Gauss\",\"description\":\"The Pinnacle of Prompt Generation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:53.717991\",\"folder\":null,\"id\":\"252b6021-ecad-4eaf-9e2f-106c4c89c496\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gigantic Rosalind\",\"description\":\"Building Powerful Solutions with Language Models.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:53.736261\",\"folder\":null,\"id\":\"b8cb6d8d-c0fb-4e8d-a46e-2c608dc8a714\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Adoring Hubble\",\"description\":\"Powerful Prompts, Perfectly Positioned.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:53.769546\",\"folder\":null,\"id\":\"553a67db-7225-474c-978e-8a40cde2bfb2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Pensive Mclean\",\"description\":\"Unlock the Power of AI in Your Business Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:53.981063\",\"folder\":null,\"id\":\"e0865007-4d80-4edf-87ab-9e8d2892d719\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Trusting Murdock\",\"description\":\"Uncover Business Opportunities with NLP.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:53.982286\",\"folder\":null,\"id\":\"1021cd20-66e0-4b81-9c79-bfe729774d20\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Perky Riemann\",\"description\":\"Powerful Prompts, Perfectly Positioned.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T00:59:53.983216\",\"folder\":null,\"id\":\"089074d3-8a1e-4d85-a59d-b4717090e4d3\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Small Tesla\",\"description\":\"Language Models, Unleashed.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:00:35.704142\",\"folder\":null,\"id\":\"beb49d88-255e-4db4-931b-4ab4358f1097\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Effervescent Boyd\",\"description\":\"Smart Chains, Smarter Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:01:13.569507\",\"folder\":null,\"id\":\"75b5ab8d-e0c0-43cf-912b-8578550e198a\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Small Babbage\",\"description\":\"Interactive Language Weaving.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:01:27.944868\",\"folder\":null,\"id\":\"503edd55-8f70-43e5-87fb-2324eaf62336\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lonely Bose\",\"description\":\"Crafting Dialogues that Drive Business Success.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:02:40.122079\",\"folder\":null,\"id\":\"ae4f2992-1a23-4a43-bec6-68b823935762\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Mirthful Coulomb\",\"description\":\"Craft Meaningful Interactions, Generate Value.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:03:15.263237\",\"folder\":null,\"id\":\"a2a464db-b02a-4440-ad9e-7b552ee6c027\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Drunk Newton\",\"description\":\"Craft Meaningful Interactions, Generate Value.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:03:15.883766\",\"folder\":null,\"id\":\"1a5d9af7-5a96-4035-a09c-e15741785828\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Jovial Pasteur\",\"description\":\"Your Hub for Text Generation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:03:15.933083\",\"folder\":null,\"id\":\"04b94873-0828-41dc-a850-fd4132c9b9f1\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Playful Spence\",\"description\":\"Connect the Dots, Craft Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:03:15.967685\",\"folder\":null,\"id\":\"47003dc2-7884-48a3-aa66-e4185079f4d9\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cheerful Noyce\",\"description\":\"Your Passport to Linguistic Landscapes.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:03:15.983198\",\"folder\":null,\"id\":\"13769cb4-2e15-4d54-a28a-c97dc15db58c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Awesome Edison\",\"description\":\"Unfolding Linguistic Possibilities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:03:16.018879\",\"folder\":null,\"id\":\"453dacde-6b10-406b-a5b3-f90f44be6899\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Upbeat Snyder\",\"description\":\"Powerful Prompts, Perfectly Positioned.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:03:16.205689\",\"folder\":null,\"id\":\"9544fac9-3002-47aa-86b9-102844fe9649\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Tender Khorana\",\"description\":\"Chain the Words, Master Language!\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:03:16.243434\",\"folder\":null,\"id\":\"90498ef6-34f9-45c8-8cd0-fe6a36a26f41\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Elated Albattani\",\"description\":\"Interactive Language Weaving.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:05:07.775497\",\"folder\":null,\"id\":\"9577c416-8ce8-48f6-ad6d-ab2e003bb415\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Charming Goodall\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:07:52.139318\",\"folder\":null,\"id\":\"f10dc08e-b9c7-44b3-8837-b95aee2f6dbb\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Hilarious Ramanujan\",\"description\":\"Harness the Power of Conversational AI.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:08:22.448480\",\"folder\":null,\"id\":\"c864bd8c-67cd-465f-bf7d-7a35c7df37f3\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Tender Mclean\",\"description\":\"Unleashing Linguistic Creativity.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:09:56.507826\",\"folder\":null,\"id\":\"f0c13b19-ae23-40e6-88d6-d135897ee100\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Grave Hawking\",\"description\":\"Building Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:10:27.169757\",\"folder\":null,\"id\":\"0afb91b4-8f41-4270-900a-f5de647d45ad\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gloomy Lovelace\",\"description\":\"Your Passport to Linguistic Landscapes.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:11:02.292233\",\"folder\":null,\"id\":\"0f1e5dcf-8769-4157-b495-5f215b490107\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Fervent Kilby\",\"description\":\"Empowering Enterprises with Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:11:46.960966\",\"folder\":null,\"id\":\"310d03d9-dd50-4946-9a27-38ee06906212\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Admiring Almeida\",\"description\":\"Language Models, Mapped and Mastered.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:12:24.475101\",\"folder\":null,\"id\":\"3cbc8fc2-a86f-4177-9a1c-a833b2a24283\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Elated Roentgen\",\"description\":\"Empowering Enterprises with Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:06.753571\",\"folder\":null,\"id\":\"c508e922-29e9-4234-84ae-505c5bdf41c1\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Perky Poitras\",\"description\":\"Chain the Words, Master Language!\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:07.754605\",\"folder\":null,\"id\":\"1431df05-1b6f-41af-a063-a18d26a946ef\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Tender Khayyam\",\"description\":\"Navigate the Linguistic Landscape, Discover Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:07.791627\",\"folder\":null,\"id\":\"344e03fb-fd49-4e87-be67-7dce04ba655b\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Zealous Mayer\",\"description\":\"Navigate the Linguistic Landscape, Discover Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:07.803889\",\"folder\":null,\"id\":\"8b3ff1cb-3a6c-46ee-b09a-0e9f9f13a8b9\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Tiny Ramanujan\",\"description\":\"Empowering Communication, Enabling Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:07.822583\",\"folder\":null,\"id\":\"18961e76-f4b1-4968-926a-fed22cb04f69\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cheerful Franklin\",\"description\":\"Building Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:07.854440\",\"folder\":null,\"id\":\"0e0ee854-ab46-4333-a848-2e1239a24334\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Serene Swirles\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:07.988932\",\"folder\":null,\"id\":\"cc7b8238-3d15-4f78-bd0c-8311691c9ff8\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sleepy Swartz\",\"description\":\"Uncover Business Opportunities with NLP.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:08.028688\",\"folder\":null,\"id\":\"123369f9-c83c-4ed3-93b6-78ca29c271cf\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cranky Kowalevski\",\"description\":\"Unleashing Linguistic Creativity.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:59.097607\",\"folder\":null,\"id\":\"ed4b1490-e9e5-46bf-b337-166b48eaadd6\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sprightly Golick\",\"description\":\"Building Powerful Solutions with Language Models.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:59.617772\",\"folder\":null,\"id\":\"9d1be311-c618-4e3e-aeb1-4161ab37850e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Boring Newton\",\"description\":\"Generate, Innovate, Communicate.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:59.646124\",\"folder\":null,\"id\":\"63a75f99-1745-40d3-9e27-3d19a143be45\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sprightly Noyce\",\"description\":\"Beyond Text Generation - Unleashing Business Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:59.685781\",\"folder\":null,\"id\":\"b418ca87-eb17-42e8-b789-3fcb0cab3ddb\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Fluffy Fermat\",\"description\":\"Text Generation Meets Business Transformation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:59.705984\",\"folder\":null,\"id\":\"93802b07-eee9-4a2b-8691-7d9a231bd67e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Stoic Payne\",\"description\":\"Beyond Text Generation - Unleashing Business Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:59.723990\",\"folder\":null,\"id\":\"d62df661-0ae5-4b41-a9fb-71cb2e46ad52\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Effervescent Darwin\",\"description\":\"Unleashing Linguistic Creativity.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:59.818343\",\"folder\":null,\"id\":\"d1f62248-415c-474a-bfa6-3509a528a33b\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Focused Thompson\",\"description\":\"Transform Your Business with Smart Dialogues.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:13:59.925999\",\"folder\":null,\"id\":\"d2267176-f020-4c52-90a4-7f944d7c1749\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Admiring Dewey\",\"description\":\"Navigate the Networks of Conversation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:15:07.400402\",\"folder\":null,\"id\":\"8cf1ac8d-d34d-4e8a-a9da-be44672e1dfb\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Prickly Zuse\",\"description\":\"Where Language Meets Logic.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:15:08.384611\",\"folder\":null,\"id\":\"bae3cb5b-0f1b-4e95-bf58-7eab38da3d73\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Hungry Zuse\",\"description\":\"The Pinnacle of Prompt Generation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:15:08.436591\",\"folder\":null,\"id\":\"4dfafe3e-e9ef-405d-be72-550084411d69\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lonely Khayyam\",\"description\":\"Design Dialogues with Langflow.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:15:08.435958\",\"folder\":null,\"id\":\"e0f81215-dc55-4b5a-b8cf-6e2fcbf297a7\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Big Mendel\",\"description\":\"Innovation in Interaction with Langflow.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:15:08.470080\",\"folder\":null,\"id\":\"5022a71c-da47-4975-a4d0-6d2d9e760d3d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Inquisitive Poitras\",\"description\":\"Navigate the Networks of Conversation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:15:08.484430\",\"folder\":null,\"id\":\"4f1ff9e3-3500-404c-80af-2010bc46cdcb\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Joyous Jones\",\"description\":\"The Power of Language at Your Fingertips.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:15:08.661306\",\"folder\":null,\"id\":\"77af3e47-c2cc-42f6-99e1-78589439a447\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Exuberant Khayyam\",\"description\":\"Empowering Communication, Enabling Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:15:08.662877\",\"folder\":null,\"id\":\"6f3e2e56-b329-47e3-86cc-024c29203016\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Dazzling Visvesvaraya\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:16:10.092917\",\"folder\":null,\"id\":\"449ac0ee-ee29-4a9f-9aff-fd6a86624457\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Nostalgic Tesla\",\"description\":\"Nurture NLP Nodes Here.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:16:10.630382\",\"folder\":null,\"id\":\"a2136ed3-dc75-4a8f-ab34-6887ff955b23\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Goofy Noether\",\"description\":\"Language Models, Unleashed.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:16:10.652058\",\"folder\":null,\"id\":\"fd1080f8-db07-481a-b2ba-60f67fcb20a6\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Dazzling Pasteur\",\"description\":\"Language Models, Unleashed.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:16:10.688661\",\"folder\":null,\"id\":\"d534d5e1-92aa-4fb2-a795-7071c4feba47\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Comical Sinoussi\",\"description\":\"Bridging Prompts for Brilliance.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:16:10.741385\",\"folder\":null,\"id\":\"85323170-c066-4d8f-acb0-1b142241389e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Small Ramanujan\",\"description\":\"Uncover Business Opportunities with NLP.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:16:10.790086\",\"folder\":null,\"id\":\"b0d18432-21ab-404b-acb6-57ef97353fad\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sick Joliot\",\"description\":\"Text Generation Meets Business Transformation.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":442,\"id\":\"OpenAIEmbeddings-rVj1B\",\"type\":\"genericNode\",\"position\":{\"x\":-100.23754663035719,\"y\":-718.7575880388187},\"data\":{\"type\":\"OpenAIEmbeddings\",\"node\":{\"template\":{\"allowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[],\"password\":false,\"name\":\"allowed_special\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"chunk_size\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":1000,\"password\":false,\"name\":\"chunk_size\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"deployment\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"text-embedding-ada-002\",\"password\":false,\"name\":\"deployment\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"disallowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"all\",\"password\":false,\"name\":\"disallowed_special\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"embedding_ctx_length\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":8191,\"password\":false,\"name\":\"embedding_ctx_length\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"{\\\"Authorization\\\": \\\"Bearer \\\"}\",\"password\":false,\"name\":\"headers\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"model\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"text-embedding-ada-002\",\"password\":false,\"name\":\"model\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_api_type\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_type\",\"display_name\":\"OpenAI API Type\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_api_version\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_version\",\"display_name\":\"OpenAI API Version\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"show_progress_bar\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"show_progress_bar\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"skip_empty\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"skip_empty\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tiktoken_enabled\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":true,\"password\":true,\"name\":\"tiktoken_enabled\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"_type\":\"OpenAIEmbeddings\"},\"description\":\"OpenAI embedding models.\",\"base_classes\":[\"OpenAIEmbeddings\",\"Embeddings\"],\"display_name\":\"OpenAIEmbeddings\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"OpenAIEmbeddings-rVj1B\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":-100.23754663035719,\"y\":-718.7575880388187}}],\"edges\":[],\"viewport\":{\"x\":267.7156633365312,\"y\":716.9644817529361,\"zoom\":0.7169776240079139}},\"is_component\":false,\"updated_at\":\"2023-12-08T18:52:26.999440\",\"folder\":null,\"id\":\"be39958a-ef42-4fa8-8e54-b611e56b5c97\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Graceful Lumiere\",\"description\":\"Conversational Cartography Unlocked.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-07T01:16:11.012069\",\"folder\":null,\"id\":\"f7dcecfd-533c-4f40-9dcb-f213962ed1a2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"aaaaa\",\"description\":\"Text Generation Meets Business Transformation.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":442,\"id\":\"OpenAIEmbeddings-P6Z0D\",\"type\":\"genericNode\",\"position\":{\"x\":-100.23754663035719,\"y\":-718.7575880388187},\"data\":{\"type\":\"OpenAIEmbeddings\",\"node\":{\"template\":{\"allowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[],\"password\":false,\"name\":\"allowed_special\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"chunk_size\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":1000,\"password\":false,\"name\":\"chunk_size\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"deployment\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"text-embedding-ada-002\",\"password\":false,\"name\":\"deployment\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"disallowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"all\",\"password\":false,\"name\":\"disallowed_special\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"embedding_ctx_length\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":8191,\"password\":false,\"name\":\"embedding_ctx_length\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"{\\\"Authorization\\\": \\\"Bearer \\\"}\",\"password\":false,\"name\":\"headers\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"model\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"text-embedding-ada-002\",\"password\":false,\"name\":\"model\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_api_type\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_type\",\"display_name\":\"OpenAI API Type\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"openai_api_version\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openai_api_version\",\"display_name\":\"OpenAI API Version\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"show_progress_bar\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"show_progress_bar\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"skip_empty\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"skip_empty\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tiktoken_enabled\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":true,\"password\":true,\"name\":\"tiktoken_enabled\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"_type\":\"OpenAIEmbeddings\"},\"description\":\"OpenAI embedding models.\",\"base_classes\":[\"OpenAIEmbeddings\",\"Embeddings\"],\"display_name\":\"OpenAIEmbeddings\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"OpenAIEmbeddings-P6Z0D\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":-100.23754663035719,\"y\":-718.7575880388187}}],\"edges\":[],\"viewport\":{\"x\":266.7156633365312,\"y\":657.9644817529361,\"zoom\":0.7169776240079139}},\"is_component\":false,\"updated_at\":\"2023-12-08T19:05:14.503144\",\"folder\":null,\"id\":\"c2411a20-57c6-44cc-a0d0-2c857453633d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lively Aryabhata\",\"description\":\"Design, Develop, Dialogize.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":459,\"id\":\"CustomComponent-Qhbd7\",\"type\":\"genericNode\",\"position\":{\"x\":-224.36198532285903,\"y\":-39.03047722134913},\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom langflow.field_typing import Data\\nfrom openai import OpenAI\\n\\n\\nclass Component(CustomComponent):\\n display_name: str = \\\"OpenAI STT english translator\\\"\\n description: str = \\\"Transcript and translate any audio to english\\\"\\n documentation: str = \\\"http://docs.langflow.org/components/custom\\\"\\n\\n def build_config(self):\\n return {\\\"audio_path\\\":{\\\"display_name\\\":\\\"Audio path\\\",\\\"input_types\\\":[\\\"str\\\"]},\\\"openAI_key\\\":{\\\"display_name\\\":\\\"OpenAI key\\\",\\\"password\\\":True}}\\n\\n def build(self,audio_path:str,openAI_key:str) -> str:\\n client = OpenAI(api_key=openAI_key)\\n audio_file= open(audio_path, \\\"rb\\\")\\n transcript = client.audio.translations.create(\\n model=\\\"whisper-1\\\", \\n file=audio_file\\n )\\n self.status = transcript.text\\n return transcript.text\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"audio_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"audio_path\",\"display_name\":\"Audio path\",\"advanced\":false,\"input_types\":[\"str\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"aaaaa\"},\"openAI_key\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"openAI_key\",\"display_name\":\"OpenAI key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"}},\"description\":\"Transcript and translate any audio to english\",\"base_classes\":[\"str\"],\"display_name\":\"OpenAI STT english tra\",\"custom_fields\":{\"audio_path\":null,\"openAI_key\":null},\"output_types\":[\"str\"],\"documentation\":\"http://docs.langflow.org/components/custom\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"CustomComponent-Qhbd7\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":-224.36198532285903,\"y\":-39.03047722134913}}],\"edges\":[],\"viewport\":{\"x\":433.8372868055629,\"y\":250.9611989970935,\"zoom\":0.8467453123625275}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:16:56.971879\",\"folder\":null,\"id\":\"122eee5d-9734-4e51-9da5-b39bead64a8d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Goofy Wing\",\"description\":\"Your Toolkit for Text Generation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:18:23.227017\",\"folder\":null,\"id\":\"171d0063-6446-4c6a-8f5b-786a38951d44\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Mad Boyd\",\"description\":\"Empowering Language Engineering.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:18:24.063781\",\"folder\":null,\"id\":\"3a7af50c-6555-4004-a86e-1ea37e477900\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Boring Dewey\",\"description\":\"Unleashing Linguistic Creativity.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:18:24.065404\",\"folder\":null,\"id\":\"dc4b4235-a550-41e2-9ddb-bcb352a1bc03\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Nauseous Carroll\",\"description\":\"Navigate the Networks of Conversation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:18:24.087501\",\"folder\":null,\"id\":\"9550e2bf-db7a-41f5-84e5-177a181bbeda\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Silly Engelbart\",\"description\":\"Generate, Innovate, Communicate.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:18:24.112543\",\"folder\":null,\"id\":\"6a3a24bb-01cb-4d8e-8d17-0dc92d257322\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sassy Khayyam\",\"description\":\"Innovation in Interaction, Revolution in Revenue.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:18:24.147631\",\"folder\":null,\"id\":\"8d372f5e-ca12-4ea8-a1a1-8846afa72692\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Mirthful Bell\",\"description\":\"Connect the Dots, Craft Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:18:24.212921\",\"folder\":null,\"id\":\"800f8785-0f41-4db3-aef8-9e3de5250526\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sleepy Bassi\",\"description\":\"Unleashing Business Potential through Language Engineering.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:18:24.395729\",\"folder\":null,\"id\":\"4589607a-065b-4a8f-ba52-5045d7b04086\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lonely Volhard\",\"description\":\"Where Language Meets Logic.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:20:33.263971\",\"folder\":null,\"id\":\"b2440ed8-44fa-4684-adf7-b5e84bff6577\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Ecstatic Poincare\",\"description\":\"Your Passport to Linguistic Landscapes.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:20:33.377270\",\"folder\":null,\"id\":\"b996f514-e0b8-432f-969b-7276630a8f4b\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Grave Zuse\",\"description\":\"Text Generation Meets Business Transformation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:20:33.406385\",\"folder\":null,\"id\":\"6e2e9c12-0afc-499e-acdd-adf4b5f7d4fc\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Big Hopper\",\"description\":\"Conversation Catalyst Engine.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:20:33.413014\",\"folder\":null,\"id\":\"e020f1a5-aa12-45e7-ba50-6eb64a735e60\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gleeful Jang\",\"description\":\"Conversation Catalyst Engine.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:20:33.433045\",\"folder\":null,\"id\":\"ee58f892-b7b2-408e-b4b9-9d862fc315aa\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Twinkly Ohm\",\"description\":\"Promptly Ingenious!\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:20:33.403404\",\"folder\":null,\"id\":\"023a1fc3-8807-4167-b6b2-f4e5daf036f1\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Distracted Degrasse\",\"description\":\"Bridging Prompts for Brilliance.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:20:33.411655\",\"folder\":null,\"id\":\"085f106f-c1e9-4a0f-ba31-d2fafe685d9c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Exuberant Volta\",\"description\":\"Catalyzing Business Growth through Conversational AI.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:20:33.408697\",\"folder\":null,\"id\":\"14481bb5-1353-452f-9359-d38c9419d79c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Goofy Bose\",\"description\":\"Conversational Cartography Unlocked.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:22:21.774940\",\"folder\":null,\"id\":\"e9316292-4ee1-441b-8327-0b09a7831fe9\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Thirsty Easley\",\"description\":\"Language Models, Mapped and Mastered.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:22:22.416556\",\"folder\":null,\"id\":\"668806ba-3efa-44de-aeb7-4ac082ba9172\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Joyous Mestorf\",\"description\":\"Generate, Innovate, Communicate.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:22:22.484048\",\"folder\":null,\"id\":\"3fc0a371-aada-4450-9d17-33d3cc05c870\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Playful Franklin\",\"description\":\"Empowering Language Engineering.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:22:22.509095\",\"folder\":null,\"id\":\"af967c98-5f08-4ee2-b1ce-6c16b4f9ebe2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Goofy Bhaskara\",\"description\":\"Empowering Enterprises with Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:22:22.508465\",\"folder\":null,\"id\":\"758c4164-b521-45d0-a15f-d49480e312eb\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Funky Edison\",\"description\":\"Unravel the Art of Articulation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:22:22.602296\",\"folder\":null,\"id\":\"f9d3d30f-8859-433f-bafc-ccf1a7196e35\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Silly Ride\",\"description\":\"Unfolding Linguistic Possibilities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:22:22.604061\",\"folder\":null,\"id\":\"0142bca5-eb61-42ed-9917-70c4c0f54eb0\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Goofy Noyce\",\"description\":\"Text Generation Meets Business Transformation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:22:22.603113\",\"folder\":null,\"id\":\"0b63d036-4669-4ceb-8ea4-34035340df77\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cocky Bhabha\",\"description\":\"Language Engineering Excellence.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:23:07.345767\",\"folder\":null,\"id\":\"8b9a66d4-a924-4b84-a2b5-5dd0645ac07a\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Thirsty Zobell\",\"description\":\"Unleashing Business Potential through Language Engineering.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:23:07.722319\",\"folder\":null,\"id\":\"c912fd6b-b32d-409f-a0e5-c6249b066429\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Fervent Shaw\",\"description\":\"Language Architect at Work!\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:23:07.750779\",\"folder\":null,\"id\":\"9d755cd4-c652-43e0-a68d-75a5475ce7a3\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Giggly Newton\",\"description\":\"Navigate the Linguistic Landscape, Discover Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:23:07.786602\",\"folder\":null,\"id\":\"0d3af7de-1ada-4c43-a69f-1bfad370ccfc\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Modest Yalow\",\"description\":\"Text Generation Meets Business Transformation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:23:07.792245\",\"folder\":null,\"id\":\"b6444376-4162-436b-8b40-f5a6afc850db\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sad Bhabha\",\"description\":\"Empowering Enterprises with Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:23:07.890349\",\"folder\":null,\"id\":\"d90af439-fb34-4d27-98f2-06f7f9a9ed8c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Spirited Hoover\",\"description\":\"The Pinnacle of Prompt Generation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:23:07.905750\",\"folder\":null,\"id\":\"31597ce2-de3c-490b-9ead-3f702f63cfd9\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Trusting Davinci\",\"description\":\"Design, Develop, Dialogize.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-08T21:23:08.001400\",\"folder\":null,\"id\":\"b43c63e9-a257-4a53-8acc-049e13706ac2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"23\",\"description\":\"23\",\"data\":{\"nodes\":[{\"width\":384,\"height\":467,\"id\":\"PromptTemplate-K7xiS\",\"type\":\"genericNode\",\"position\":{\"x\":-658.2250903773149,\"y\":809.352046606987},\"data\":{\"type\":\"PromptTemplate\",\"node\":{\"template\":{\"output_parser\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"output_parser\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"BaseOutputParser\",\"list\":false},\"input_types\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_types\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"input_variables\":{\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"input_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":true,\"value\":[\"dasdas\",\"dasdasd\"]},\"partial_variables\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"partial_variables\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"template\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"password\":false,\"name\":\"template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"prompt\",\"list\":false,\"value\":\"{dasdas}\\n{dasdasd}\\n\"},\"template_format\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"f-string\",\"password\":false,\"name\":\"template_format\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"str\",\"list\":false},\"validate_template\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"validate_template\",\"advanced\":false,\"dynamic\":true,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"PromptTemplate\",\"dasdas\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"dasdas\",\"display_name\":\"dasdas\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"dasdasd\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"\",\"password\":false,\"name\":\"dasdasd\",\"display_name\":\"dasdasd\",\"advanced\":false,\"input_types\":[\"Document\",\"BaseOutputParser\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"A prompt template for a language model.\",\"base_classes\":[\"PromptTemplate\",\"BasePromptTemplate\",\"StringPromptTemplate\"],\"name\":\"\",\"display_name\":\"PromptTemplate\",\"documentation\":\"https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/\",\"custom_fields\":{\"\":[\"dasdas\",\"dasdasd\"]},\"output_types\":[],\"full_path\":null,\"field_formatters\":{},\"beta\":false,\"error\":null},\"id\":\"PromptTemplate-K7xiS\"},\"selected\":false,\"positionAbsolute\":{\"x\":-658.2250903773149,\"y\":809.352046606987},\"dragging\":false},{\"width\":384,\"height\":366,\"id\":\"AirbyteJSONLoader-DXfcM\",\"type\":\"genericNode\",\"position\":{\"x\":-1110.8267574563533,\"y\":569.1107380883907},\"data\":{\"type\":\"AirbyteJSONLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"suffixes\":[\".json\"],\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\"json\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"\":\"\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"AirbyteJSONLoader\"},\"description\":\"Load local `Airbyte` json files.\",\"base_classes\":[\"Document\"],\"display_name\":\"AirbyteJSONLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/airbyte_json\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"AirbyteJSONLoader-DXfcM\"},\"selected\":false,\"positionAbsolute\":{\"x\":-1110.8267574563533,\"y\":569.1107380883907},\"dragging\":false},{\"width\":384,\"height\":376,\"id\":\"PromptRunner-ckWMH\",\"type\":\"genericNode\",\"position\":{\"x\":-1149.4746387825978,\"y\":992.3970573758324},\"data\":{\"type\":\"PromptRunner\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\n\\nfrom langchain.llms.base import BaseLLM\\nfrom langchain.prompts import PromptTemplate\\nfrom langchain.schema import Document\\n\\n\\nclass PromptRunner(CustomComponent):\\n display_name: str = \\\"Prompt Runner\\\"\\n description: str = \\\"Run a Chain with the given PromptTemplate\\\"\\n beta: bool = True\\n field_config = {\\n \\\"llm\\\": {\\\"display_name\\\": \\\"LLM\\\"},\\n \\\"prompt\\\": {\\n \\\"display_name\\\": \\\"Prompt Template\\\",\\n \\\"info\\\": \\\"Make sure the prompt has all variables filled.\\\",\\n },\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(self, llm: BaseLLM, prompt: PromptTemplate, inputs: dict = {}) -> Document:\\n chain = prompt | llm\\n # The input is an empty dict because the prompt is already filled\\n result = chain.invoke(input=inputs)\\n if hasattr(result, \\\"content\\\"):\\n result = result.content\\n self.repr_value = result\\n return Document(page_content=str(result))\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"inputs\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"\":\"\"}],\"password\":false,\"name\":\"inputs\",\"display_name\":\"inputs\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLLM\",\"list\":false},\"prompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"prompt\",\"display_name\":\"Prompt Template\",\"advanced\":false,\"dynamic\":false,\"info\":\"Make sure the prompt has all variables filled.\",\"type\":\"PromptTemplate\",\"list\":false}},\"description\":\"Run a Chain with the given PromptTemplate\",\"base_classes\":[\"Document\"],\"display_name\":\"Prompt Runner\",\"custom_fields\":{\"inputs\":null,\"llm\":null,\"prompt\":null},\"output_types\":[\"PromptRunner\"],\"documentation\":\"\",\"beta\":true,\"error\":null},\"id\":\"PromptRunner-ckWMH\"},\"selected\":false,\"positionAbsolute\":{\"x\":-1149.4746387825978,\"y\":992.3970573758324},\"dragging\":false}],\"edges\":[{\"source\":\"PromptRunner-ckWMH\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“Documentล“],ล“dataTypeล“:ล“PromptRunnerล“,ล“idล“:ล“PromptRunner-ckWMHล“}\",\"target\":\"PromptTemplate-K7xiS\",\"targetHandle\":\"{ล“fieldNameล“:ล“dasdasdล“,ล“idล“:ล“PromptTemplate-K7xiSล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"dasdasd\",\"id\":\"PromptTemplate-K7xiS\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"Document\"],\"dataType\":\"PromptRunner\",\"id\":\"PromptRunner-ckWMH\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-PromptRunner-ckWMH{ล“baseClassesล“:[ล“Documentล“],ล“dataTypeล“:ล“PromptRunnerล“,ล“idล“:ล“PromptRunner-ckWMHล“}-PromptTemplate-K7xiS{ล“fieldNameล“:ล“dasdasdล“,ล“idล“:ล“PromptTemplate-K7xiSล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\"},{\"source\":\"AirbyteJSONLoader-DXfcM\",\"sourceHandle\":\"{ล“baseClassesล“:[ล“Documentล“],ล“dataTypeล“:ล“AirbyteJSONLoaderล“,ล“idล“:ล“AirbyteJSONLoader-DXfcMล“}\",\"target\":\"PromptTemplate-K7xiS\",\"targetHandle\":\"{ล“fieldNameล“:ล“dasdasล“,ล“idล“:ล“PromptTemplate-K7xiSล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\",\"data\":{\"targetHandle\":{\"fieldName\":\"dasdas\",\"id\":\"PromptTemplate-K7xiS\",\"inputTypes\":[\"Document\",\"BaseOutputParser\"],\"type\":\"str\"},\"sourceHandle\":{\"baseClasses\":[\"Document\"],\"dataType\":\"AirbyteJSONLoader\",\"id\":\"AirbyteJSONLoader-DXfcM\"}},\"style\":{\"stroke\":\"#555\"},\"className\":\"stroke-gray-900 stroke-connection\",\"animated\":false,\"id\":\"reactflow__edge-AirbyteJSONLoader-DXfcM{ล“baseClassesล“:[ล“Documentล“],ล“dataTypeล“:ล“AirbyteJSONLoaderล“,ล“idล“:ล“AirbyteJSONLoader-DXfcMล“}-PromptTemplate-K7xiS{ล“fieldNameล“:ล“dasdasล“,ล“idล“:ล“PromptTemplate-K7xiSล“,ล“inputTypesล“:[ล“Documentล“,ล“BaseOutputParserล“],ล“typeล“:ล“strล“}\"}],\"viewport\":{\"x\":721.09842496776,\"y\":-303.59762799439625,\"zoom\":0.6417129487814537}},\"is_component\":false,\"updated_at\":\"2023-12-08T22:52:14.560323\",\"folder\":null,\"id\":\"8533c46e-21fd-4b92-b68e-1086ea86c72d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Twinkly Stonebraker\",\"description\":\"Navigate the Linguistic Landscape, Discover Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-09T13:26:42.332360\",\"folder\":null,\"id\":\"92bc0875-4a73-44f2-9410-3b8342e404bf\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Metaphor Search (1)\",\"description\":\"Search in Metaphor with a custom string.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom typing import List, Union\\nfrom langchain.llms.base import BaseLLM\\nfrom langchain.chains import LLMChain\\nfrom langchain import PromptTemplate\\nfrom langchain.schema import Document\\nfrom metaphor_python import Metaphor\\nimport json\\n\\nfrom typing import List\\nfrom langflow.field_typing import Data\\n\\nclass MetaphorSearch(CustomComponent):\\n display_name: str = \\\"Metaphor Search\\\"\\n description: str = \\\"Search in Metaphor with a custom string.\\\"\\n beta = True\\n \\n def build_config(self):\\n return {\\n \\\"metaphor_client\\\": {\\\"display_name\\\": \\\"Metaphor Wrapper\\\"}, \\n \\\"search_num_results\\\": {\\\"display_name\\\": \\\"Number of Results (per domain)\\\"},\\n \\\"include_domains\\\": {\\\"display_name\\\": \\\"Include Domains\\\", \\\"is_list\\\": True},\\n \\\"start_date\\\": {\\\"display_name\\\": \\\"Start Date\\\"},\\n \\\"use_autoprompt\\\": {\\\"display_name\\\": \\\"Use Autoprompt\\\", \\\"type\\\": \\\"boolean\\\"},\\n \\\"search_type\\\": {\\\"display_name\\\": \\\"Search Type\\\", \\\"options\\\": [\\\"neural\\\", \\\"keyword\\\"]},\\n \\\"start_date\\\": {\\\"input_types\\\": [\\\"Data\\\"]}\\n }\\n\\n def build(\\n self,\\n methaphor_client: Data,\\n query: str,\\n search_type: str='keyword',\\n search_num_results: int = 5,\\n include_domains: List[str]= [\\\"youtube.com\\\"],\\n use_autoprompt: bool = False,\\n start_date: str=\\\"2023-01-01\\\",\\n \\n ) -> Data:\\n \\n results = []\\n for domain in include_domains:\\n response = methaphor_client.search(\\n query,\\n num_results=int(search_num_results),\\n include_domains=[domain],\\n use_autoprompt=use_autoprompt,\\n type=search_type,\\n # start_crawl_date=start_date,\\n start_published_date=start_date\\n )\\n results.extend(response.results)\\n \\n self.repr_value = results\\n\\n return results\\n\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"include_domains\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[\"yout\"],\"password\":false,\"name\":\"include_domains\",\"display_name\":\"Include Domains\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"methaphor_client\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"methaphor_client\",\"display_name\":\"methaphor_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false},\"query\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"query\",\"display_name\":\"query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"pasteldasdasdas\"},\"search_num_results\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":5,\"password\":false,\"name\":\"search_num_results\",\"display_name\":\"Number of Results (per domain)\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"search_type\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"keyword\",\"password\":false,\"options\":[\"neural\",\"keyword\"],\"name\":\"search_type\",\"display_name\":\"Search Type\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"start_date\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"start_date\",\"display_name\":\"start_date\",\"advanced\":false,\"input_types\":[\"Data\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"use_autoprompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"use_autoprompt\",\"display_name\":\"Use Autoprompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false}},\"description\":\"Search in Metaphor with a custom string.\",\"base_classes\":[\"Data\"],\"display_name\":\"Metaphor Search\",\"custom_fields\":{\"include_domains\":null,\"methaphor_client\":null,\"query\":null,\"search_num_results\":null,\"search_type\":null,\"start_date\":null,\"use_autoprompt\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"CustomComponent-dMB5d\"},\"id\":\"CustomComponent-dMB5d\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:26:43.668665\",\"folder\":null,\"id\":\"912265df-9b87-4b30-a585-1ca59b944391\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Metaphor Search (2)\",\"description\":\"Search in Metaphor with a custom string.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom typing import List, Union\\nfrom langchain.llms.base import BaseLLM\\nfrom langchain.chains import LLMChain\\nfrom langchain import PromptTemplate\\nfrom langchain.schema import Document\\nfrom metaphor_python import Metaphor\\nimport json\\n\\nfrom typing import List\\nfrom langflow.field_typing import Data\\n\\nclass MetaphorSearch(CustomComponent):\\n display_name: str = \\\"Metaphor Search\\\"\\n description: str = \\\"Search in Metaphor with a custom string.\\\"\\n beta = True\\n \\n def build_config(self):\\n return {\\n \\\"metaphor_client\\\": {\\\"display_name\\\": \\\"Metaphor Wrapper\\\"}, \\n \\\"search_num_results\\\": {\\\"display_name\\\": \\\"Number of Results (per domain)\\\"},\\n \\\"include_domains\\\": {\\\"display_name\\\": \\\"Include Domains\\\", \\\"is_list\\\": True},\\n \\\"start_date\\\": {\\\"display_name\\\": \\\"Start Date\\\"},\\n \\\"use_autoprompt\\\": {\\\"display_name\\\": \\\"Use Autoprompt\\\", \\\"type\\\": \\\"boolean\\\"},\\n \\\"search_type\\\": {\\\"display_name\\\": \\\"Search Type\\\", \\\"options\\\": [\\\"neural\\\", \\\"keyword\\\"]},\\n \\\"start_date\\\": {\\\"input_types\\\": [\\\"Data\\\"]}\\n }\\n\\n def build(\\n self,\\n methaphor_client: Data,\\n query: str,\\n search_type: str='keyword',\\n search_num_results: int = 5,\\n include_domains: List[str]= [\\\"youtube.com\\\"],\\n use_autoprompt: bool = False,\\n start_date: str=\\\"2023-01-01\\\",\\n \\n ) -> Data:\\n \\n results = []\\n for domain in include_domains:\\n response = methaphor_client.search(\\n query,\\n num_results=int(search_num_results),\\n include_domains=[domain],\\n use_autoprompt=use_autoprompt,\\n type=search_type,\\n # start_crawl_date=start_date,\\n start_published_date=start_date\\n )\\n results.extend(response.results)\\n \\n self.repr_value = results\\n\\n return results\\n\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"include_domains\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[\"yout\"],\"password\":false,\"name\":\"include_domains\",\"display_name\":\"Include Domains\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"methaphor_client\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"methaphor_client\",\"display_name\":\"methaphor_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false},\"query\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"query\",\"display_name\":\"query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"pasteldasdasdas\"},\"search_num_results\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":5,\"password\":false,\"name\":\"search_num_results\",\"display_name\":\"Number of Results (per domain)\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"search_type\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"keyword\",\"password\":false,\"options\":[\"neural\",\"keyword\"],\"name\":\"search_type\",\"display_name\":\"Search Type\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"start_date\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"start_date\",\"display_name\":\"start_date\",\"advanced\":false,\"input_types\":[\"Data\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"use_autoprompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"use_autoprompt\",\"display_name\":\"Use Autoprompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false}},\"description\":\"Search in Metaphor with a custom string.\",\"base_classes\":[\"Data\"],\"display_name\":\"Metaphor Search\",\"custom_fields\":{\"include_domains\":null,\"methaphor_client\":null,\"query\":null,\"search_num_results\":null,\"search_type\":null,\"start_date\":null,\"use_autoprompt\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"CustomComponent-ipifC\"},\"id\":\"CustomComponent-ipifC\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:26:49.799612\",\"folder\":null,\"id\":\"ca83ee08-2f93-427d-9897-80fef6dd5447\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Metaphor Search\",\"description\":\"Search in Metaphor with a custom string.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CustomComponent\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from langflow import CustomComponent\\nfrom typing import List, Union\\nfrom langchain.llms.base import BaseLLM\\nfrom langchain.chains import LLMChain\\nfrom langchain import PromptTemplate\\nfrom langchain.schema import Document\\nfrom metaphor_python import Metaphor\\nimport json\\n\\nfrom typing import List\\nfrom langflow.field_typing import Data\\n\\nclass MetaphorSearch(CustomComponent):\\n display_name: str = \\\"Metaphor Search\\\"\\n description: str = \\\"Search in Metaphor with a custom string.\\\"\\n beta = True\\n \\n def build_config(self):\\n return {\\n \\\"metaphor_client\\\": {\\\"display_name\\\": \\\"Metaphor Wrapper\\\"}, \\n \\\"search_num_results\\\": {\\\"display_name\\\": \\\"Number of Results (per domain)\\\"},\\n \\\"include_domains\\\": {\\\"display_name\\\": \\\"Include Domains\\\", \\\"is_list\\\": True},\\n \\\"start_date\\\": {\\\"display_name\\\": \\\"Start Date\\\"},\\n \\\"use_autoprompt\\\": {\\\"display_name\\\": \\\"Use Autoprompt\\\", \\\"type\\\": \\\"boolean\\\"},\\n \\\"search_type\\\": {\\\"display_name\\\": \\\"Search Type\\\", \\\"options\\\": [\\\"neural\\\", \\\"keyword\\\"]},\\n \\\"start_date\\\": {\\\"input_types\\\": [\\\"Data\\\"]}\\n }\\n\\n def build(\\n self,\\n methaphor_client: Data,\\n query: str,\\n search_type: str='keyword',\\n search_num_results: int = 5,\\n include_domains: List[str]= [\\\"youtube.com\\\"],\\n use_autoprompt: bool = False,\\n start_date: str=\\\"2023-01-01\\\",\\n \\n ) -> Data:\\n \\n results = []\\n for domain in include_domains:\\n response = methaphor_client.search(\\n query,\\n num_results=int(search_num_results),\\n include_domains=[domain],\\n use_autoprompt=use_autoprompt,\\n type=search_type,\\n # start_crawl_date=start_date,\\n start_published_date=start_date\\n )\\n results.extend(response.results)\\n \\n self.repr_value = results\\n\\n return results\\n\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"include_domains\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[\"yout\"],\"password\":false,\"name\":\"include_domains\",\"display_name\":\"Include Domains\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"methaphor_client\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"methaphor_client\",\"display_name\":\"methaphor_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Data\",\"list\":false},\"query\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"query\",\"display_name\":\"query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"pasteldasdasdas\"},\"search_num_results\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":5,\"password\":false,\"name\":\"search_num_results\",\"display_name\":\"Number of Results (per domain)\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"search_type\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"keyword\",\"password\":false,\"options\":[\"neural\",\"keyword\"],\"name\":\"search_type\",\"display_name\":\"Search Type\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"start_date\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"start_date\",\"display_name\":\"start_date\",\"advanced\":false,\"input_types\":[\"Data\"],\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"use_autoprompt\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"use_autoprompt\",\"display_name\":\"Use Autoprompt\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false}},\"description\":\"Search in Metaphor with a custom string.\",\"base_classes\":[\"Data\"],\"display_name\":\"Metaphor Search\",\"custom_fields\":{\"include_domains\":null,\"methaphor_client\":null,\"query\":null,\"search_num_results\":null,\"search_type\":null,\"start_date\":null,\"use_autoprompt\":null},\"output_types\":[\"Data\"],\"documentation\":\"\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"CustomComponent-Y4qL7\"},\"id\":\"CustomComponent-Y4qL7\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:26:53.719960\",\"folder\":null,\"id\":\"5847602b-769a-4a82-82e8-a70f54a59929\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lively Williams\",\"description\":\"Conversational Cartography Unlocked.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-09T13:27:45.691254\",\"folder\":null,\"id\":\"0e3bdba9-127a-4399-81a4-2865b70a4a47\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Shared Component\",\"description\":\"Conversational Cartography Unlocked.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":328,\"id\":\"CSVAgent-TK9Ea\",\"type\":\"genericNode\",\"position\":{\"x\":251.25514772667083,\"y\":160.7424529887874},\"data\":{\"type\":\"CSVAgent\",\"node\":{\"template\":{\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"_type\":\"csv_agent\"},\"description\":\"Construct a CSV agent from a CSV and tools.\",\"base_classes\":[\"AgentExecutor\"],\"display_name\":\"CSVAgent\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/agents/toolkits/csv\",\"beta\":false,\"error\":null},\"id\":\"CSVAgent-TK9Ea\"},\"positionAbsolute\":{\"x\":251.25514772667083,\"y\":160.7424529887874}}],\"edges\":[],\"viewport\":{\"x\":104.85568116317398,\"y\":88.26375874183478,\"zoom\":0.7169776240079145}},\"is_component\":false,\"updated_at\":\"2023-12-09T13:28:34.119070\",\"folder\":null,\"id\":\"29c1a247-47b0-457b-8666-7c0a67dc72b0\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"teste cristhian\",\"description\":\"11111\",\"data\":{\"nodes\":[{\"width\":384,\"height\":328,\"id\":\"CSVAgent-P5wrB\",\"type\":\"genericNode\",\"position\":{\"x\":251.25514772667083,\"y\":160.7424529887874},\"data\":{\"type\":\"CSVAgent\",\"node\":{\"template\":{\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"_type\":\"csv_agent\"},\"description\":\"Construct a CSV agent from a CSV and tools.\",\"base_classes\":[\"AgentExecutor\"],\"display_name\":\"CSVAgent\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/agents/toolkits/csv\",\"beta\":false,\"error\":null},\"id\":\"CSVAgent-P5wrB\"},\"positionAbsolute\":{\"x\":251.25514772667083,\"y\":160.7424529887874}},{\"width\":384,\"height\":626,\"id\":\"OpenAI-zpihD\",\"type\":\"genericNode\",\"position\":{\"x\":-56.983202536768374,\"y\":61.715652677908665},\"data\":{\"type\":\"OpenAI\",\"node\":{\"template\":{\"callbacks\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"callbacks\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"langchain_core.callbacks.base.BaseCallbackHandler\",\"list\":true},\"allowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":[],\"password\":false,\"name\":\"allowed_special\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"batch_size\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":20,\"password\":false,\"name\":\"batch_size\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"best_of\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"best_of\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"cache\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"cache\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"default_headers\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_headers\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"default_query\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"default_query\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"disallowed_special\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"all\",\"password\":false,\"name\":\"disallowed_special\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"frequency_penalty\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":0,\"password\":false,\"name\":\"frequency_penalty\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"http_client\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"http_client\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"logit_bias\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"logit_bias\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":2,\"password\":false,\"name\":\"max_retries\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"max_tokens\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":true,\"name\":\"max_tokens\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_kwargs\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"model_kwargs\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"text-babbage-001\",\"password\":false,\"options\":[\"text-davinci-003\",\"text-davinci-002\",\"text-curie-001\",\"text-babbage-001\",\"text-ada-001\"],\"name\":\"model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"n\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"n\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"openai_api_base\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"openai_api_base\",\"display_name\":\"OpenAI API Base\",\"advanced\":false,\"dynamic\":false,\"info\":\"\\nThe base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\\n\\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.\\n\",\"type\":\"str\",\"list\":false,\"value\":\"dasdasdasdsadasdas\"},\"openai_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":true,\"name\":\"openai_api_key\",\"display_name\":\"OpenAI API Key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_organization\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_organization\",\"display_name\":\"OpenAI Organization\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"openai_proxy\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"openai_proxy\",\"display_name\":\"OpenAI Proxy\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"presence_penalty\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":0,\"password\":false,\"name\":\"presence_penalty\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"streaming\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":false,\"password\":false,\"name\":\"streaming\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"tags\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tags\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"temperature\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"1.4\",\"password\":false,\"name\":\"temperature\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"tiktoken_model_name\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"tiktoken_model_name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"top_p\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":1,\"password\":false,\"name\":\"top_p\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"verbose\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"password\":false,\"name\":\"verbose\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"OpenAI\"},\"description\":\"OpenAI large language models.\",\"base_classes\":[\"OpenAI\",\"BaseLanguageModel\",\"BaseLLM\",\"BaseOpenAI\"],\"display_name\":\"OpenAI\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/model_io/models/llms/integrations/openai\",\"beta\":false,\"error\":null},\"id\":\"OpenAI-zpihD\"},\"selected\":true,\"dragging\":false,\"positionAbsolute\":{\"x\":-56.983202536768374,\"y\":61.715652677908665}}],\"edges\":[],\"viewport\":{\"x\":104.85568116317398,\"y\":88.26375874183478,\"zoom\":0.7169776240079145}},\"is_component\":false,\"updated_at\":\"2023-12-09T13:40:48.453096\",\"folder\":null,\"id\":\"2e59d013-2acb-49a6-915b-9231a7e6eb58\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVAgent (1)\",\"description\":\"Construct a CSV agent from a CSV and tools.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVAgent\",\"node\":{\"template\":{\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"_type\":\"csv_agent\"},\"description\":\"Construct a CSV agent from a CSV and tools.\",\"base_classes\":[\"AgentExecutor\"],\"display_name\":\"CSVAgent\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/agents/toolkits/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVAgent-jsHqy\"},\"id\":\"CSVAgent-jsHqy\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:31:17.317322\",\"folder\":null,\"id\":\"ab1034a9-9b5b-4c65-bf6e-9f098a403942\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Suspicious Wilsonfasdfsd\",\"description\":\"Building Linguistic Labyrinths.fasdfads\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-09T14:43:45.298121\",\"folder\":null,\"id\":\"7d91c0c5-fba6-4c60-b4d1-11d430ef357a\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"AirbyteJSONLoader (1)\",\"description\":\"Load local `Airbyte` json files.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AirbyteJSONLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".json\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"\":\"\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"AirbyteJSONLoader\"},\"description\":\"Load local `Airbyte` json files.\",\"base_classes\":[\"Document\"],\"display_name\":\"AirbyteJSONLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/airbyte_json\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"AirbyteJSONLoader-pAHh6\"},\"id\":\"AirbyteJSONLoader-pAHh6\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:47:58.573137\",\"folder\":null,\"id\":\"f0cc4292-97cc-4748-803d-949e30dcf661\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"AirbyteJSONLoader\",\"description\":\"Load local `Airbyte` json files.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AirbyteJSONLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".json\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"ff2\":\"d3bbd\"},{\"w\":\"bvd\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"AirbyteJSONLoader\"},\"description\":\"Load local `Airbyte` json files.\",\"base_classes\":[\"Document\"],\"display_name\":\"AirbyteJSONLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/airbyte_json\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"AirbyteJSONLoader-0zU2Q\"},\"id\":\"AirbyteJSONLoader-0zU2Q\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:50:09.035318\",\"folder\":null,\"id\":\"5e3c0d55-1a00-4e15-9821-0c625c6415ff\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVAgent\",\"description\":\"Construct a CSV agent from a CSV and tools.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVAgent\",\"node\":{\"template\":{\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"LLM\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"_type\":\"csv_agent\"},\"description\":\"Construct a CSV agent from a CSV and tools.\",\"base_classes\":[\"AgentExecutor\"],\"display_name\":\"CSVAgent\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/agents/toolkits/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVAgent-Ub1Xe\"},\"id\":\"CSVAgent-Ub1Xe\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:50:16.985419\",\"folder\":null,\"id\":\"baee8061-4788-4ce6-928f-c6ce1ecb443c\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lively Heisenberg\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[{\"width\":384,\"height\":366,\"id\":\"CSVLoader-RMUx9\",\"type\":\"genericNode\",\"position\":{\"x\":111,\"y\":345.51250076293945},\"data\":{\"type\":\"CSVLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"z2b\":\"z9\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"CSVLoader\"},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\",\"beta\":false,\"error\":null},\"id\":\"CSVLoader-RMUx9\"},\"positionAbsolute\":{\"x\":111,\"y\":345.51250076293945}}],\"edges\":[],\"viewport\":{\"x\":0,\"y\":0,\"zoom\":1}},\"is_component\":false,\"updated_at\":\"2023-12-09T14:38:40.291137\",\"folder\":null,\"id\":\"109e9629-d569-4555-9d40-42203a5ed035\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CohereEmbeddings\",\"description\":\"Cohere embedding models.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CohereEmbeddings\",\"node\":{\"template\":{\"async_client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"async_client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"client\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"client\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"Any\",\"list\":false},\"cohere_api_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":true,\"name\":\"cohere_api_key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false,\"value\":\"\"},\"max_retries\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"max_retries\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"model\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"embed-english-v2.0\",\"password\":false,\"name\":\"model\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"request_timeout\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"request_timeout\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"float\",\"list\":false},\"truncate\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"truncate\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"user_agent\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"langchain\",\"password\":false,\"name\":\"user_agent\",\"advanced\":true,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"_type\":\"CohereEmbeddings\"},\"description\":\"Cohere embedding models.\",\"base_classes\":[\"CohereEmbeddings\",\"Embeddings\"],\"display_name\":\"CohereEmbeddings\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/cohere\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CohereEmbeddings-HFUAf\"},\"id\":\"CohereEmbeddings-HFUAf\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:50:46.172344\",\"folder\":null,\"id\":\"662d8040-d47c-40db-bda1-66489a1c9d24\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVLoader (1)\",\"description\":\"Load a `CSV` file into a list of Documents.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"cddscz23\":\"aaqd\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"CSVLoader\"},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVLoader-3wrib\"},\"id\":\"CSVLoader-3wrib\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:56:11.662526\",\"folder\":null,\"id\":\"4fae6aec-ddbd-498d-a4d1-ca0290f6a5ad\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVLoader (2)\",\"description\":\"Load a `CSV` file into a list of Documents.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"cddscz23\":\"aaqd\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"CSVLoader\"},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVLoader-VEjyx\"},\"id\":\"CSVLoader-VEjyx\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T13:57:37.560784\",\"folder\":null,\"id\":\"d80635ee-966c-41f2-981c-afa2c388ac6e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVLoader (3)\",\"description\":\"Load a `CSV` file into a list of Documents.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"cddscz23\":\"aaqd\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"CSVLoader\"},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVLoader-PIhOc\"},\"id\":\"CSVLoader-PIhOc\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:00:27.991966\",\"folder\":null,\"id\":\"c5cc4c32-77c8-4889-a9f8-2632466b7366\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVLoader (4)\",\"description\":\"Load a `CSV` file into a list of Documents.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"cddscz23\":\"aaqd\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"CSVLoader\"},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVLoader-deB43\"},\"id\":\"CSVLoader-deB43\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:00:42.509243\",\"folder\":null,\"id\":\"0ab59938-ccf4-4bb9-b285-1f5da38648f0\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVLoader\",\"description\":\"Load a `CSV` file into a list of Documents.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"\":\"aaqd\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"CSVLoader\"},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVLoader-mdkLm\"},\"id\":\"CSVLoader-mdkLm\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:02:17.458354\",\"folder\":null,\"id\":\"f127b7e7-4149-492e-8998-6b1b35ec4153\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVLoader (5)\",\"description\":\"Load a `CSV` file into a list of Documents.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"cddscz23\":\"aaqd\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"CSVLoader\"},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVLoader-FRc6Y\"},\"id\":\"CSVLoader-FRc6Y\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:02:26.958867\",\"folder\":null,\"id\":\"a870a096-725c-4914-add0-8d57d710b7e5\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"AirbyteJSONLoader (2)\",\"description\":\"Load local `Airbyte` json files.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AirbyteJSONLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".json\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"\":\"\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"AirbyteJSONLoader\"},\"description\":\"Load local `Airbyte` json files.\",\"base_classes\":[\"Document\"],\"display_name\":\"AirbyteJSONLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/airbyte_json\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"AirbyteJSONLoader-Z0uol\"},\"id\":\"AirbyteJSONLoader-Z0uol\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:03:33.764117\",\"folder\":null,\"id\":\"2a37c76c-65c8-4c01-a72d-eb46f3d41a56\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Amazon Bedrock Embeddings\",\"description\":\"Embeddings model from Amazon Bedrock.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AmazonBedrockEmbeddings\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Optional\\n\\nfrom langchain.embeddings import BedrockEmbeddings\\nfrom langchain.embeddings.base import Embeddings\\nfrom langflow import CustomComponent\\n\\n\\nclass AmazonBedrockEmeddingsComponent(CustomComponent):\\n \\\"\\\"\\\"\\n A custom component for implementing an Embeddings Model using Amazon Bedrock.\\n \\\"\\\"\\\"\\n\\n display_name: str = \\\"Amazon Bedrock Embeddings\\\"\\n description: str = \\\"Embeddings model from Amazon Bedrock.\\\"\\n documentation = \\\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\\\"\\n beta = True\\n\\n def build_config(self):\\n return {\\n \\\"model_id\\\": {\\n \\\"display_name\\\": \\\"Model Id\\\",\\n \\\"options\\\": [\\\"amazon.titan-embed-text-v1\\\"],\\n },\\n \\\"credentials_profile_name\\\": {\\\"display_name\\\": \\\"Credentials Profile Name\\\"},\\n \\\"endpoint_url\\\": {\\\"display_name\\\": \\\"Bedrock Endpoint URL\\\"},\\n \\\"region_name\\\": {\\\"display_name\\\": \\\"AWS Region\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n model_id: str = \\\"amazon.titan-embed-text-v1\\\",\\n credentials_profile_name: Optional[str] = None,\\n endpoint_url: Optional[str] = None,\\n region_name: Optional[str] = None,\\n ) -> Embeddings:\\n try:\\n output = BedrockEmbeddings(\\n credentials_profile_name=credentials_profile_name,\\n model_id=model_id,\\n endpoint_url=endpoint_url,\\n region_name=region_name,\\n ) # type: ignore\\n except Exception as e:\\n raise ValueError(\\\"Could not connect to AmazonBedrock API.\\\") from e\\n return output\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"credentials_profile_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"credentials_profile_name\",\"display_name\":\"Credentials Profile Name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"endpoint_url\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"endpoint_url\",\"display_name\":\"Bedrock Endpoint URL\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"model_id\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"amazon.titan-embed-text-v1\",\"password\":false,\"options\":[\"amazon.titan-embed-text-v1\"],\"name\":\"model_id\",\"display_name\":\"Model Id\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"region_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"region_name\",\"display_name\":\"AWS Region\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"Embeddings model from Amazon Bedrock.\",\"base_classes\":[\"Embeddings\"],\"display_name\":\"Amazon Bedrock Embeddings\",\"custom_fields\":{\"credentials_profile_name\":null,\"endpoint_url\":null,\"model_id\":null,\"region_name\":null},\"output_types\":[\"AmazonBedrockEmbeddings\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"AmazonBedrockEmbeddings-28ASv\"},\"id\":\"AmazonBedrockEmbeddings-28ASv\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:03:41.066618\",\"folder\":null,\"id\":\"850ba4e6-96ca-49a7-9b0c-4b7048fd52c8\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"ConversationBufferMemory\",\"description\":\"Buffer for storing conversation memory.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"ConversationBufferMemory\",\"node\":{\"template\":{\"chat_memory\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"chat_memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseChatMessageHistory\",\"list\":false},\"ai_prefix\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"AI\",\"password\":false,\"name\":\"ai_prefix\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"human_prefix\":{\"required\":false,\"placeholder\":\"\",\"show\":false,\"multiline\":false,\"value\":\"Human\",\"password\":false,\"name\":\"human_prefix\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"input_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"input_key\",\"advanced\":false,\"dynamic\":false,\"info\":\"The variable to be used as Chat Input when more than one variable is available.\",\"type\":\"str\",\"list\":false},\"memory_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"chat_history\",\"password\":false,\"name\":\"memory_key\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"output_key\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"output_key\",\"advanced\":false,\"dynamic\":false,\"info\":\"The variable to be used as Chat Output (e.g. answer in a ConversationalRetrievalChain)\",\"type\":\"str\",\"list\":false},\"return_messages\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"return_messages\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"bool\",\"list\":false},\"_type\":\"ConversationBufferMemory\"},\"description\":\"Buffer for storing conversation memory.\",\"base_classes\":[\"BaseMemory\",\"BaseChatMemory\",\"ConversationBufferMemory\"],\"display_name\":\"ConversationBufferMemory\",\"custom_fields\":{},\"output_types\":[],\"documentation\":\"https://python.langchain.com/docs/modules/memory/how_to/buffer\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"ConversationBufferMemory-WaoLx\"},\"id\":\"ConversationBufferMemory-WaoLx\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:04:46.058568\",\"folder\":null,\"id\":\"be650940-0449-4eb0-a708-056310f924fd\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Amazon Bedrock Embeddings (1)\",\"description\":\"Embeddings model from Amazon Bedrock.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AmazonBedrockEmbeddings\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Optional\\n\\nfrom langchain.embeddings import BedrockEmbeddings\\nfrom langchain.embeddings.base import Embeddings\\nfrom langflow import CustomComponent\\n\\n\\nclass AmazonBedrockEmeddingsComponent(CustomComponent):\\n \\\"\\\"\\\"\\n A custom component for implementing an Embeddings Model using Amazon Bedrock.\\n \\\"\\\"\\\"\\n\\n display_name: str = \\\"Amazon Bedrock Embeddings\\\"\\n description: str = \\\"Embeddings model from Amazon Bedrock.\\\"\\n documentation = \\\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\\\"\\n beta = True\\n\\n def build_config(self):\\n return {\\n \\\"model_id\\\": {\\n \\\"display_name\\\": \\\"Model Id\\\",\\n \\\"options\\\": [\\\"amazon.titan-embed-text-v1\\\"],\\n },\\n \\\"credentials_profile_name\\\": {\\\"display_name\\\": \\\"Credentials Profile Name\\\"},\\n \\\"endpoint_url\\\": {\\\"display_name\\\": \\\"Bedrock Endpoint URL\\\"},\\n \\\"region_name\\\": {\\\"display_name\\\": \\\"AWS Region\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n model_id: str = \\\"amazon.titan-embed-text-v1\\\",\\n credentials_profile_name: Optional[str] = None,\\n endpoint_url: Optional[str] = None,\\n region_name: Optional[str] = None,\\n ) -> Embeddings:\\n try:\\n output = BedrockEmbeddings(\\n credentials_profile_name=credentials_profile_name,\\n model_id=model_id,\\n endpoint_url=endpoint_url,\\n region_name=region_name,\\n ) # type: ignore\\n except Exception as e:\\n raise ValueError(\\\"Could not connect to AmazonBedrock API.\\\") from e\\n return output\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"credentials_profile_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"credentials_profile_name\",\"display_name\":\"Credentials Profile Name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"endpoint_url\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"endpoint_url\",\"display_name\":\"Bedrock Endpoint URL\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"model_id\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"amazon.titan-embed-text-v1\",\"password\":false,\"options\":[\"amazon.titan-embed-text-v1\"],\"name\":\"model_id\",\"display_name\":\"Model Id\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"region_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"region_name\",\"display_name\":\"AWS Region\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"Embeddings model from Amazon Bedrock.\",\"base_classes\":[\"Embeddings\"],\"display_name\":\"Amazon Bedrock Embeddings\",\"custom_fields\":{\"credentials_profile_name\":null,\"endpoint_url\":null,\"model_id\":null,\"region_name\":null},\"output_types\":[\"AmazonBedrockEmbeddings\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"AmazonBedrockEmbeddings-Bs5PG\"},\"id\":\"AmazonBedrockEmbeddings-Bs5PG\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:05:50.570800\",\"folder\":null,\"id\":\"53ad1fe2-f3af-4354-86e0-eb141ce12859\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Amazon Bedrock Embeddings (2)\",\"description\":\"Embeddings model from Amazon Bedrock.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AmazonBedrockEmbeddings\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Optional\\n\\nfrom langchain.embeddings import BedrockEmbeddings\\nfrom langchain.embeddings.base import Embeddings\\nfrom langflow import CustomComponent\\n\\n\\nclass AmazonBedrockEmeddingsComponent(CustomComponent):\\n \\\"\\\"\\\"\\n A custom component for implementing an Embeddings Model using Amazon Bedrock.\\n \\\"\\\"\\\"\\n\\n display_name: str = \\\"Amazon Bedrock Embeddings\\\"\\n description: str = \\\"Embeddings model from Amazon Bedrock.\\\"\\n documentation = \\\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\\\"\\n beta = True\\n\\n def build_config(self):\\n return {\\n \\\"model_id\\\": {\\n \\\"display_name\\\": \\\"Model Id\\\",\\n \\\"options\\\": [\\\"amazon.titan-embed-text-v1\\\"],\\n },\\n \\\"credentials_profile_name\\\": {\\\"display_name\\\": \\\"Credentials Profile Name\\\"},\\n \\\"endpoint_url\\\": {\\\"display_name\\\": \\\"Bedrock Endpoint URL\\\"},\\n \\\"region_name\\\": {\\\"display_name\\\": \\\"AWS Region\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n model_id: str = \\\"amazon.titan-embed-text-v1\\\",\\n credentials_profile_name: Optional[str] = None,\\n endpoint_url: Optional[str] = None,\\n region_name: Optional[str] = None,\\n ) -> Embeddings:\\n try:\\n output = BedrockEmbeddings(\\n credentials_profile_name=credentials_profile_name,\\n model_id=model_id,\\n endpoint_url=endpoint_url,\\n region_name=region_name,\\n ) # type: ignore\\n except Exception as e:\\n raise ValueError(\\\"Could not connect to AmazonBedrock API.\\\") from e\\n return output\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"credentials_profile_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"credentials_profile_name\",\"display_name\":\"Credentials Profile Name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"endpoint_url\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"endpoint_url\",\"display_name\":\"Bedrock Endpoint URL\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"model_id\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"amazon.titan-embed-text-v1\",\"password\":false,\"options\":[\"amazon.titan-embed-text-v1\"],\"name\":\"model_id\",\"display_name\":\"Model Id\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"region_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"region_name\",\"display_name\":\"AWS Region\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"Embeddings model from Amazon Bedrock.\",\"base_classes\":[\"Embeddings\"],\"display_name\":\"Amazon Bedrock Embeddings\",\"custom_fields\":{\"credentials_profile_name\":null,\"endpoint_url\":null,\"model_id\":null,\"region_name\":null},\"output_types\":[\"AmazonBedrockEmbeddings\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"AmazonBedrockEmbeddings-zSZ4t\"},\"id\":\"AmazonBedrockEmbeddings-zSZ4t\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:06:11.415088\",\"folder\":null,\"id\":\"e9ed1c90-146e-452d-8ccd-ebf2e0da4331\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Amazon Bedrock Embeddings (3)\",\"description\":\"Embeddings model from Amazon Bedrock.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AmazonBedrockEmbeddings\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Optional\\n\\nfrom langchain.embeddings import BedrockEmbeddings\\nfrom langchain.embeddings.base import Embeddings\\nfrom langflow import CustomComponent\\n\\n\\nclass AmazonBedrockEmeddingsComponent(CustomComponent):\\n \\\"\\\"\\\"\\n A custom component for implementing an Embeddings Model using Amazon Bedrock.\\n \\\"\\\"\\\"\\n\\n display_name: str = \\\"Amazon Bedrock Embeddings\\\"\\n description: str = \\\"Embeddings model from Amazon Bedrock.\\\"\\n documentation = \\\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\\\"\\n beta = True\\n\\n def build_config(self):\\n return {\\n \\\"model_id\\\": {\\n \\\"display_name\\\": \\\"Model Id\\\",\\n \\\"options\\\": [\\\"amazon.titan-embed-text-v1\\\"],\\n },\\n \\\"credentials_profile_name\\\": {\\\"display_name\\\": \\\"Credentials Profile Name\\\"},\\n \\\"endpoint_url\\\": {\\\"display_name\\\": \\\"Bedrock Endpoint URL\\\"},\\n \\\"region_name\\\": {\\\"display_name\\\": \\\"AWS Region\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n model_id: str = \\\"amazon.titan-embed-text-v1\\\",\\n credentials_profile_name: Optional[str] = None,\\n endpoint_url: Optional[str] = None,\\n region_name: Optional[str] = None,\\n ) -> Embeddings:\\n try:\\n output = BedrockEmbeddings(\\n credentials_profile_name=credentials_profile_name,\\n model_id=model_id,\\n endpoint_url=endpoint_url,\\n region_name=region_name,\\n ) # type: ignore\\n except Exception as e:\\n raise ValueError(\\\"Could not connect to AmazonBedrock API.\\\") from e\\n return output\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"credentials_profile_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"credentials_profile_name\",\"display_name\":\"Credentials Profile Name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"endpoint_url\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"endpoint_url\",\"display_name\":\"Bedrock Endpoint URL\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"model_id\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"amazon.titan-embed-text-v1\",\"password\":false,\"options\":[\"amazon.titan-embed-text-v1\"],\"name\":\"model_id\",\"display_name\":\"Model Id\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"region_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"region_name\",\"display_name\":\"AWS Region\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"Embeddings model from Amazon Bedrock.\",\"base_classes\":[\"Embeddings\"],\"display_name\":\"Amazon Bedrock Embeddings\",\"custom_fields\":{\"credentials_profile_name\":null,\"endpoint_url\":null,\"model_id\":null,\"region_name\":null},\"output_types\":[\"AmazonBedrockEmbeddings\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"AmazonBedrockEmbeddings-Bxhlt\"},\"id\":\"AmazonBedrockEmbeddings-Bxhlt\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:07:06.411108\",\"folder\":null,\"id\":\"83783c57-64e3-41a6-aa7e-ed82f80f1e53\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"CSVLoader (6)\",\"description\":\"Load a `CSV` file into a list of Documents.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"CSVLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".csv\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"z2b\":\"z9\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"CSVLoader\"},\"description\":\"Load a `CSV` file into a list of Documents.\",\"base_classes\":[\"Document\"],\"display_name\":\"CSVLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/csv\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"CSVLoader-2pn2o\"},\"id\":\"CSVLoader-2pn2o\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:38:30.706258\",\"folder\":null,\"id\":\"c4ae9de6-9df3-4d3c-afc9-1752af4fecd7\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Agent Initializer\",\"description\":\"Initialize a Langchain Agent.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AgentInitializer\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from typing import Callable, List, Union\\n\\nfrom langchain.agents import AgentExecutor, AgentType, initialize_agent, types\\n\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import BaseChatMemory, BaseLanguageModel, Tool\\n\\n\\nclass AgentInitializerComponent(CustomComponent):\\n display_name: str = \\\"Agent Initializer\\\"\\n description: str = \\\"Initialize a Langchain Agent.\\\"\\n documentation: str = \\\"https://python.langchain.com/docs/modules/agents/agent_types/\\\"\\n\\n def build_config(self):\\n agents = list(types.AGENT_TO_CLASS.keys())\\n # field_type and required are optional\\n return {\\n \\\"agent\\\": {\\\"options\\\": agents, \\\"value\\\": agents[0], \\\"display_name\\\": \\\"Agent Type\\\"},\\n \\\"max_iterations\\\": {\\\"display_name\\\": \\\"Max Iterations\\\", \\\"value\\\": 10},\\n \\\"memory\\\": {\\\"display_name\\\": \\\"Memory\\\"},\\n \\\"tools\\\": {\\\"display_name\\\": \\\"Tools\\\"},\\n \\\"llm\\\": {\\\"display_name\\\": \\\"Language Model\\\"},\\n }\\n\\n def build(\\n self, agent: str, llm: BaseLanguageModel, memory: BaseChatMemory, tools: List[Tool], max_iterations: int\\n ) -> Union[AgentExecutor, Callable]:\\n agent = AgentType(agent)\\n return initialize_agent(\\n tools=tools,\\n llm=llm,\\n agent=agent,\\n memory=memory,\\n return_intermediate_steps=True,\\n handle_parsing_errors=True,\\n max_iterations=max_iterations,\\n )\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"agent\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"zero-shot-react-description\",\"password\":false,\"options\":[\"zero-shot-react-description\",\"react-docstore\",\"self-ask-with-search\",\"conversational-react-description\",\"chat-zero-shot-react-description\",\"chat-conversational-react-description\",\"structured-chat-zero-shot-react-description\",\"openai-functions\",\"openai-multi-functions\",\"JsonAgent\",\"CSVAgent\",\"AgentInitializer\",\"VectorStoreAgent\",\"VectorStoreRouterAgent\",\"SQLAgent\"],\"name\":\"agent\",\"display_name\":\"Agent Type\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"Language Model\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"max_iterations\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":10,\"password\":false,\"name\":\"max_iterations\",\"display_name\":\"Max Iterations\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"memory\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"display_name\":\"Memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseChatMemory\",\"list\":false},\"tools\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"tools\",\"display_name\":\"Tools\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Tool\",\"list\":true}},\"description\":\"Initialize a Langchain Agent.\",\"base_classes\":[\"Chain\",\"AgentExecutor\",\"Callable\"],\"display_name\":\"Agent Initializer\",\"custom_fields\":{\"agent\":null,\"llm\":null,\"max_iterations\":null,\"memory\":null,\"tools\":null},\"output_types\":[\"AgentInitializer\"],\"documentation\":\"https://python.langchain.com/docs/modules/agents/agent_types/\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"AgentInitializer-MJrAC\"},\"id\":\"AgentInitializer-MJrAC\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:42:54.715163\",\"folder\":null,\"id\":\"ff84b5f9-5680-4084-a9f1-7d94fe675486\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Agent Initializer (1)\",\"description\":\"Initialize a Langchain Agent.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AgentInitializer\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":true,\"value\":\"from typing import Callable, List, Union\\n\\nfrom langchain.agents import AgentExecutor, AgentType, initialize_agent, types\\n\\nfrom langflow import CustomComponent\\nfrom langflow.field_typing import BaseChatMemory, BaseLanguageModel, Tool\\n\\n\\nclass AgentInitializerComponent(CustomComponent):\\n display_name: str = \\\"Agent Initializer\\\"\\n description: str = \\\"Initialize a Langchain Agent.\\\"\\n documentation: str = \\\"https://python.langchain.com/docs/modules/agents/agent_types/\\\"\\n\\n def build_config(self):\\n agents = list(types.AGENT_TO_CLASS.keys())\\n # field_type and required are optional\\n return {\\n \\\"agent\\\": {\\\"options\\\": agents, \\\"value\\\": agents[0], \\\"display_name\\\": \\\"Agent Type\\\"},\\n \\\"max_iterations\\\": {\\\"display_name\\\": \\\"Max Iterations\\\", \\\"value\\\": 10},\\n \\\"memory\\\": {\\\"display_name\\\": \\\"Memory\\\"},\\n \\\"tools\\\": {\\\"display_name\\\": \\\"Tools\\\"},\\n \\\"llm\\\": {\\\"display_name\\\": \\\"Language Model\\\"},\\n }\\n\\n def build(\\n self, agent: str, llm: BaseLanguageModel, memory: BaseChatMemory, tools: List[Tool], max_iterations: int\\n ) -> Union[AgentExecutor, Callable]:\\n agent = AgentType(agent)\\n return initialize_agent(\\n tools=tools,\\n llm=llm,\\n agent=agent,\\n memory=memory,\\n return_intermediate_steps=True,\\n handle_parsing_errors=True,\\n max_iterations=max_iterations,\\n )\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"agent\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"zero-shot-react-description\",\"password\":false,\"options\":[\"zero-shot-react-description\",\"react-docstore\",\"self-ask-with-search\",\"conversational-react-description\",\"chat-zero-shot-react-description\",\"chat-conversational-react-description\",\"structured-chat-zero-shot-react-description\",\"openai-functions\",\"openai-multi-functions\",\"JsonAgent\",\"CSVAgent\",\"AgentInitializer\",\"VectorStoreAgent\",\"VectorStoreRouterAgent\",\"SQLAgent\"],\"name\":\"agent\",\"display_name\":\"Agent Type\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"llm\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"llm\",\"display_name\":\"Language Model\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseLanguageModel\",\"list\":false},\"max_iterations\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":10,\"password\":false,\"name\":\"max_iterations\",\"display_name\":\"Max Iterations\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"int\",\"list\":false},\"memory\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"memory\",\"display_name\":\"Memory\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"BaseChatMemory\",\"list\":false},\"tools\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"tools\",\"display_name\":\"Tools\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"Tool\",\"list\":true}},\"description\":\"Initialize a Langchain Agent.\",\"base_classes\":[\"Chain\",\"AgentExecutor\",\"Callable\"],\"display_name\":\"Agent Initializer\",\"custom_fields\":{\"agent\":null,\"llm\":null,\"max_iterations\":null,\"memory\":null,\"tools\":null},\"output_types\":[\"AgentInitializer\"],\"documentation\":\"https://python.langchain.com/docs/modules/agents/agent_types/\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"AgentInitializer-3lcZ4\"},\"id\":\"AgentInitializer-3lcZ4\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:43:20.819934\",\"folder\":null,\"id\":\"97f5db9f-d6cc-4555-88fb-3be102c67814\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Exuberant Banach\",\"description\":\"Unfolding Linguistic Possibilities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-09T14:52:49.951416\",\"folder\":null,\"id\":\"a600acd1-213a-4ce7-8648-ab2ee59f5918\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"AirbyteJSONLoader (3)\",\"description\":\"Load local `Airbyte` json files.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AirbyteJSONLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".json\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"\":\"\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"AirbyteJSONLoader\"},\"description\":\"Load local `Airbyte` json files.\",\"base_classes\":[\"Document\"],\"display_name\":\"AirbyteJSONLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/airbyte_json\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"AirbyteJSONLoader-JhQtx\"},\"id\":\"AirbyteJSONLoader-JhQtx\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:44:49.587337\",\"folder\":null,\"id\":\"07c52ad7-ca52-4cdd-ab40-74a91dbad0dd\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"AirbyteJSONLoader (4)\",\"description\":\"Load local `Airbyte` json files.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AirbyteJSONLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".json\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"\":\"\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"AirbyteJSONLoader\"},\"description\":\"Load local `Airbyte` json files.\",\"base_classes\":[\"Document\"],\"display_name\":\"AirbyteJSONLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/airbyte_json\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"AirbyteJSONLoader-bIvDc\"},\"id\":\"AirbyteJSONLoader-bIvDc\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:45:13.458500\",\"folder\":null,\"id\":\"53e4d256-3653-444b-b8e0-fb97b3ae5c7e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"AirbyteJSONLoader (5)\",\"description\":\"Load local `Airbyte` json files.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AirbyteJSONLoader\",\"node\":{\"template\":{\"file_path\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"\",\"password\":false,\"name\":\"file_path\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"file\",\"list\":false,\"fileTypes\":[\".json\"],\"file_path\":null},\"metadata\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":[{\"\":\"\"}],\"password\":false,\"name\":\"metadata\",\"display_name\":\"Metadata\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"dict\",\"list\":false},\"_type\":\"AirbyteJSONLoader\"},\"description\":\"Load local `Airbyte` json files.\",\"base_classes\":[\"Document\"],\"display_name\":\"AirbyteJSONLoader\",\"custom_fields\":{},\"output_types\":[\"Document\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/airbyte_json\",\"beta\":false,\"error\":null,\"official\":false},\"id\":\"AirbyteJSONLoader-2BLS8\"},\"id\":\"AirbyteJSONLoader-2BLS8\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:45:44.461699\",\"folder\":null,\"id\":\"b5158cc1-c6b8-4e25-907a-bc7e7637aa38\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Amazon Bedrock Embeddings (4)\",\"description\":\"Embeddings model from Amazon Bedrock.\",\"data\":{\"edges\":[],\"nodes\":[{\"data\":{\"type\":\"AmazonBedrockEmbeddings\",\"node\":{\"template\":{\"code\":{\"dynamic\":true,\"required\":true,\"placeholder\":\"\",\"show\":false,\"multiline\":true,\"value\":\"from typing import Optional\\n\\nfrom langchain.embeddings import BedrockEmbeddings\\nfrom langchain.embeddings.base import Embeddings\\nfrom langflow import CustomComponent\\n\\n\\nclass AmazonBedrockEmeddingsComponent(CustomComponent):\\n \\\"\\\"\\\"\\n A custom component for implementing an Embeddings Model using Amazon Bedrock.\\n \\\"\\\"\\\"\\n\\n display_name: str = \\\"Amazon Bedrock Embeddings\\\"\\n description: str = \\\"Embeddings model from Amazon Bedrock.\\\"\\n documentation = \\\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\\\"\\n beta = True\\n\\n def build_config(self):\\n return {\\n \\\"model_id\\\": {\\n \\\"display_name\\\": \\\"Model Id\\\",\\n \\\"options\\\": [\\\"amazon.titan-embed-text-v1\\\"],\\n },\\n \\\"credentials_profile_name\\\": {\\\"display_name\\\": \\\"Credentials Profile Name\\\"},\\n \\\"endpoint_url\\\": {\\\"display_name\\\": \\\"Bedrock Endpoint URL\\\"},\\n \\\"region_name\\\": {\\\"display_name\\\": \\\"AWS Region\\\"},\\n \\\"code\\\": {\\\"show\\\": False},\\n }\\n\\n def build(\\n self,\\n model_id: str = \\\"amazon.titan-embed-text-v1\\\",\\n credentials_profile_name: Optional[str] = None,\\n endpoint_url: Optional[str] = None,\\n region_name: Optional[str] = None,\\n ) -> Embeddings:\\n try:\\n output = BedrockEmbeddings(\\n credentials_profile_name=credentials_profile_name,\\n model_id=model_id,\\n endpoint_url=endpoint_url,\\n region_name=region_name,\\n ) # type: ignore\\n except Exception as e:\\n raise ValueError(\\\"Could not connect to AmazonBedrock API.\\\") from e\\n return output\\n\",\"password\":false,\"name\":\"code\",\"advanced\":false,\"type\":\"code\",\"list\":false},\"_type\":\"CustomComponent\",\"credentials_profile_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"credentials_profile_name\",\"display_name\":\"Credentials Profile Name\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"endpoint_url\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"endpoint_url\",\"display_name\":\"Bedrock Endpoint URL\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false},\"model_id\":{\"required\":true,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"value\":\"amazon.titan-embed-text-v1\",\"password\":false,\"options\":[\"amazon.titan-embed-text-v1\"],\"name\":\"model_id\",\"display_name\":\"Model Id\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":true},\"region_name\":{\"required\":false,\"placeholder\":\"\",\"show\":true,\"multiline\":false,\"password\":false,\"name\":\"region_name\",\"display_name\":\"AWS Region\",\"advanced\":false,\"dynamic\":false,\"info\":\"\",\"type\":\"str\",\"list\":false}},\"description\":\"Embeddings model from Amazon Bedrock.\",\"base_classes\":[\"Embeddings\"],\"display_name\":\"Amazon Bedrock Embeddings\",\"custom_fields\":{\"credentials_profile_name\":null,\"endpoint_url\":null,\"model_id\":null,\"region_name\":null},\"output_types\":[\"AmazonBedrockEmbeddings\"],\"documentation\":\"https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/bedrock\",\"beta\":true,\"error\":null,\"official\":false},\"id\":\"AmazonBedrockEmbeddings-NsBzN\"},\"id\":\"AmazonBedrockEmbeddings-NsBzN\",\"position\":{\"x\":0,\"y\":0},\"type\":\"genericNode\"}],\"viewport\":{\"x\":1,\"y\":1,\"zoom\":1}},\"is_component\":true,\"updated_at\":\"2023-12-09T14:50:29.791575\",\"folder\":null,\"id\":\"3fb77f72-1be7-4ce0-ae89-a82b0eee9acf\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Evil Golick\",\"description\":\"Where Language Meets Logic.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:19:02.707854\",\"folder\":null,\"id\":\"9c5d21c2-ea82-4cf4-a591-c3d3fd3f13e6\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gleeful Davinci (1)\",\"description\":\"Unleashing Linguistic Creativity.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:19:02.761150\",\"folder\":null,\"id\":\"f8e2e16e-129c-4116-9626-2c6b524d97b7\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Effervescent Degrasse\",\"description\":\"Language Models, Mapped and Mastered.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:19:02.764440\",\"folder\":null,\"id\":\"d7f4f7b5-effe-4834-8cab-4f2fc4f6e9de\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Prickly Archimedes\",\"description\":\"Language Chainlink Master.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:19:02.767546\",\"folder\":null,\"id\":\"2265d813-4a87-410f-b06a-65e35db8219e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Boring Heyrovsky\",\"description\":\"Building Intelligent Interactions.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:19:02.765105\",\"folder\":null,\"id\":\"10bfd881-e67e-4c33-965d-ee041695edce\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Nostalgic Carroll\",\"description\":\"Unfolding Linguistic Possibilities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:19:02.811794\",\"folder\":null,\"id\":\"63fa5653-4513-47f2-8dfa-baeb1d981f93\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Pensive Perlman\",\"description\":\"Empowering Communication, Enabling Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:19:02.814993\",\"folder\":null,\"id\":\"f4bc5945-20d9-4703-a5bb-6a4a3ef7fc8e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Hilarious Stallman\",\"description\":\"Connect the Dots, Craft Language.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:19:02.813144\",\"folder\":null,\"id\":\"8d8b80f9-4b74-4cd5-bc5c-08a32c4d2b95\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Awesome Einstein\",\"description\":\"The Power of Language at Your Fingertips.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:20:19.518262\",\"folder\":null,\"id\":\"21808fd7-a492-4e29-8863-301c2785f542\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Funky Swanson\",\"description\":\"Sculpting Language with Precision.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:20:20.185637\",\"folder\":null,\"id\":\"7752299a-4aa9-44db-8d9c-5c4a2ac1b071\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Romantic Pascal\",\"description\":\"Unlock the Power of AI in Your Business Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:20:20.223064\",\"folder\":null,\"id\":\"78f48a13-6a9f-42ce-9d58-ec9b63b381d2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Twinkly Bartik\",\"description\":\"Sculpting Language with Precision.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:20:20.239758\",\"folder\":null,\"id\":\"38074091-3d7c-4d42-b61b-ae195c1b8a4e\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Condescending Joliot\",\"description\":\"Language Models, Unleashed.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:20:20.271996\",\"folder\":null,\"id\":\"773020aa-5c2d-4632-ad9e-21276861ab93\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Gleeful Kalam\",\"description\":\"The Power of Language at Your Fingertips.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:20:20.283929\",\"folder\":null,\"id\":\"0092d077-6d31-401f-a739-b164476b90ed\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Grinning Bhabha\",\"description\":\"Your Passport to Linguistic Landscapes.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:20:20.467739\",\"folder\":null,\"id\":\"4a395211-712d-4dd2-b3bb-e6b19200f15d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Mirthful Babbage\",\"description\":\"Design Dialogues with Langflow.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:20:20.742990\",\"folder\":null,\"id\":\"3f086a82-3e29-4328-9da8-e02dc9201744\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Tiny Volta\",\"description\":\"Nurture NLP Nodes Here.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:24:18.594247\",\"folder\":null,\"id\":\"659b8289-c8e8-413d-9b2b-51e68411f170\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Radiant Jennings\",\"description\":\"Design, Develop, Dialogize.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:24:42.640309\",\"folder\":null,\"id\":\"f55f0640-d47e-4471-b1ba-3411d38ecac5\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Distracted Shaw\",\"description\":\"Interactive Language Weaving.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:24:58.376247\",\"folder\":null,\"id\":\"a039811e-449a-4244-83ed-4ddd731a0921\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Peppy Murdock (1)\",\"description\":\"Language Chainlink Master.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:25:14.674524\",\"folder\":null,\"id\":\"0faf6144-6ca6-4f64-a343-665ae54774ef\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Lively Volta\",\"description\":\"Language Models, Mapped and Mastered.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:26:50.418029\",\"folder\":null,\"id\":\"c5d149d0-c401-4f5e-b79f-2abcc7b8d98d\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Bubbly Curie\",\"description\":\"Navigate the Networks of Conversation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:27:10.900899\",\"folder\":null,\"id\":\"7bb2d226-9740-433d-861f-a499632c5a13\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Radiant Nobel\",\"description\":\"Navigate the Linguistic Landscape, Discover Opportunities.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:29:11.541630\",\"folder\":null,\"id\":\"947906d8-75ea-470c-a8e2-cc80c5d3bdbb\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Cheerful Northcutt\",\"description\":\"Unleashing Business Potential through Language Engineering.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:29:37.169791\",\"folder\":null,\"id\":\"56f109fd-2c18-42ed-a9b2-089a678a0c11\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Suspicious Khayyam\",\"description\":\"Crafting Dialogues that Drive Business Success.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:30:24.686359\",\"folder\":null,\"id\":\"551d7bfa-49aa-43f1-a779-e47eabc2aaf2\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Twinkly Spence\",\"description\":\"Create, Curate, Communicate with Langflow.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:30:47.738472\",\"folder\":null,\"id\":\"12aef128-130e-492e-bf84-62d4cb4cd456\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Mirthful Lavoisier\",\"description\":\"Nurture NLP Nodes Here.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:31:43.272365\",\"folder\":null,\"id\":\"9952c044-6903-4fba-a270-6ed0b90c93c9\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Upbeat Bose\",\"description\":\"Unravel the Art of Articulation.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:32:23.972035\",\"folder\":null,\"id\":\"65f49582-c9fa-4c67-a2bc-4e8fa73ca731\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Tender Perlman\",\"description\":\"Maximize Impact with Intelligent Conversations.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:33:26.984083\",\"folder\":null,\"id\":\"9ae57fe2-c677-47fa-a059-7d3d915a1178\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"},{\"name\":\"Sharp Cori\",\"description\":\"Conversation Catalyst Engine.\",\"data\":{\"nodes\":[],\"edges\":[],\"viewport\":{\"zoom\":1,\"x\":0,\"y\":0}},\"is_component\":false,\"updated_at\":\"2023-12-11T18:33:52.377359\",\"folder\":null,\"id\":\"2920dde2-5c24-4fe0-9c06-ef86b5a16a99\",\"user_id\":\"d253bfba-6368-44dc-85f7-0d6da9e45968\"}]" }, "headersSize": -1, "bodySize": -1, @@ -552,16 +648,31 @@ { "name": "Accept", "value": "application/json, text/plain, */*" }, { "name": "Accept-Encoding", "value": "gzip, deflate, br" }, { "name": "Accept-Language", "value": "en-US,en;q=0.9" }, - { "name": "Authorization", "value": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkMjUzYmZiYS02MzY4LTQ0ZGMtODVmNy0wZDZkYTllNDU5NjgiLCJleHAiOjE3MzM4NTY4OTh9.5MFFb0JCck3ITSKXbxhwO9yAscnXcwXNTV70ZYBRB20" }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkMjUzYmZiYS02MzY4LTQ0ZGMtODVmNy0wZDZkYTllNDU5NjgiLCJleHAiOjE3MzM4NTY4OTh9.5MFFb0JCck3ITSKXbxhwO9yAscnXcwXNTV70ZYBRB20" + }, { "name": "Connection", "value": "keep-alive" }, - { "name": "Cookie", "value": "access_tkn_lflw=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkMjUzYmZiYS02MzY4LTQ0ZGMtODVmNy0wZDZkYTllNDU5NjgiLCJleHAiOjE3MzM4NTY4OTh9.5MFFb0JCck3ITSKXbxhwO9yAscnXcwXNTV70ZYBRB20; refresh_tkn_lflw=auto" }, + { + "name": "Cookie", + "value": "access_tkn_lflw=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkMjUzYmZiYS02MzY4LTQ0ZGMtODVmNy0wZDZkYTllNDU5NjgiLCJleHAiOjE3MzM4NTY4OTh9.5MFFb0JCck3ITSKXbxhwO9yAscnXcwXNTV70ZYBRB20; refresh_tkn_lflw=auto" + }, { "name": "Host", "value": "localhost:3000" }, - { "name": "Referer", "value": "http://localhost:3000/flow/2920dde2-5c24-4fe0-9c06-ef86b5a16a99" }, + { + "name": "Referer", + "value": "http://localhost:3000/flow/2920dde2-5c24-4fe0-9c06-ef86b5a16a99" + }, { "name": "Sec-Fetch-Dest", "value": "empty" }, { "name": "Sec-Fetch-Mode", "value": "cors" }, { "name": "Sec-Fetch-Site", "value": "same-origin" }, - { "name": "User-Agent", "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36" }, - { "name": "sec-ch-ua", "value": "\"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"" }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36" + }, + { + "name": "sec-ch-ua", + "value": "\"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"" + }, { "name": "sec-ch-ua-mobile", "value": "?0" }, { "name": "sec-ch-ua-platform", "value": "\"Linux\"" } ], @@ -596,4 +707,4 @@ } ] } -} \ No newline at end of file +} diff --git a/poetry.lock b/poetry.lock index 46d892aac..2e96250bf 100644 --- a/poetry.lock +++ b/poetry.lock @@ -156,30 +156,31 @@ vine = ">=5.0.0,<6.0.0" [[package]] name = "annotated-types" -version = "0.6.0" +version = "0.7.0" description = "Reusable constraint types to use with typing.Annotated" optional = false python-versions = ">=3.8" files = [ - {file = "annotated_types-0.6.0-py3-none-any.whl", hash = "sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43"}, - {file = "annotated_types-0.6.0.tar.gz", hash = "sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d"}, + {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"}, + {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, ] [[package]] name = "anthropic" -version = "0.26.0" +version = "0.26.1" description = "The official Python library for the anthropic API" optional = false python-versions = ">=3.7" files = [ - {file = "anthropic-0.26.0-py3-none-any.whl", hash = "sha256:38fc415561d71dcf263b89da0cc6ecec498379b56256fc4242e9128bc707b283"}, - {file = "anthropic-0.26.0.tar.gz", hash = "sha256:6aaffeb05d515cf9788eef57150a5f827f3786883628ccac71dbe5671ab6f44e"}, + {file = "anthropic-0.26.1-py3-none-any.whl", hash = "sha256:2812b9b250b551ed8a1f0a7e6ae3f005654098994f45ebca5b5808bd154c9628"}, + {file = "anthropic-0.26.1.tar.gz", hash = "sha256:26680ff781a6f678a30a1dccd0743631e602b23a47719439ffdef5335fa167d8"}, ] [package.dependencies] anyio = ">=3.5.0,<5" distro = ">=1.7.0,<2" httpx = ">=0.23.0,<1" +jiter = ">=0.1.0,<1" pydantic = ">=1.9.0,<3" sniffio = "*" tokenizers = ">=0.13.0" @@ -469,17 +470,17 @@ files = [ [[package]] name = "boto3" -version = "1.34.108" +version = "1.34.110" description = "The AWS SDK for Python" optional = false python-versions = ">=3.8" files = [ - {file = "boto3-1.34.108-py3-none-any.whl", hash = "sha256:3601267d76cac17f1d4595c3d8d968dc15be074b79bfa3985187a02b328a0a5f"}, - {file = "boto3-1.34.108.tar.gz", hash = "sha256:677723295151d29ff9b363598a20c1997c4e2af7e50669d9e428b757fe586a10"}, + {file = "boto3-1.34.110-py3-none-any.whl", hash = "sha256:2fc871b4a5090716c7a71af52c462e539529227f4d4888fd04896d5028f9cedc"}, + {file = "boto3-1.34.110.tar.gz", hash = "sha256:83ffe2273da7bdfdb480d85b0705f04e95bd110e9741f23328b7c76c03e6d53c"}, ] [package.dependencies] -botocore = ">=1.34.108,<1.35.0" +botocore = ">=1.34.110,<1.35.0" jmespath = ">=0.7.1,<2.0.0" s3transfer = ">=0.10.0,<0.11.0" @@ -488,13 +489,13 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.34.108" +version = "1.34.110" description = "Low-level, data-driven core of boto 3." optional = false python-versions = ">=3.8" files = [ - {file = "botocore-1.34.108-py3-none-any.whl", hash = "sha256:b1b9d00804267669c5fcc36489269f7e9c43580c30f0885fbf669cf73cec720b"}, - {file = "botocore-1.34.108.tar.gz", hash = "sha256:384c9408c447631475dc41fdc9bf2e0f30c29c420d96bfe8b468bdc2bace3e13"}, + {file = "botocore-1.34.110-py3-none-any.whl", hash = "sha256:1edf3a825ec0a5edf238b2d42ad23305de11d5a71bb27d6f9a58b7e8862df1b6"}, + {file = "botocore-1.34.110.tar.gz", hash = "sha256:b2c98c40ecf0b1facb9e61ceb7dfa28e61ae2456490554a16c8dbf99f20d6a18"}, ] [package.dependencies] @@ -1847,17 +1848,20 @@ vectorstore-mmr = ["numpy (>=1)", "simsimd (>=3)"] [[package]] name = "emoji" -version = "2.11.1" +version = "2.12.1" description = "Emoji for Python" optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7" +python-versions = ">=3.7" files = [ - {file = "emoji-2.11.1-py2.py3-none-any.whl", hash = "sha256:b7ba25299bbf520cc8727848ae66b986da32aee27dc2887eaea2bff07226ce49"}, - {file = "emoji-2.11.1.tar.gz", hash = "sha256:062ff0b3154b6219143f8b9f4b3e5c64c35bc2b146e6e2349ab5f29e218ce1ee"}, + {file = "emoji-2.12.1-py3-none-any.whl", hash = "sha256:a00d62173bdadc2510967a381810101624a2f0986145b8da0cffa42e29430235"}, + {file = "emoji-2.12.1.tar.gz", hash = "sha256:4aa0488817691aa58d83764b6c209f8a27c0b3ab3f89d1b8dceca1a62e4973eb"}, ] +[package.dependencies] +typing-extensions = ">=4.7.0" + [package.extras] -dev = ["coverage", "coveralls", "pytest"] +dev = ["coverage", "pytest (>=7.4.4)"] [[package]] name = "exceptiongroup" @@ -2581,13 +2585,13 @@ httplib2 = ">=0.19.0" [[package]] name = "google-cloud-aiplatform" -version = "1.51.0" +version = "1.52.0" description = "Vertex AI API client library" optional = false python-versions = ">=3.8" files = [ - {file = "google-cloud-aiplatform-1.51.0.tar.gz", hash = "sha256:901993b4d14392452699c14cf23d72c01c5488ee36a7e00b23195e64d7d2f5ec"}, - {file = "google_cloud_aiplatform-1.51.0-py2.py3-none-any.whl", hash = "sha256:f2d3ff231454fe397f02fce1358680dea76ed7c74fc42e6c7e1aa1acb1648df3"}, + {file = "google-cloud-aiplatform-1.52.0.tar.gz", hash = "sha256:932a56e3050b4bc9a2c0630e6af3c0bd52f0bcf72b5dc01c059874231099edd3"}, + {file = "google_cloud_aiplatform-1.52.0-py2.py3-none-any.whl", hash = "sha256:8c62f5d0ec39e008737ebba4875105ed7563dd0958f591f95dc7816e4b30f92a"}, ] [package.dependencies] @@ -2610,7 +2614,7 @@ datasets = ["pyarrow (>=10.0.1)", "pyarrow (>=14.0.0)", "pyarrow (>=3.0.0,<8.0de endpoint = ["requests (>=2.28.1)"] full = ["cloudpickle (<3.0)", "docker (>=5.0.3)", "explainable-ai-sdk (>=1.0.0)", "fastapi (>=0.71.0,<=0.109.1)", "google-cloud-bigquery", "google-cloud-bigquery-storage", "google-cloud-logging (<4.0)", "google-vizier (>=0.1.6)", "httpx (>=0.23.0,<0.25.0)", "immutabledict", "lit-nlp (==0.4.0)", "mlflow (>=1.27.0,<=2.1.1)", "nest-asyncio (>=1.0.0,<1.6.0)", "numpy (>=1.15.0)", "pandas (>=1.0.0)", "pandas (>=1.0.0,<2.2.0)", "pyarrow (>=10.0.1)", "pyarrow (>=14.0.0)", "pyarrow (>=3.0.0,<8.0dev)", "pyarrow (>=6.0.1)", "pydantic (<2)", "pyyaml (>=5.3.1,<7)", "ray[default] (>=2.4,<2.5.dev0 || >2.9.0,!=2.9.1,!=2.9.2,<=2.9.3)", "ray[default] (>=2.5,<=2.9.3)", "requests (>=2.28.1)", "starlette (>=0.17.1)", "tensorflow (>=2.3.0,<3.0.0dev)", "tensorflow (>=2.3.0,<3.0.0dev)", "urllib3 (>=1.21.1,<1.27)", "uvicorn[standard] (>=0.16.0)"] langchain = ["langchain (>=0.1.16,<0.2)", "langchain-core (<0.2)", "langchain-google-vertexai (<2)"] -langchain-testing = ["absl-py", "cloudpickle (>=2.2.1,<3.0)", "langchain (>=0.1.16,<0.2)", "langchain-core (<0.2)", "langchain-google-vertexai (<2)", "pydantic (>=2.6.3,<3)", "pytest-xdist"] +langchain-testing = ["absl-py", "cloudpickle (>=2.2.1,<4.0)", "langchain (>=0.1.16,<0.2)", "langchain-core (<0.2)", "langchain-google-vertexai (<2)", "pydantic (>=2.6.3,<3)", "pytest-xdist"] lit = ["explainable-ai-sdk (>=1.0.0)", "lit-nlp (==0.4.0)", "pandas (>=1.0.0)", "tensorflow (>=2.3.0,<3.0.0dev)"] metadata = ["numpy (>=1.15.0)", "pandas (>=1.0.0)"] pipelines = ["pyyaml (>=5.3.1,<7)"] @@ -2620,7 +2624,7 @@ private-endpoints = ["requests (>=2.28.1)", "urllib3 (>=1.21.1,<1.27)"] rapid-evaluation = ["nest-asyncio (>=1.0.0,<1.6.0)", "pandas (>=1.0.0,<2.2.0)"] ray = ["google-cloud-bigquery", "google-cloud-bigquery-storage", "immutabledict", "pandas (>=1.0.0,<2.2.0)", "pyarrow (>=6.0.1)", "pydantic (<2)", "ray[default] (>=2.4,<2.5.dev0 || >2.9.0,!=2.9.1,!=2.9.2,<=2.9.3)", "ray[default] (>=2.5,<=2.9.3)"] ray-testing = ["google-cloud-bigquery", "google-cloud-bigquery-storage", "immutabledict", "pandas (>=1.0.0,<2.2.0)", "pyarrow (>=6.0.1)", "pydantic (<2)", "pytest-xdist", "ray[default] (>=2.4,<2.5.dev0 || >2.9.0,!=2.9.1,!=2.9.2,<=2.9.3)", "ray[default] (>=2.5,<=2.9.3)", "ray[train] (>=2.4,<2.5.dev0 || >2.9.0,!=2.9.1,!=2.9.2,<=2.9.3)", "scikit-learn", "tensorflow", "torch (>=2.0.0,<2.1.0)", "xgboost", "xgboost-ray"] -reasoningengine = ["cloudpickle (>=2.2.1,<3.0)", "pydantic (>=2.6.3,<3)"] +reasoningengine = ["cloudpickle (>=2.2.1,<4.0)", "pydantic (>=2.6.3,<3)"] tensorboard = ["tensorflow (>=2.3.0,<3.0.0dev)"] testing = ["bigframes", "cloudpickle (<3.0)", "docker (>=5.0.3)", "explainable-ai-sdk (>=1.0.0)", "fastapi (>=0.71.0,<=0.109.1)", "google-api-core (>=2.11,<3.0.0)", "google-cloud-bigquery", "google-cloud-bigquery-storage", "google-cloud-logging (<4.0)", "google-vizier (>=0.1.6)", "grpcio-testing", "httpx (>=0.23.0,<0.25.0)", "immutabledict", "ipython", "kfp (>=2.6.0,<3.0.0)", "lit-nlp (==0.4.0)", "mlflow (>=1.27.0,<=2.1.1)", "nest-asyncio (>=1.0.0,<1.6.0)", "numpy (>=1.15.0)", "pandas (>=1.0.0)", "pandas (>=1.0.0,<2.2.0)", "pyarrow (>=10.0.1)", "pyarrow (>=14.0.0)", "pyarrow (>=3.0.0,<8.0dev)", "pyarrow (>=6.0.1)", "pydantic (<2)", "pyfakefs", "pytest-asyncio", "pytest-xdist", "pyyaml (>=5.3.1,<7)", "ray[default] (>=2.4,<2.5.dev0 || >2.9.0,!=2.9.1,!=2.9.2,<=2.9.3)", "ray[default] (>=2.5,<=2.9.3)", "requests (>=2.28.1)", "requests-toolbelt (<1.0.0)", "scikit-learn", "starlette (>=0.17.1)", "tensorboard-plugin-profile (>=2.4.0,<3.0.0dev)", "tensorflow (==2.13.0)", "tensorflow (==2.16.1)", "tensorflow (>=2.3.0,<3.0.0dev)", "tensorflow (>=2.3.0,<3.0.0dev)", "tensorflow (>=2.4.0,<3.0.0dev)", "torch (>=2.0.0,<2.1.0)", "torch (>=2.2.0)", "urllib3 (>=1.21.1,<1.27)", "uvicorn[standard] (>=0.16.0)", "werkzeug (>=2.0.0,<2.1.0dev)", "xgboost"] vizier = ["google-vizier (>=0.1.6)"] @@ -2628,13 +2632,13 @@ xai = ["tensorflow (>=2.3.0,<3.0.0dev)"] [[package]] name = "google-cloud-bigquery" -version = "3.23.0" +version = "3.23.1" description = "Google BigQuery API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-bigquery-3.23.0.tar.gz", hash = "sha256:7ecdb207727d513b1bce1f213dbb926ed2e1d4f0122778de00f0e56d19d47a01"}, - {file = "google_cloud_bigquery-3.23.0-py2.py3-none-any.whl", hash = "sha256:dc0a4a47ab541a34aa1dc1f48539d88c091adc0637da7744d7fab6f3bc8886d5"}, + {file = "google-cloud-bigquery-3.23.1.tar.gz", hash = "sha256:4b4597f9291b42102c9667d3b4528f801d4c8f24ef2b12dd1ecb881273330955"}, + {file = "google_cloud_bigquery-3.23.1-py2.py3-none-any.whl", hash = "sha256:9fb72884fdbec9c4643cea6b7f21e1ecf3eb61d5305f87493d271dc801647a9e"}, ] [package.dependencies] @@ -3001,61 +3005,61 @@ protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.1 || >4.21.1,<4 [[package]] name = "grpcio" -version = "1.63.0" +version = "1.64.0" description = "HTTP/2-based RPC framework" optional = false python-versions = ">=3.8" files = [ - {file = "grpcio-1.63.0-cp310-cp310-linux_armv7l.whl", hash = "sha256:2e93aca840c29d4ab5db93f94ed0a0ca899e241f2e8aec6334ab3575dc46125c"}, - {file = "grpcio-1.63.0-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:91b73d3f1340fefa1e1716c8c1ec9930c676d6b10a3513ab6c26004cb02d8b3f"}, - {file = "grpcio-1.63.0-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:b3afbd9d6827fa6f475a4f91db55e441113f6d3eb9b7ebb8fb806e5bb6d6bd0d"}, - {file = "grpcio-1.63.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8f3f6883ce54a7a5f47db43289a0a4c776487912de1a0e2cc83fdaec9685cc9f"}, - {file = "grpcio-1.63.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf8dae9cc0412cb86c8de5a8f3be395c5119a370f3ce2e69c8b7d46bb9872c8d"}, - {file = "grpcio-1.63.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:08e1559fd3b3b4468486b26b0af64a3904a8dbc78d8d936af9c1cf9636eb3e8b"}, - {file = "grpcio-1.63.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5c039ef01516039fa39da8a8a43a95b64e288f79f42a17e6c2904a02a319b357"}, - {file = "grpcio-1.63.0-cp310-cp310-win32.whl", hash = "sha256:ad2ac8903b2eae071055a927ef74121ed52d69468e91d9bcbd028bd0e554be6d"}, - {file = "grpcio-1.63.0-cp310-cp310-win_amd64.whl", hash = "sha256:b2e44f59316716532a993ca2966636df6fbe7be4ab6f099de6815570ebe4383a"}, - {file = "grpcio-1.63.0-cp311-cp311-linux_armv7l.whl", hash = "sha256:f28f8b2db7b86c77916829d64ab21ff49a9d8289ea1564a2b2a3a8ed9ffcccd3"}, - {file = "grpcio-1.63.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:65bf975639a1f93bee63ca60d2e4951f1b543f498d581869922910a476ead2f5"}, - {file = "grpcio-1.63.0-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:b5194775fec7dc3dbd6a935102bb156cd2c35efe1685b0a46c67b927c74f0cfb"}, - {file = "grpcio-1.63.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e4cbb2100ee46d024c45920d16e888ee5d3cf47c66e316210bc236d5bebc42b3"}, - {file = "grpcio-1.63.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ff737cf29b5b801619f10e59b581869e32f400159e8b12d7a97e7e3bdeee6a2"}, - {file = "grpcio-1.63.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:cd1e68776262dd44dedd7381b1a0ad09d9930ffb405f737d64f505eb7f77d6c7"}, - {file = "grpcio-1.63.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:93f45f27f516548e23e4ec3fbab21b060416007dbe768a111fc4611464cc773f"}, - {file = "grpcio-1.63.0-cp311-cp311-win32.whl", hash = "sha256:878b1d88d0137df60e6b09b74cdb73db123f9579232c8456f53e9abc4f62eb3c"}, - {file = "grpcio-1.63.0-cp311-cp311-win_amd64.whl", hash = "sha256:756fed02dacd24e8f488f295a913f250b56b98fb793f41d5b2de6c44fb762434"}, - {file = "grpcio-1.63.0-cp312-cp312-linux_armv7l.whl", hash = "sha256:93a46794cc96c3a674cdfb59ef9ce84d46185fe9421baf2268ccb556f8f81f57"}, - {file = "grpcio-1.63.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:a7b19dfc74d0be7032ca1eda0ed545e582ee46cd65c162f9e9fc6b26ef827dc6"}, - {file = "grpcio-1.63.0-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:8064d986d3a64ba21e498b9a376cbc5d6ab2e8ab0e288d39f266f0fca169b90d"}, - {file = "grpcio-1.63.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:219bb1848cd2c90348c79ed0a6b0ea51866bc7e72fa6e205e459fedab5770172"}, - {file = "grpcio-1.63.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a2d60cd1d58817bc5985fae6168d8b5655c4981d448d0f5b6194bbcc038090d2"}, - {file = "grpcio-1.63.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:9e350cb096e5c67832e9b6e018cf8a0d2a53b2a958f6251615173165269a91b0"}, - {file = "grpcio-1.63.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:56cdf96ff82e3cc90dbe8bac260352993f23e8e256e063c327b6cf9c88daf7a9"}, - {file = "grpcio-1.63.0-cp312-cp312-win32.whl", hash = "sha256:3a6d1f9ea965e750db7b4ee6f9fdef5fdf135abe8a249e75d84b0a3e0c668a1b"}, - {file = "grpcio-1.63.0-cp312-cp312-win_amd64.whl", hash = "sha256:d2497769895bb03efe3187fb1888fc20e98a5f18b3d14b606167dacda5789434"}, - {file = "grpcio-1.63.0-cp38-cp38-linux_armv7l.whl", hash = "sha256:fdf348ae69c6ff484402cfdb14e18c1b0054ac2420079d575c53a60b9b2853ae"}, - {file = "grpcio-1.63.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:a3abfe0b0f6798dedd2e9e92e881d9acd0fdb62ae27dcbbfa7654a57e24060c0"}, - {file = "grpcio-1.63.0-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:6ef0ad92873672a2a3767cb827b64741c363ebaa27e7f21659e4e31f4d750280"}, - {file = "grpcio-1.63.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b416252ac5588d9dfb8a30a191451adbf534e9ce5f56bb02cd193f12d8845b7f"}, - {file = "grpcio-1.63.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e3b77eaefc74d7eb861d3ffbdf91b50a1bb1639514ebe764c47773b833fa2d91"}, - {file = "grpcio-1.63.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:b005292369d9c1f80bf70c1db1c17c6c342da7576f1c689e8eee4fb0c256af85"}, - {file = "grpcio-1.63.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:cdcda1156dcc41e042d1e899ba1f5c2e9f3cd7625b3d6ebfa619806a4c1aadda"}, - {file = "grpcio-1.63.0-cp38-cp38-win32.whl", hash = "sha256:01799e8649f9e94ba7db1aeb3452188048b0019dc37696b0f5ce212c87c560c3"}, - {file = "grpcio-1.63.0-cp38-cp38-win_amd64.whl", hash = "sha256:6a1a3642d76f887aa4009d92f71eb37809abceb3b7b5a1eec9c554a246f20e3a"}, - {file = "grpcio-1.63.0-cp39-cp39-linux_armv7l.whl", hash = "sha256:75f701ff645858a2b16bc8c9fc68af215a8bb2d5a9b647448129de6e85d52bce"}, - {file = "grpcio-1.63.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:cacdef0348a08e475a721967f48206a2254a1b26ee7637638d9e081761a5ba86"}, - {file = "grpcio-1.63.0-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:0697563d1d84d6985e40ec5ec596ff41b52abb3fd91ec240e8cb44a63b895094"}, - {file = "grpcio-1.63.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6426e1fb92d006e47476d42b8f240c1d916a6d4423c5258ccc5b105e43438f61"}, - {file = "grpcio-1.63.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e48cee31bc5f5a31fb2f3b573764bd563aaa5472342860edcc7039525b53e46a"}, - {file = "grpcio-1.63.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:50344663068041b34a992c19c600236e7abb42d6ec32567916b87b4c8b8833b3"}, - {file = "grpcio-1.63.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:259e11932230d70ef24a21b9fb5bb947eb4703f57865a404054400ee92f42f5d"}, - {file = "grpcio-1.63.0-cp39-cp39-win32.whl", hash = "sha256:a44624aad77bf8ca198c55af811fd28f2b3eaf0a50ec5b57b06c034416ef2d0a"}, - {file = "grpcio-1.63.0-cp39-cp39-win_amd64.whl", hash = "sha256:166e5c460e5d7d4656ff9e63b13e1f6029b122104c1633d5f37eaea348d7356d"}, - {file = "grpcio-1.63.0.tar.gz", hash = "sha256:f3023e14805c61bc439fb40ca545ac3d5740ce66120a678a3c6c2c55b70343d1"}, + {file = "grpcio-1.64.0-cp310-cp310-linux_armv7l.whl", hash = "sha256:3b09c3d9de95461214a11d82cc0e6a46a6f4e1f91834b50782f932895215e5db"}, + {file = "grpcio-1.64.0-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:7e013428ab472892830287dd082b7d129f4d8afef49227a28223a77337555eaa"}, + {file = "grpcio-1.64.0-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:02cc9cc3f816d30f7993d0d408043b4a7d6a02346d251694d8ab1f78cc723e7e"}, + {file = "grpcio-1.64.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1f5de082d936e0208ce8db9095821361dfa97af8767a6607ae71425ac8ace15c"}, + {file = "grpcio-1.64.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d7b7bf346391dffa182fba42506adf3a84f4a718a05e445b37824136047686a1"}, + {file = "grpcio-1.64.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:b2cbdfba18408389a1371f8c2af1659119e1831e5ed24c240cae9e27b4abc38d"}, + {file = "grpcio-1.64.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:aca4f15427d2df592e0c8f3d38847e25135e4092d7f70f02452c0e90d6a02d6d"}, + {file = "grpcio-1.64.0-cp310-cp310-win32.whl", hash = "sha256:7c1f5b2298244472bcda49b599be04579f26425af0fd80d3f2eb5fd8bc84d106"}, + {file = "grpcio-1.64.0-cp310-cp310-win_amd64.whl", hash = "sha256:73f84f9e5985a532e47880b3924867de16fa1aa513fff9b26106220c253c70c5"}, + {file = "grpcio-1.64.0-cp311-cp311-linux_armv7l.whl", hash = "sha256:2a18090371d138a57714ee9bffd6c9c9cb2e02ce42c681aac093ae1e7189ed21"}, + {file = "grpcio-1.64.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:59c68df3a934a586c3473d15956d23a618b8f05b5e7a3a904d40300e9c69cbf0"}, + {file = "grpcio-1.64.0-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:b52e1ec7185512103dd47d41cf34ea78e7a7361ba460187ddd2416b480e0938c"}, + {file = "grpcio-1.64.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8d598b5d5e2c9115d7fb7e2cb5508d14286af506a75950762aa1372d60e41851"}, + {file = "grpcio-1.64.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:01615bbcae6875eee8091e6b9414072f4e4b00d8b7e141f89635bdae7cf784e5"}, + {file = "grpcio-1.64.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:0b2dfe6dcace264807d9123d483d4c43274e3f8c39f90ff51de538245d7a4145"}, + {file = "grpcio-1.64.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7f17572dc9acd5e6dfd3014d10c0b533e9f79cd9517fc10b0225746f4c24b58e"}, + {file = "grpcio-1.64.0-cp311-cp311-win32.whl", hash = "sha256:6ec5ed15b4ffe56e2c6bc76af45e6b591c9be0224b3fb090adfb205c9012367d"}, + {file = "grpcio-1.64.0-cp311-cp311-win_amd64.whl", hash = "sha256:597191370951b477b7a1441e1aaa5cacebeb46a3b0bd240ec3bb2f28298c7553"}, + {file = "grpcio-1.64.0-cp312-cp312-linux_armv7l.whl", hash = "sha256:1ce4cd5a61d4532651079e7aae0fedf9a80e613eed895d5b9743e66b52d15812"}, + {file = "grpcio-1.64.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:650a8150a9b288f40d5b7c1d5400cc11724eae50bd1f501a66e1ea949173649b"}, + {file = "grpcio-1.64.0-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:8de0399b983f8676a7ccfdd45e5b2caec74a7e3cc576c6b1eecf3b3680deda5e"}, + {file = "grpcio-1.64.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:46b8b43ba6a2a8f3103f103f97996cad507bcfd72359af6516363c48793d5a7b"}, + {file = "grpcio-1.64.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a54362f03d4dcfae63be455d0a7d4c1403673498b92c6bfe22157d935b57c7a9"}, + {file = "grpcio-1.64.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:1f8ea18b928e539046bb5f9c124d717fbf00cc4b2d960ae0b8468562846f5aa1"}, + {file = "grpcio-1.64.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:c56c91bd2923ddb6e7ed28ebb66d15633b03e0df22206f22dfcdde08047e0a48"}, + {file = "grpcio-1.64.0-cp312-cp312-win32.whl", hash = "sha256:874c741c8a66f0834f653a69e7e64b4e67fcd4a8d40296919b93bab2ccc780ba"}, + {file = "grpcio-1.64.0-cp312-cp312-win_amd64.whl", hash = "sha256:0da1d921f8e4bcee307aeef6c7095eb26e617c471f8cb1c454fd389c5c296d1e"}, + {file = "grpcio-1.64.0-cp38-cp38-linux_armv7l.whl", hash = "sha256:c46fb6bfca17bfc49f011eb53416e61472fa96caa0979b4329176bdd38cbbf2a"}, + {file = "grpcio-1.64.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:3d2004e85cf5213995d09408501f82c8534700d2babeb81dfdba2a3bff0bb396"}, + {file = "grpcio-1.64.0-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:6d5541eb460d73a07418524fb64dcfe0adfbcd32e2dac0f8f90ce5b9dd6c046c"}, + {file = "grpcio-1.64.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1f279ad72dd7d64412e10f2443f9f34872a938c67387863c4cd2fb837f53e7d2"}, + {file = "grpcio-1.64.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85fda90b81da25993aa47fae66cae747b921f8f6777550895fb62375b776a231"}, + {file = "grpcio-1.64.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a053584079b793a54bece4a7d1d1b5c0645bdbee729215cd433703dc2532f72b"}, + {file = "grpcio-1.64.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:579dd9fb11bc73f0de061cab5f8b2def21480fd99eb3743ed041ad6a1913ee2f"}, + {file = "grpcio-1.64.0-cp38-cp38-win32.whl", hash = "sha256:23b6887bb21d77649d022fa1859e05853fdc2e60682fd86c3db652a555a282e0"}, + {file = "grpcio-1.64.0-cp38-cp38-win_amd64.whl", hash = "sha256:753cb58683ba0c545306f4e17dabf468d29cb6f6b11832e1e432160bb3f8403c"}, + {file = "grpcio-1.64.0-cp39-cp39-linux_armv7l.whl", hash = "sha256:2186d76a7e383e1466e0ea2b0febc343ffeae13928c63c6ec6826533c2d69590"}, + {file = "grpcio-1.64.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:0f30596cdcbed3c98024fb4f1d91745146385b3f9fd10c9f2270cbfe2ed7ed91"}, + {file = "grpcio-1.64.0-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:d9171f025a196f5bcfec7e8e7ffb7c3535f7d60aecd3503f9e250296c7cfc150"}, + {file = "grpcio-1.64.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf4c8daed18ae2be2f1fc7d613a76ee2a2e28fdf2412d5c128be23144d28283d"}, + {file = "grpcio-1.64.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3550493ac1d23198d46dc9c9b24b411cef613798dc31160c7138568ec26bc9b4"}, + {file = "grpcio-1.64.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:3161a8f8bb38077a6470508c1a7301cd54301c53b8a34bb83e3c9764874ecabd"}, + {file = "grpcio-1.64.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:2e8fabe2cc57a369638ab1ad8e6043721014fdf9a13baa7c0e35995d3a4a7618"}, + {file = "grpcio-1.64.0-cp39-cp39-win32.whl", hash = "sha256:31890b24d47b62cc27da49a462efe3d02f3c120edb0e6c46dcc0025506acf004"}, + {file = "grpcio-1.64.0-cp39-cp39-win_amd64.whl", hash = "sha256:5a56797dea8c02e7d3a85dfea879f286175cf4d14fbd9ab3ef2477277b927baa"}, + {file = "grpcio-1.64.0.tar.gz", hash = "sha256:257baf07f53a571c215eebe9679c3058a313fd1d1f7c4eede5a8660108c52d9c"}, ] [package.extras] -protobuf = ["grpcio-tools (>=1.63.0)"] +protobuf = ["grpcio-tools (>=1.64.0)"] [[package]] name = "grpcio-health-checking" @@ -3716,6 +3720,76 @@ MarkupSafe = ">=2.0" [package.extras] i18n = ["Babel (>=2.7)"] +[[package]] +name = "jiter" +version = "0.1.0" +description = "" +optional = false +python-versions = ">=3.8" +files = [ + {file = "jiter-0.1.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3aa466e89664cb94e69571df326f0c28e25e2e728f90fa4c3c235bbd35b40609"}, + {file = "jiter-0.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:46eed20f7d9642787eed4143f7b25e16cf9915bb45656980cc9b966bb1e00f59"}, + {file = "jiter-0.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:51fcd4bdb23de3a26c2b64f7bd87e9e43c82f1171145ba13434a654d7c8e9aa9"}, + {file = "jiter-0.1.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:657ca4cf8d99e2e899a5ef778daed5f42eff6de6f23403a6225b6d6bafb55f38"}, + {file = "jiter-0.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5da72cf6582049d2b802e48dd647a096103994a21a7a762fe813b727565ac0ef"}, + {file = "jiter-0.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:148ae1c97be312f1e969d76fbf507818d53e2867e90cf3c7f78941a199d5b84c"}, + {file = "jiter-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f12ce8243d1adb4657cfd9f23ec73fbd206bd5387bea0ebb5514c41fd268a1c1"}, + {file = "jiter-0.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:067cc20889627a0afcaf6b465e942990b9f32d1ad88b0a083ece74becc3831b0"}, + {file = "jiter-0.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:ce5866bb5ff7dc14d036fede7e7ddb86b3b67064dc66dde15de4771e2697e539"}, + {file = "jiter-0.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f446f1f5e8466fc4dfe775f9c5d8b6c3f0b8b07dc24d4ce76d8de3468d7447a8"}, + {file = "jiter-0.1.0-cp310-none-win32.whl", hash = "sha256:47c1e12bd0789bd4f76cc4973a04d512832568a2a4925cd0b52d0ed413aa5e8d"}, + {file = "jiter-0.1.0-cp310-none-win_amd64.whl", hash = "sha256:0316fa82ee4dab455bac2ec05362f3ac19d77e3139225683289c366ce35605b9"}, + {file = "jiter-0.1.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:f47eb274aae20ee3b565886ab315c3f16f9831c0e4fd6722dc100a2dbc0923f9"}, + {file = "jiter-0.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:80d1bf437ea70f43c0976f96cd83fa4618aceb526ba3eaccf9f736d0c3185f5c"}, + {file = "jiter-0.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:215ca1178d30e7a652849b9ca145a4666e1ed0941aef0c61bbaf88a0cd084b66"}, + {file = "jiter-0.1.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:08d7401e20fc660871a02ec05dda9dd93c95052a3c1588385230bca59d9d525b"}, + {file = "jiter-0.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8cd365396e9c50b1c458bad0b21452f4c33fea222413aea78826bca98097f487"}, + {file = "jiter-0.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:050252cde3ae0b0a1eca028a30d953ce2d90e0150c1eef0e5ad75ce163d32484"}, + {file = "jiter-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfcf0996949a9435a2ebba2455934ad72d9faa1de2069c65aeaeaa8c6219820d"}, + {file = "jiter-0.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cfce158151a3a7d0b8f8af549540e1d8328a9dce4ee61c2fb10b12f269d68b6d"}, + {file = "jiter-0.1.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c22d684e663cc99f887c3133a7714c5ecba73524438bc3c93e6bb868c55a9097"}, + {file = "jiter-0.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fe94ab7e548e492dfd35118de7de613078b7e4ddc276976e8fa2f0f37029cad5"}, + {file = "jiter-0.1.0-cp311-none-win32.whl", hash = "sha256:1c41463f82b67d2efa8f269f7cd150c6c16c5902a0508277f5b1c1569e93dc1d"}, + {file = "jiter-0.1.0-cp311-none-win_amd64.whl", hash = "sha256:40d361aa7e728a186495b7b00a47f83f7153714a8b49d9d38dfc45f7b6630f99"}, + {file = "jiter-0.1.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:2a1e6335a4ce98dc64d0871ba3316f06d32728beefe336a621f9877b71a237be"}, + {file = "jiter-0.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:832e1a91fea7819507b1d1215e1a82e02da423ea298231af842b35c41d8411db"}, + {file = "jiter-0.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7f620a558d5952218fe924c7257ce3592835a23e651a140957ba66128675c0d"}, + {file = "jiter-0.1.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2149878ed5c8d1909546d6bb259aaa3ca6b6f81487b03504ea618264f79f4e3b"}, + {file = "jiter-0.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:88ba8abb7025fa4e806a1fa03a2be23cb8584ec737bdf62554873ba2698e44d3"}, + {file = "jiter-0.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c2b29b49fe73c7da72f29d922ce85ee5a74772678ecbc2542e99bc4935c68965"}, + {file = "jiter-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b53bd047ee136f38c0b56779423bae99cab1b9a65b586f1c19e94a6f65013599"}, + {file = "jiter-0.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:92bd461af7766d7f091216942951b603d546f16c1818b9072f5ec7c89bb8a7d2"}, + {file = "jiter-0.1.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:17a45f16e7253c23c81969086707229591645b192935cb2db226e01bd3abd148"}, + {file = "jiter-0.1.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e6be9c021ca191c186275d5a9c70b7767cde0852454a8827c9edde995518c856"}, + {file = "jiter-0.1.0-cp312-none-win32.whl", hash = "sha256:c6445c37eca8d79bedf3bd74683ad668137b05880c7af95f0b96222d62be2db9"}, + {file = "jiter-0.1.0-cp312-none-win_amd64.whl", hash = "sha256:5cf60df741bc80439cb2d9b2923c7b712c6c82ac6848387f95d77c5723e01d0a"}, + {file = "jiter-0.1.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:977d8b322f5f661f16903d2ff8e981e210ba0e057d2d70a1f7b59b8d478e6d45"}, + {file = "jiter-0.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ceea8e8ac9af7b0f098660f3837bc3ec975716103788f36d228c543b1319c475"}, + {file = "jiter-0.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e3de99e3983c0697c449f45ec740096ac559656485aea48066c982530066dd8d"}, + {file = "jiter-0.1.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fb02700ad165a81b0993ad3c550f3b590f0952ff3ce10826fc62aeb064b47b6a"}, + {file = "jiter-0.1.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fb78293d40e38ee5c4370c547af06fb63c7e810f3895ecb76ddcc5fa413e9ccf"}, + {file = "jiter-0.1.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:194fcbd242b35bda13196b501b116e50fa553c414e1cb0350dc1bc910bceb00d"}, + {file = "jiter-0.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c0f55e5cd7b2f649d934b1397bc104200043cdf35addf4892ed66e472e6fe05"}, + {file = "jiter-0.1.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f6a5c6ae1587f60eb995724e34e7257291c919d163906edd030ced77af9f420b"}, + {file = "jiter-0.1.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f9f521361cf3633b314edb2313e7abc4fce59dfa1d918561263474fb5c7e17b8"}, + {file = "jiter-0.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:c1c0e8b99b4e9fed57b7dbd5be63aa0fc36d45551dedc3c3697aa2694c9a0be3"}, + {file = "jiter-0.1.0-cp38-none-win32.whl", hash = "sha256:631d92b82f228774e9f0b79927016fafed369521b8bf059fa8c0353ba4cd76b2"}, + {file = "jiter-0.1.0-cp38-none-win_amd64.whl", hash = "sha256:c1e798a92daf8c6511907c3861c0cf500f23241c160d1c09cb0e9ba668fde667"}, + {file = "jiter-0.1.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:e04740a9ea37118fe6788754eb2ef043ad83809dd677bf3c5f331cc41f8ef70d"}, + {file = "jiter-0.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2d7272eefa5b390c6e450760959e224033b925b0ab76e3279dfdad7f5ec65db0"}, + {file = "jiter-0.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eae1f35e062a71deaad689fb2f51b202c1d55ac941733bdcd7587577e17b8a16"}, + {file = "jiter-0.1.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:230fc4dd9c2c3f4b6608fda3f34891cabee2537eef7c7fd0cd68792def14bcc6"}, + {file = "jiter-0.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7f867893fb7b458c5cb302b33fbe769bb8c8e60594057f29e005fc8ad21b2a58"}, + {file = "jiter-0.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b80b4b64aa5dd63e79bf5addc903855a9a5b7b2493a826cc2cbf9cc9ecfcd23a"}, + {file = "jiter-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ab154d2f877e66757202a71669142c1ba9e9b5c5d1cf81510924950d74f62a3"}, + {file = "jiter-0.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2b43b3fa25b828a2fc4ed7c42f788c261df17d82fb5ced129140ef8be2577ee2"}, + {file = "jiter-0.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:eb3e9a062ddba709db2afde1ef2c72244dfbae09a27b4aa3701267e489ef7a30"}, + {file = "jiter-0.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c98bddd0dd5cfe638f1a7e4341edfae0a1c97aed879207e594b221f8c5058aa6"}, + {file = "jiter-0.1.0-cp39-none-win32.whl", hash = "sha256:9c6d24f8f1764b1c0917bc35131982bea5517cc7b12226f19c4c01215e1be208"}, + {file = "jiter-0.1.0-cp39-none-win_amd64.whl", hash = "sha256:28f3d4f3e88313ef20e51e3330c22c6ce636ca2eb167b185c298a2ea1ab67b8c"}, + {file = "jiter-0.1.0.tar.gz", hash = "sha256:d77da07222a42d2ae907dbd03bca708079e4268bb7e155006c2c6960281f7f1a"}, +] + [[package]] name = "jmespath" version = "1.0.1" @@ -4233,7 +4307,7 @@ types-requests = ">=2.31.0.2,<3.0.0.0" [[package]] name = "langflow-base" -version = "0.0.45" +version = "0.0.46" description = "A Python package with a built-in web application" optional = false python-versions = ">=3.10,<3.13" @@ -4288,13 +4362,13 @@ url = "src/backend/base" [[package]] name = "langfuse" -version = "2.32.0" +version = "2.33.0" description = "A client library for accessing langfuse" optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langfuse-2.32.0-py3-none-any.whl", hash = "sha256:ecdd06fae46637d635249dfaf8f0564ac8e8769519712b11e777d2905309e5d7"}, - {file = "langfuse-2.32.0.tar.gz", hash = "sha256:07dcbb8fa9f754928d6af377dbea530d591680e3f50340d687018d8bcb83ba34"}, + {file = "langfuse-2.33.0-py3-none-any.whl", hash = "sha256:362e3078c5a891df0b7ba3c9ce82f046d1f0274eab3d55337e443fff526f18ad"}, + {file = "langfuse-2.33.0.tar.gz", hash = "sha256:3ca2ef8539a8f28cb80135f4b46b80d5585ce183f8e2035f318be296d09d7d88"}, ] [package.dependencies] @@ -4312,13 +4386,13 @@ openai = ["openai (>=0.27.8)"] [[package]] name = "langsmith" -version = "0.1.59" +version = "0.1.60" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.59-py3-none-any.whl", hash = "sha256:445e3bc1d3baa1e5340cd979907a19483b9763a2ed37b863a01113d406f69345"}, - {file = "langsmith-0.1.59.tar.gz", hash = "sha256:e748a89f4dd6aa441349143e49e546c03b5dfb43376a25bfef6a5ca792fe1437"}, + {file = "langsmith-0.1.60-py3-none-any.whl", hash = "sha256:3c3520ea473de0a984237b3e9d638fdf23ef3acc5aec89a42e693225e72d6120"}, + {file = "langsmith-0.1.60.tar.gz", hash = "sha256:6a145b5454437f9e0f81525f23c4dcdbb8c07b1c91553b8f697456c418d6a599"}, ] [package.dependencies] @@ -4345,13 +4419,13 @@ regex = ["regex"] [[package]] name = "litellm" -version = "1.37.16" +version = "1.37.19" description = "Library to easily interface with LLM API providers" optional = false python-versions = "!=2.7.*,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,!=3.7.*,>=3.8" files = [ - {file = "litellm-1.37.16-py3-none-any.whl", hash = "sha256:b3250832ff8578d906ee9230ebaf13b787f139de705d4d397f87a0ce3ee57392"}, - {file = "litellm-1.37.16.tar.gz", hash = "sha256:c90c826a16d154c755f73a828b84b11cef9fc0891ff322023ea247b3c7fcdc1f"}, + {file = "litellm-1.37.19-py3-none-any.whl", hash = "sha256:5a45b99d6c16a91ba66db6c69d1f406098dbca566be1c2256df5c21c3eb4e4e9"}, + {file = "litellm-1.37.19.tar.gz", hash = "sha256:9ec9260edaf16476dcff6d91a405364fb994200afa725ed46e7be7c3e54d4515"}, ] [package.dependencies] @@ -4494,13 +4568,13 @@ query-tools = ["guidance (>=0.0.64,<0.0.65)", "jsonpath-ng (>=1.6.0,<2.0.0)", "l [[package]] name = "llama-index-embeddings-openai" -version = "0.1.9" +version = "0.1.10" description = "llama-index embeddings openai integration" optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "llama_index_embeddings_openai-0.1.9-py3-none-any.whl", hash = "sha256:fbd16d6197b91f4dbdc6d0707e573cc224ac2b0a48d5b370c6232dd8a2282473"}, - {file = "llama_index_embeddings_openai-0.1.9.tar.gz", hash = "sha256:0fd292b2f9a0ad4534a790d6374726bc885853188087eb018167dcf239643924"}, + {file = "llama_index_embeddings_openai-0.1.10-py3-none-any.whl", hash = "sha256:c3cfa83b537ded34d035fc172a945dd444c87fb58a89b02dfbf785b675f9f681"}, + {file = "llama_index_embeddings_openai-0.1.10.tar.gz", hash = "sha256:1bc1fc9b46773a12870c5d3097d3735d7ca33805f12462a8e35ae8a6e5ce1cf6"}, ] [package.dependencies] @@ -4562,13 +4636,13 @@ query-tools = ["guidance (>=0.0.64,<0.0.65)", "jsonpath-ng (>=1.6.0,<2.0.0)", "l [[package]] name = "llama-index-llms-openai" -version = "0.1.19" +version = "0.1.20" description = "llama-index llms openai integration" optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "llama_index_llms_openai-0.1.19-py3-none-any.whl", hash = "sha256:2bd98ff3abbb4aa0daed1fbe01d8b69f8270ab86c53f8da51fc9f148a672264c"}, - {file = "llama_index_llms_openai-0.1.19.tar.gz", hash = "sha256:f61b64a997892e424fb3cd547090d279c5b210ef15b614fc39de854d3ccaa7e7"}, + {file = "llama_index_llms_openai-0.1.20-py3-none-any.whl", hash = "sha256:f27401acdf9f65bf4d866a100615dcbd81987b890ae5fa9c513d544ba6d711e7"}, + {file = "llama_index_llms_openai-0.1.20.tar.gz", hash = "sha256:0282e4e252893487afd72383b46da5b28ddcd3fb73bace1caefce8a36e9cf492"}, ] [package.dependencies] @@ -5751,13 +5825,13 @@ files = [ [[package]] name = "nvidia-nvjitlink-cu12" -version = "12.4.127" +version = "12.5.40" description = "Nvidia JIT LTO Library" optional = true python-versions = ">=3" files = [ - {file = "nvidia_nvjitlink_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl", hash = "sha256:06b3b9b25bf3f8af351d664978ca26a16d2c5127dbd53c0497e28d1fb9611d57"}, - {file = "nvidia_nvjitlink_cu12-12.4.127-py3-none-win_amd64.whl", hash = "sha256:fd9020c501d27d135f983c6d3e244b197a7ccad769e34df53a42e276b0e25fa1"}, + {file = "nvidia_nvjitlink_cu12-12.5.40-py3-none-manylinux2014_x86_64.whl", hash = "sha256:d9714f27c1d0f0895cd8915c07a87a1d0029a0aa36acaf9156952ec2a8a12189"}, + {file = "nvidia_nvjitlink_cu12-12.5.40-py3-none-win_amd64.whl", hash = "sha256:c3401dc8543b52d3a8158007a0c1ab4e9c768fcbd24153a48c86972102197ddd"}, ] [[package]] @@ -8032,13 +8106,13 @@ files = [ [[package]] name = "requests" -version = "2.31.0" +version = "2.32.2" description = "Python HTTP for Humans." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, - {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, + {file = "requests-2.32.2-py3-none-any.whl", hash = "sha256:fc06670dd0ed212426dfeb94fc1b983d917c4f9847c863f313c9dfaaffb7c23c"}, + {file = "requests-2.32.2.tar.gz", hash = "sha256:dd951ff5ecf3e3b3aa26b40703ba77495dab41da839ae72ef3c8e5d8e2433289"}, ] [package.dependencies] @@ -8301,45 +8375,48 @@ torch = ["safetensors[numpy]", "torch (>=1.10)"] [[package]] name = "scikit-learn" -version = "1.4.2" +version = "1.5.0" description = "A set of python modules for machine learning and data mining" optional = true python-versions = ">=3.9" files = [ - {file = "scikit-learn-1.4.2.tar.gz", hash = "sha256:daa1c471d95bad080c6e44b4946c9390a4842adc3082572c20e4f8884e39e959"}, - {file = "scikit_learn-1.4.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8539a41b3d6d1af82eb629f9c57f37428ff1481c1e34dddb3b9d7af8ede67ac5"}, - {file = "scikit_learn-1.4.2-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:68b8404841f944a4a1459b07198fa2edd41a82f189b44f3e1d55c104dbc2e40c"}, - {file = "scikit_learn-1.4.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81bf5d8bbe87643103334032dd82f7419bc8c8d02a763643a6b9a5c7288c5054"}, - {file = "scikit_learn-1.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36f0ea5d0f693cb247a073d21a4123bdf4172e470e6d163c12b74cbb1536cf38"}, - {file = "scikit_learn-1.4.2-cp310-cp310-win_amd64.whl", hash = "sha256:87440e2e188c87db80ea4023440923dccbd56fbc2d557b18ced00fef79da0727"}, - {file = "scikit_learn-1.4.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:45dee87ac5309bb82e3ea633955030df9bbcb8d2cdb30383c6cd483691c546cc"}, - {file = "scikit_learn-1.4.2-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:1d0b25d9c651fd050555aadd57431b53d4cf664e749069da77f3d52c5ad14b3b"}, - {file = "scikit_learn-1.4.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b0203c368058ab92efc6168a1507d388d41469c873e96ec220ca8e74079bf62e"}, - {file = "scikit_learn-1.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:44c62f2b124848a28fd695db5bc4da019287abf390bfce602ddc8aa1ec186aae"}, - {file = "scikit_learn-1.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:5cd7b524115499b18b63f0c96f4224eb885564937a0b3477531b2b63ce331904"}, - {file = "scikit_learn-1.4.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:90378e1747949f90c8f385898fff35d73193dfcaec3dd75d6b542f90c4e89755"}, - {file = "scikit_learn-1.4.2-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:ff4effe5a1d4e8fed260a83a163f7dbf4f6087b54528d8880bab1d1377bd78be"}, - {file = "scikit_learn-1.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:671e2f0c3f2c15409dae4f282a3a619601fa824d2c820e5b608d9d775f91780c"}, - {file = "scikit_learn-1.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d36d0bc983336bbc1be22f9b686b50c964f593c8a9a913a792442af9bf4f5e68"}, - {file = "scikit_learn-1.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:d762070980c17ba3e9a4a1e043ba0518ce4c55152032f1af0ca6f39b376b5928"}, - {file = "scikit_learn-1.4.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d9993d5e78a8148b1d0fdf5b15ed92452af5581734129998c26f481c46586d68"}, - {file = "scikit_learn-1.4.2-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:426d258fddac674fdf33f3cb2d54d26f49406e2599dbf9a32b4d1696091d4256"}, - {file = "scikit_learn-1.4.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5460a1a5b043ae5ae4596b3126a4ec33ccba1b51e7ca2c5d36dac2169f62ab1d"}, - {file = "scikit_learn-1.4.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49d64ef6cb8c093d883e5a36c4766548d974898d378e395ba41a806d0e824db8"}, - {file = "scikit_learn-1.4.2-cp39-cp39-win_amd64.whl", hash = "sha256:c97a50b05c194be9146d61fe87dbf8eac62b203d9e87a3ccc6ae9aed2dfaf361"}, + {file = "scikit_learn-1.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:12e40ac48555e6b551f0a0a5743cc94cc5a765c9513fe708e01f0aa001da2801"}, + {file = "scikit_learn-1.5.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:f405c4dae288f5f6553b10c4ac9ea7754d5180ec11e296464adb5d6ac68b6ef5"}, + {file = "scikit_learn-1.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df8ccabbf583315f13160a4bb06037bde99ea7d8211a69787a6b7c5d4ebb6fc3"}, + {file = "scikit_learn-1.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c75ea812cd83b1385bbfa94ae971f0d80adb338a9523f6bbcb5e0b0381151d4"}, + {file = "scikit_learn-1.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:a90c5da84829a0b9b4bf00daf62754b2be741e66b5946911f5bdfaa869fcedd6"}, + {file = "scikit_learn-1.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2a65af2d8a6cce4e163a7951a4cfbfa7fceb2d5c013a4b593686c7f16445cf9d"}, + {file = "scikit_learn-1.5.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:4c0c56c3005f2ec1db3787aeaabefa96256580678cec783986836fc64f8ff622"}, + {file = "scikit_learn-1.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f77547165c00625551e5c250cefa3f03f2fc92c5e18668abd90bfc4be2e0bff"}, + {file = "scikit_learn-1.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:118a8d229a41158c9f90093e46b3737120a165181a1b58c03461447aa4657415"}, + {file = "scikit_learn-1.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:a03b09f9f7f09ffe8c5efffe2e9de1196c696d811be6798ad5eddf323c6f4d40"}, + {file = "scikit_learn-1.5.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:460806030c666addee1f074788b3978329a5bfdc9b7d63e7aad3f6d45c67a210"}, + {file = "scikit_learn-1.5.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:1b94d6440603752b27842eda97f6395f570941857456c606eb1d638efdb38184"}, + {file = "scikit_learn-1.5.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d82c2e573f0f2f2f0be897e7a31fcf4e73869247738ab8c3ce7245549af58ab8"}, + {file = "scikit_learn-1.5.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a3a10e1d9e834e84d05e468ec501a356226338778769317ee0b84043c0d8fb06"}, + {file = "scikit_learn-1.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:855fc5fa8ed9e4f08291203af3d3e5fbdc4737bd617a371559aaa2088166046e"}, + {file = "scikit_learn-1.5.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:40fb7d4a9a2db07e6e0cae4dc7bdbb8fada17043bac24104d8165e10e4cff1a2"}, + {file = "scikit_learn-1.5.0-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:47132440050b1c5beb95f8ba0b2402bbd9057ce96ec0ba86f2f445dd4f34df67"}, + {file = "scikit_learn-1.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:174beb56e3e881c90424e21f576fa69c4ffcf5174632a79ab4461c4c960315ac"}, + {file = "scikit_learn-1.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:261fe334ca48f09ed64b8fae13f9b46cc43ac5f580c4a605cbb0a517456c8f71"}, + {file = "scikit_learn-1.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:057b991ac64b3e75c9c04b5f9395eaf19a6179244c089afdebaad98264bff37c"}, + {file = "scikit_learn-1.5.0.tar.gz", hash = "sha256:789e3db01c750ed6d496fa2db7d50637857b451e57bcae863bff707c1247bef7"}, ] [package.dependencies] joblib = ">=1.2.0" numpy = ">=1.19.5" scipy = ">=1.6.0" -threadpoolctl = ">=2.0.0" +threadpoolctl = ">=3.1.0" [package.extras] -benchmark = ["matplotlib (>=3.3.4)", "memory-profiler (>=0.57.0)", "pandas (>=1.1.5)"] -docs = ["Pillow (>=7.1.2)", "matplotlib (>=3.3.4)", "memory-profiler (>=0.57.0)", "numpydoc (>=1.2.0)", "pandas (>=1.1.5)", "plotly (>=5.14.0)", "pooch (>=1.6.0)", "scikit-image (>=0.17.2)", "seaborn (>=0.9.0)", "sphinx (>=6.0.0)", "sphinx-copybutton (>=0.5.2)", "sphinx-gallery (>=0.15.0)", "sphinx-prompt (>=1.3.0)", "sphinxext-opengraph (>=0.4.2)"] +benchmark = ["matplotlib (>=3.3.4)", "memory_profiler (>=0.57.0)", "pandas (>=1.1.5)"] +build = ["cython (>=3.0.10)", "meson-python (>=0.15.0)", "numpy (>=1.19.5)", "scipy (>=1.6.0)"] +docs = ["Pillow (>=7.1.2)", "matplotlib (>=3.3.4)", "memory_profiler (>=0.57.0)", "numpydoc (>=1.2.0)", "pandas (>=1.1.5)", "plotly (>=5.14.0)", "polars (>=0.20.23)", "pooch (>=1.6.0)", "scikit-image (>=0.17.2)", "seaborn (>=0.9.0)", "sphinx (>=6.0.0)", "sphinx-copybutton (>=0.5.2)", "sphinx-gallery (>=0.15.0)", "sphinx-prompt (>=1.3.0)", "sphinxext-opengraph (>=0.4.2)"] examples = ["matplotlib (>=3.3.4)", "pandas (>=1.1.5)", "plotly (>=5.14.0)", "pooch (>=1.6.0)", "scikit-image (>=0.17.2)", "seaborn (>=0.9.0)"] -tests = ["black (>=23.3.0)", "matplotlib (>=3.3.4)", "mypy (>=1.3)", "numpydoc (>=1.2.0)", "pandas (>=1.1.5)", "polars (>=0.19.12)", "pooch (>=1.6.0)", "pyamg (>=4.0.0)", "pyarrow (>=12.0.0)", "pytest (>=7.1.2)", "pytest-cov (>=2.9.0)", "ruff (>=0.0.272)", "scikit-image (>=0.17.2)"] +install = ["joblib (>=1.2.0)", "numpy (>=1.19.5)", "scipy (>=1.6.0)", "threadpoolctl (>=3.1.0)"] +maintenance = ["conda-lock (==2.5.6)"] +tests = ["black (>=24.3.0)", "matplotlib (>=3.3.4)", "mypy (>=1.9)", "numpydoc (>=1.2.0)", "pandas (>=1.1.5)", "polars (>=0.20.23)", "pooch (>=1.6.0)", "pyamg (>=4.0.0)", "pyarrow (>=12.0.0)", "pytest (>=7.1.2)", "pytest-cov (>=2.9.0)", "ruff (>=0.2.1)", "scikit-image (>=0.17.2)"] [[package]] name = "scipy" @@ -8409,19 +8486,18 @@ dev = ["pre-commit", "pytest", "ruff (>=0.3.0)"] [[package]] name = "setuptools" -version = "69.5.1" +version = "70.0.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-69.5.1-py3-none-any.whl", hash = "sha256:c636ac361bc47580504644275c9ad802c50415c7522212252c033bd15f301f32"}, - {file = "setuptools-69.5.1.tar.gz", hash = "sha256:6c1fccdac05a97e598fb0ae3bbed5904ccb317337a51139dcd51453611bbb987"}, + {file = "setuptools-70.0.0-py3-none-any.whl", hash = "sha256:54faa7f2e8d2d11bcd2c07bed282eef1046b5c080d1c32add737d7b5817b1ad4"}, + {file = "setuptools-70.0.0.tar.gz", hash = "sha256:f211a66637b8fa059bb28183da127d4e86396c991a942b028c6650d4319c3fd0"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv]", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mypy (==1.9)", "packaging (>=23.2)", "pip (>=19.1)", "pytest (>=6,!=8.1.1)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] -testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.2)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +testing = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mypy (==1.9)", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.1)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] [[package]] name = "shapely" @@ -9296,13 +9372,13 @@ files = [ [[package]] name = "types-pillow" -version = "10.2.0.20240511" +version = "10.2.0.20240520" description = "Typing stubs for Pillow" optional = false python-versions = ">=3.8" files = [ - {file = "types-Pillow-10.2.0.20240511.tar.gz", hash = "sha256:b2fcc27b8e15ae3741941e43b4f39eba6fce6bcb152af90bbb07b387d2585783"}, - {file = "types_Pillow-10.2.0.20240511-py3-none-any.whl", hash = "sha256:ef87a19ea0a02a89c784cbc1b99dfff6c00dd0d5796a8ac868cf7ec69c5f88ff"}, + {file = "types-Pillow-10.2.0.20240520.tar.gz", hash = "sha256:130b979195465fa1e1676d8e81c9c7c30319e8e95b12fae945e8f0d525213107"}, + {file = "types_Pillow-10.2.0.20240520-py3-none-any.whl", hash = "sha256:33c36494b380e2a269bb742181bea5d9b00820367822dbd3760f07210a1da23d"}, ] [[package]] @@ -9395,13 +9471,13 @@ types-pyOpenSSL = "*" [[package]] name = "types-requests" -version = "2.31.0.20240406" +version = "2.32.0.20240521" description = "Typing stubs for requests" optional = false python-versions = ">=3.8" files = [ - {file = "types-requests-2.31.0.20240406.tar.gz", hash = "sha256:4428df33c5503945c74b3f42e82b181e86ec7b724620419a2966e2de604ce1a1"}, - {file = "types_requests-2.31.0.20240406-py3-none-any.whl", hash = "sha256:6216cdac377c6b9a040ac1c0404f7284bd13199c0e1bb235f4324627e8898cf5"}, + {file = "types-requests-2.32.0.20240521.tar.gz", hash = "sha256:c5c4a0ae95aad51f1bf6dae9eed04a78f7f2575d4b171da37b622e08b93eb5d3"}, + {file = "types_requests-2.32.0.20240521-py3-none-any.whl", hash = "sha256:ab728ba43ffb073db31f21202ecb97db8753ded4a9dc49cb480d8a5350c5c421"}, ] [package.dependencies] @@ -9799,13 +9875,13 @@ files = [ [[package]] name = "weaviate-client" -version = "4.6.2" +version = "4.6.3" description = "A python native Weaviate client" optional = false python-versions = ">=3.8" files = [ - {file = "weaviate_client-4.6.2-py3-none-any.whl", hash = "sha256:dfe1981230100a202f94510447b0136357d77d5663fb4fc37a0894412eb2a207"}, - {file = "weaviate_client-4.6.2.tar.gz", hash = "sha256:6f66319bb2d76501c8c3262c08470873c716578048241373f627095aa3fb6cc1"}, + {file = "weaviate_client-4.6.3-py3-none-any.whl", hash = "sha256:b2921f9aea84a4eccb1c75d55dd2857a87241e5536540fb96ffdf4737ed4fe8a"}, + {file = "weaviate_client-4.6.3.tar.gz", hash = "sha256:a6e638f746f91c310fe6680cffa77949718f17d8b40b966f7037028cacfd94e0"}, ] [package.dependencies] diff --git a/pyproject.toml b/pyproject.toml index aeb58a46f..a4ca17ca9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "langflow" -version = "1.0.0a34" +version = "1.0.0a35" description = "A Python package with a built-in web application" authors = ["Langflow "] maintainers = [ diff --git a/scripts/aws/lib/construct/db.ts b/scripts/aws/lib/construct/db.ts index 662b3e48b..7687da59e 100644 --- a/scripts/aws/lib/construct/db.ts +++ b/scripts/aws/lib/construct/db.ts @@ -1,27 +1,30 @@ -import { Construct } from 'constructs'; -import * as ec2 from 'aws-cdk-lib/aws-ec2' +import { Construct } from "constructs"; +import * as ec2 from "aws-cdk-lib/aws-ec2"; import * as rds from "aws-cdk-lib/aws-rds"; -import * as cdk from 'aws-cdk-lib'; +import * as cdk from "aws-cdk-lib"; interface RdsProps { - vpc: ec2.Vpc - dbSG:ec2.SecurityGroup + vpc: ec2.Vpc; + dbSG: ec2.SecurityGroup; } -export class Rds extends Construct{ - readonly rdsCluster: rds.DatabaseCluster +export class Rds extends Construct { + readonly rdsCluster: rds.DatabaseCluster; - constructor(scope: Construct, id:string, props: RdsProps){ + constructor(scope: Construct, id: string, props: RdsProps) { super(scope, id); - const {vpc, dbSG} = props - const instanceType = ec2.InstanceType.of(ec2.InstanceClass.BURSTABLE4_GRAVITON, ec2.InstanceSize.MEDIUM) + const { vpc, dbSG } = props; + const instanceType = ec2.InstanceType.of( + ec2.InstanceClass.BURSTABLE4_GRAVITON, + ec2.InstanceSize.MEDIUM + ); // RDSใฎใƒ‘ใ‚นใƒฏใƒผใƒ‰ใ‚’่‡ชๅ‹•็”Ÿๆˆใ—ใฆSecrets Managerใซๆ ผ็ด - const rdsCredentials = rds.Credentials.fromGeneratedSecret('db_user',{ - secretName: 'langflow-DbSecret', - }) - + const rdsCredentials = rds.Credentials.fromGeneratedSecret("db_user", { + secretName: "langflow-DbSecret", + }); + // DB ใ‚ฏใƒฉใ‚นใ‚ฟใƒผใฎใƒ‘ใƒฉใƒกใƒผใ‚ฟใ‚ฐใƒซใƒผใƒ—ไฝœๆˆ const clusterParameterGroup = new rds.ParameterGroup( scope, @@ -36,7 +39,7 @@ export class Rds extends Construct{ description: "for-langflow", } ); - clusterParameterGroup.bindToCluster({}) + clusterParameterGroup.bindToCluster({}); // DB ใ‚คใƒณใ‚นใ‚ฟใƒณใ‚นใฎใƒ‘ใƒฉใƒกใ‚ฟใ‚ฐใƒซใƒผใƒ—ไฝœๆˆ const instanceParameterGroup = new rds.ParameterGroup( @@ -44,12 +47,15 @@ export class Rds extends Construct{ "InstanceParameterGroup", { engine: rds.DatabaseClusterEngine.auroraMysql({ - version: rds.AuroraMysqlEngineVersion.of("8.0.mysql_aurora.3.05.2", '8.0'), + version: rds.AuroraMysqlEngineVersion.of( + "8.0.mysql_aurora.3.05.2", + "8.0" + ), }), description: "for-langflow", } ); - instanceParameterGroup.bindToInstance({}) + instanceParameterGroup.bindToInstance({}); this.rdsCluster = new rds.DatabaseCluster(scope, "LangflowDbCluster", { engine: rds.DatabaseClusterEngine.auroraMysql({ diff --git a/src/backend/base/langflow/__main__.py b/src/backend/base/langflow/__main__.py index 726b967a5..dfb784c90 100644 --- a/src/backend/base/langflow/__main__.py +++ b/src/backend/base/langflow/__main__.py @@ -17,8 +17,10 @@ from rich import print as rprint from rich.console import Console from rich.panel import Panel from rich.table import Table +from sqlmodel import select from langflow.main import setup_app +from langflow.services.database.models.folder.utils import create_default_folder_if_it_doesnt_exist from langflow.services.database.utils import session_getter from langflow.services.deps import get_db_service from langflow.services.utils import initialize_services @@ -432,11 +434,16 @@ def superuser( # Verify that the superuser was created from langflow.services.database.models.user.model import User - user: User = session.query(User).filter(User.username == username).first() + user: User = session.exec(select(User).where(User.username == username)).first() if user is None or not user.is_superuser: typer.echo("Superuser creation failed.") return - + # Now create the first folder for the user + result = create_default_folder_if_it_doesnt_exist(session, user.id) + if result: + typer.echo("Default folder created successfully.") + else: + raise RuntimeError("Could not create default folder.") typer.echo("Superuser created successfully.") else: diff --git a/src/backend/base/langflow/alembic/versions/012fb73ac359_add_folder_table.py b/src/backend/base/langflow/alembic/versions/012fb73ac359_add_folder_table.py new file mode 100644 index 000000000..b9ebc2ca2 --- /dev/null +++ b/src/backend/base/langflow/alembic/versions/012fb73ac359_add_folder_table.py @@ -0,0 +1,78 @@ +"""Add Folder table + +Revision ID: 012fb73ac359 +Revises: c153816fd85f +Create Date: 2024-05-07 12:52:16.954691 + +""" + +from typing import Sequence, Union + +import sqlalchemy as sa +import sqlmodel +from alembic import op +from sqlalchemy.engine.reflection import Inspector + +# revision identifiers, used by Alembic. +revision: str = "012fb73ac359" +down_revision: Union[str, None] = "c153816fd85f" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + conn = op.get_bind() + inspector = Inspector.from_engine(conn) # type: ignore + table_names = inspector.get_table_names() + # ### commands auto generated by Alembic - please adjust! ### + if "folder" not in table_names: + op.create_table( + "folder", + sa.Column("name", sqlmodel.sql.sqltypes.AutoString(), nullable=False), + sa.Column("description", sqlmodel.sql.sqltypes.AutoString(), nullable=True), + sa.Column("id", sqlmodel.sql.sqltypes.GUID(), nullable=False), + sa.Column("parent_id", sqlmodel.sql.sqltypes.GUID(), nullable=True), + sa.Column("user_id", sqlmodel.sql.sqltypes.GUID(), nullable=True), + sa.ForeignKeyConstraint( + ["parent_id"], + ["folder.id"], + ), + sa.ForeignKeyConstraint( + ["user_id"], + ["user.id"], + ), + sa.PrimaryKeyConstraint("id"), + ) + indexes = inspector.get_indexes("folder") + if "ix_folder_name" not in [index["name"] for index in indexes]: + with op.batch_alter_table("folder", schema=None) as batch_op: + batch_op.create_index(batch_op.f("ix_folder_name"), ["name"], unique=False) + + if "folder_id" not in inspector.get_columns("flow"): + with op.batch_alter_table("flow", schema=None) as batch_op: + batch_op.add_column(sa.Column("folder_id", sqlmodel.sql.sqltypes.GUID(), nullable=True)) + batch_op.create_foreign_key("flow_folder_id_fkey", "folder", ["folder_id"], ["id"]) + batch_op.drop_column("folder") + + # ### end Alembic commands ### + + +def downgrade() -> None: + conn = op.get_bind() + inspector = Inspector.from_engine(conn) # type: ignore + table_names = inspector.get_table_names() + # ### commands auto generated by Alembic - please adjust! ### + if "folder_id" in inspector.get_columns("flow"): + with op.batch_alter_table("flow", schema=None) as batch_op: + batch_op.add_column(sa.Column("folder", sa.VARCHAR(), nullable=True)) + batch_op.drop_constraint("flow_folder_id_fkey", type_="foreignkey") + batch_op.drop_column("folder_id") + + indexes = inspector.get_indexes("folder") + if "ix_folder_name" in [index["name"] for index in indexes]: + with op.batch_alter_table("folder", schema=None) as batch_op: + batch_op.drop_index(batch_op.f("ix_folder_name")) + + if "folder" in table_names: + op.drop_table("folder") + # ### end Alembic commands ### diff --git a/src/backend/base/langflow/alembic/versions/29fe8f1f806b_add_missing_index.py b/src/backend/base/langflow/alembic/versions/29fe8f1f806b_add_missing_index.py new file mode 100644 index 000000000..9a2518df2 --- /dev/null +++ b/src/backend/base/langflow/alembic/versions/29fe8f1f806b_add_missing_index.py @@ -0,0 +1,43 @@ +"""Add missing index + +Revision ID: 29fe8f1f806b +Revises: 012fb73ac359 +Create Date: 2024-05-21 09:23:48.772367 + +""" + +from typing import Sequence, Union + +from alembic import op +from sqlalchemy.engine.reflection import Inspector + +revision: str = "29fe8f1f806b" +down_revision: Union[str, None] = "012fb73ac359" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + conn = op.get_bind() + inspector = Inspector.from_engine(conn) # type: ignore + # ### commands auto generated by Alembic - please adjust! ### + indexes = inspector.get_indexes("flow") + with op.batch_alter_table("flow", schema=None) as batch_op: + indexes_names = [index["name"] for index in indexes] + if "ix_flow_folder_id" not in indexes_names: + batch_op.create_index(batch_op.f("ix_flow_folder_id"), ["folder_id"], unique=False) + + # ### end Alembic commands ### + + +def downgrade() -> None: + conn = op.get_bind() + inspector = Inspector.from_engine(conn) # type: ignore + # ### commands auto generated by Alembic - please adjust! ### + indexes = inspector.get_indexes("flow") + with op.batch_alter_table("flow", schema=None) as batch_op: + indexes_names = [index["name"] for index in indexes] + if "ix_flow_folder_id" in indexes_names: + batch_op.drop_index(batch_op.f("ix_flow_folder_id")) + + # ### end Alembic commands ### diff --git a/src/backend/base/langflow/api/router.py b/src/backend/base/langflow/api/router.py index 569014acf..d5d709738 100644 --- a/src/backend/base/langflow/api/router.py +++ b/src/backend/base/langflow/api/router.py @@ -13,6 +13,7 @@ from langflow.api.v1 import ( users_router, validate_router, variables_router, + folders_router, ) router = APIRouter( @@ -29,3 +30,4 @@ router.include_router(login_router) router.include_router(variables_router) router.include_router(files_router) router.include_router(monitor_router) +router.include_router(folders_router) diff --git a/src/backend/base/langflow/api/v1/__init__.py b/src/backend/base/langflow/api/v1/__init__.py index 0342c76c8..efc55cba8 100644 --- a/src/backend/base/langflow/api/v1/__init__.py +++ b/src/backend/base/langflow/api/v1/__init__.py @@ -9,6 +9,7 @@ from langflow.api.v1.store import router as store_router from langflow.api.v1.users import router as users_router from langflow.api.v1.validate import router as validate_router from langflow.api.v1.variable import router as variables_router +from langflow.api.v1.folders import router as folders_router __all__ = [ "chat_router", @@ -22,4 +23,5 @@ __all__ = [ "variables_router", "monitor_router", "files_router", + "folders_router", ] diff --git a/src/backend/base/langflow/api/v1/chat.py b/src/backend/base/langflow/api/v1/chat.py index 549e0c2b7..40290afa7 100644 --- a/src/backend/base/langflow/api/v1/chat.py +++ b/src/backend/base/langflow/api/v1/chat.py @@ -29,7 +29,7 @@ from langflow.services.deps import get_chat_service, get_session, get_session_se from langflow.services.monitor.utils import log_vertex_build if TYPE_CHECKING: - from langflow.graph.vertex.types import ChatVertex + from langflow.graph.vertex.types import InterfaceVertex from langflow.services.session.service import SessionService router = APIRouter(tags=["Chat"]) @@ -288,7 +288,7 @@ async def build_vertex_stream( if not graph: raise ValueError(f"No graph found for {flow_id}.") - vertex: "ChatVertex" = graph.get_vertex(vertex_id) + vertex: "InterfaceVertex" = graph.get_vertex(vertex_id) if not hasattr(vertex, "stream"): raise ValueError(f"Vertex {vertex_id} does not support streaming") if isinstance(vertex._built_result, str) and vertex._built_result: diff --git a/src/backend/base/langflow/api/v1/endpoints.py b/src/backend/base/langflow/api/v1/endpoints.py index e13d4333d..e206935c4 100644 --- a/src/backend/base/langflow/api/v1/endpoints.py +++ b/src/backend/base/langflow/api/v1/endpoints.py @@ -4,7 +4,7 @@ from typing import Annotated, List, Optional, Union import sqlalchemy as sa from fastapi import APIRouter, Body, Depends, HTTPException, UploadFile, status from loguru import logger -from sqlmodel import Session, select +from sqlmodel import Session, col, select from langflow.api.utils import update_frontend_node_with_template_values from langflow.api.v1.schemas import ( diff --git a/src/backend/base/langflow/api/v1/flows.py b/src/backend/base/langflow/api/v1/flows.py index bafd1c08b..2b8e4ee37 100644 --- a/src/backend/base/langflow/api/v1/flows.py +++ b/src/backend/base/langflow/api/v1/flows.py @@ -2,17 +2,19 @@ from datetime import datetime, timezone from typing import List from uuid import UUID +from langflow.services.database.models.folder.constants import DEFAULT_FOLDER_NAME import orjson from fastapi import APIRouter, Depends, File, HTTPException, UploadFile from fastapi.encoders import jsonable_encoder from loguru import logger -from sqlmodel import Session, select +from sqlmodel import Session, col, select from langflow.api.utils import remove_api_keys, validate_is_component -from langflow.api.v1.schemas import FlowListCreate, FlowListRead +from langflow.api.v1.schemas import FlowListCreate, FlowListIds, FlowListRead from langflow.initial_setup.setup import STARTER_FOLDER_NAME from langflow.services.auth.utils import get_current_active_user from langflow.services.database.models.flow import Flow, FlowCreate, FlowRead, FlowUpdate +from langflow.services.database.models.folder.model import Folder from langflow.services.database.models.user.model import User from langflow.services.deps import get_session, get_settings_service from langflow.services.settings.service import SettingsService @@ -35,6 +37,11 @@ def create_flow( db_flow = Flow.model_validate(flow, from_attributes=True) db_flow.updated_at = datetime.now(timezone.utc) + if db_flow.folder_id is None: + default_folder = session.exec(select(Folder).where(Folder.name == DEFAULT_FOLDER_NAME)).first() + if default_folder: + db_flow.folder_id = default_folder.id + session.add(db_flow) session.commit() session.refresh(db_flow) @@ -67,7 +74,7 @@ def read_flows( example_flows = session.exec( select(Flow).where( Flow.user_id == None, # noqa - Flow.folder == STARTER_FOLDER_NAME, + Flow.folder.has(Folder.name == STARTER_FOLDER_NAME), ) ).all() for example_flow in example_flows: @@ -129,6 +136,10 @@ def update_flow( if value is not None: setattr(db_flow, key, value) db_flow.updated_at = datetime.now(timezone.utc) + if db_flow.folder_id is None: + default_folder = session.exec(select(Folder).where(Folder.name == DEFAULT_FOLDER_NAME)).first() + if default_folder: + db_flow.folder_id = default_folder.id session.add(db_flow) session.commit() session.refresh(db_flow) @@ -208,3 +219,31 @@ async def download_file( """Download all flows as a file.""" flows = read_flows(current_user=current_user, session=session, settings_service=settings_service) return FlowListRead(flows=flows) + + +@router.post("/multiple_delete/") +async def delete_multiple_flows( + flow_ids: FlowListIds, user: User = Depends(get_current_active_user), db: Session = Depends(get_session) +): + """ + Delete multiple flows by their IDs. + + Args: + flow_ids (List[str]): The list of flow IDs to delete. + user (User, optional): The user making the request. Defaults to the current active user. + + Returns: + dict: A dictionary containing the number of flows deleted. + + """ + try: + deleted_flows = db.exec( + select(Flow).where(col(Flow.id).in_(flow_ids.flow_ids)).where(Flow.user_id == user.id) + ).all() + for flow in deleted_flows: + db.delete(flow) + db.commit() + return {"deleted": len(deleted_flows)} + except Exception as exc: + logger.exception(exc) + raise HTTPException(status_code=500, detail=str(exc)) from exc diff --git a/src/backend/base/langflow/api/v1/folders.py b/src/backend/base/langflow/api/v1/folders.py new file mode 100644 index 000000000..9e598b1ea --- /dev/null +++ b/src/backend/base/langflow/api/v1/folders.py @@ -0,0 +1,243 @@ +from typing import List +from uuid import UUID + +from fastapi import APIRouter, Depends, File, HTTPException, Response, UploadFile, status +from langflow.api.v1.flows import create_flows +from langflow.api.v1.schemas import FlowListCreate, FlowListReadWithFolderName +from langflow.initial_setup.setup import STARTER_FOLDER_NAME +from langflow.services.database.models.flow.model import Flow, FlowCreate, FlowRead +from langflow.services.database.models.folder.constants import DEFAULT_FOLDER_NAME +import orjson +from sqlalchemy import update +from sqlmodel import Session, select + +from langflow.services.auth.utils import get_current_active_user +from langflow.services.database.models.folder.model import ( + Folder, + FolderCreate, + FolderRead, + FolderReadWithFlows, + FolderUpdate, +) +from langflow.services.database.models.user.model import User +from langflow.services.deps import get_session + +router = APIRouter(prefix="/folders", tags=["Folders"]) + + +@router.post("/", response_model=FolderRead, status_code=201) +def create_folder( + *, + session: Session = Depends(get_session), + folder: FolderCreate, + current_user: User = Depends(get_current_active_user), +): + try: + new_folder = Folder.model_validate(folder, from_attributes=True) + new_folder.user_id = current_user.id + session.add(new_folder) + session.commit() + session.refresh(new_folder) + + if folder.components_list.__len__() > 0: + update_statement_components = ( + update(Flow).where(Flow.id.in_(folder.components_list)).values(folder_id=new_folder.id) + ) + session.exec(update_statement_components) + session.commit() + + if folder.flows_list.__len__() > 0: + update_statement_flows = update(Flow).where(Flow.id.in_(folder.flows_list)).values(folder_id=new_folder.id) + session.exec(update_statement_flows) + session.commit() + + return new_folder + except Exception as e: + raise HTTPException(status_code=500, detail=str(e)) + + +@router.get("/", response_model=List[FolderRead], status_code=200) +def read_folders( + *, + session: Session = Depends(get_session), + current_user: User = Depends(get_current_active_user), +): + try: + folders = session.exec(select(Folder).where(Folder.user_id == current_user.id)).all() + return folders + except Exception as e: + raise HTTPException(status_code=500, detail=str(e)) + + +@router.get("/starter-projects", response_model=FolderReadWithFlows, status_code=200) +def read_starter_folders(*, session: Session = Depends(get_session)): + try: + folders = session.exec(select(Folder).where(Folder.name == STARTER_FOLDER_NAME)).first() + return folders + except Exception as e: + raise HTTPException(status_code=500, detail=str(e)) + + +@router.get("/{folder_id}", response_model=FolderReadWithFlows, status_code=200) +def read_folder( + *, + session: Session = Depends(get_session), + folder_id: UUID, + current_user: User = Depends(get_current_active_user), +): + try: + folder = session.exec(select(Folder).where(Folder.id == folder_id, Folder.user_id == current_user.id)).first() + if not folder: + raise HTTPException(status_code=404, detail="Folder not found") + folder.flows = session.exec(select(Flow).where(Flow.folder_id == folder_id)).all() + return folder + except Exception as e: + if "No result found" in str(e): + raise HTTPException(status_code=404, detail="Folder not found") + raise HTTPException(status_code=500, detail=str(e)) + + +@router.patch("/{folder_id}", response_model=FolderRead, status_code=200) +def update_folder( + *, + session: Session = Depends(get_session), + folder_id: UUID, + folder: FolderUpdate, # Assuming FolderUpdate is a Pydantic model defining updatable fields + current_user: User = Depends(get_current_active_user), +): + try: + existing_folder = session.exec( + select(Folder).where(Folder.id == folder_id, Folder.user_id == current_user.id) + ).first() + if not existing_folder: + raise HTTPException(status_code=404, detail="Folder not found") + folder_data = folder.model_dump(exclude_unset=True) + for key, value in folder_data.items(): + if key != "components" and key != "flows": + setattr(existing_folder, key, value) + session.add(existing_folder) + session.commit() + session.refresh(existing_folder) + + concat_folder_components = folder.components + folder.flows + + flows_ids = session.exec(select(Flow.id).where(Flow.folder_id == existing_folder.id)).all() + + excluded_flows = list(set(flows_ids) - set(concat_folder_components)) + + my_collection_folder = session.exec(select(Folder).where(Folder.name == DEFAULT_FOLDER_NAME)).first() + if my_collection_folder: + update_statement_my_collection = ( + update(Flow).where(Flow.id.in_(excluded_flows)).values(folder_id=my_collection_folder.id) + ) + session.exec(update_statement_my_collection) + session.commit() + + if concat_folder_components.__len__() > 0: + update_statement_components = ( + update(Flow).where(Flow.id.in_(concat_folder_components)).values(folder_id=existing_folder.id) + ) + session.exec(update_statement_components) + session.commit() + + return existing_folder + + except Exception as e: + raise HTTPException(status_code=500, detail=str(e)) + + +@router.delete("/{folder_id}", status_code=204) +def delete_folder( + *, + session: Session = Depends(get_session), + folder_id: UUID, + current_user: User = Depends(get_current_active_user), +): + try: + folder = session.exec(select(Folder).where(Folder.id == folder_id, Folder.user_id == current_user.id)).first() + if not folder: + raise HTTPException(status_code=404, detail="Folder not found") + session.delete(folder) + session.commit() + flows = session.exec(select(Flow).where(Flow.folder_id == folder_id, Folder.user_id == current_user.id)).all() + for flow in flows: + session.delete(flow) + session.commit() + return Response(status_code=status.HTTP_204_NO_CONTENT) + except Exception as e: + raise HTTPException(status_code=500, detail=str(e)) + + +@router.get("/download/{folder_id}", response_model=FlowListReadWithFolderName, status_code=200) +async def download_file( + *, + session: Session = Depends(get_session), + folder_id: UUID, + current_user: User = Depends(get_current_active_user), +): + """Download all flows from folder.""" + try: + flows = session.exec( + select(Flow).distinct().join(Folder).where(Flow.folder_id == folder_id, Folder.user_id == current_user.id) + ).all() + folder_name = ( + session.exec(select(Folder).where(Folder.id == folder_id, Folder.user_id == current_user.id)).first().name + ) + folder_description = ( + session.exec(select(Folder).where(Folder.id == folder_id, Folder.user_id == current_user.id)) + .first() + .description + ) + if not flows: + flows = [] + return FlowListReadWithFolderName(flows=flows, folder_name=folder_name, folder_description=folder_description) + except Exception as e: + if "No result found" in str(e): + raise HTTPException(status_code=404, detail="Folder not found") + raise HTTPException(status_code=500, detail=str(e)) + + +@router.post("/upload/", response_model=List[FlowRead], status_code=201) +async def upload_file( + *, + session: Session = Depends(get_session), + file: UploadFile = File(...), + current_user: User = Depends(get_current_active_user), +): + """Upload flows from a file.""" + contents = await file.read() + data = orjson.loads(contents) + + if data.__len__() == 0: + raise HTTPException(status_code=400, detail="No flows found in the file") + + folder_results = session.exec( + select(Folder).where(Folder.name.like(f"{data['folder_name']}%"), Folder.user_id == current_user.id) + ) + existing_folder_names = [folder.name for folder in folder_results] + + if existing_folder_names.__len__() > 0: + data["folder_name"] = f"{data['folder_name']} ({existing_folder_names.__len__() + 1})" + + folder = FolderCreate(name=data["folder_name"], description=data["folder_description"]) + + new_folder = Folder.model_validate(folder, from_attributes=True) + new_folder.id = None + new_folder.user_id = current_user.id + session.add(new_folder) + session.commit() + session.refresh(new_folder) + + del data["folder_name"] + del data["folder_description"] + + if "flows" in data: + flow_list = FlowListCreate(flows=[FlowCreate(**flow) for flow in data["flows"]]) + else: + raise HTTPException(status_code=400, detail="No flows found in the data") + # Now we set the user_id for all flows + for flow in flow_list.flows: + flow.user_id = current_user.id + flow.folder_id = new_folder.id + + return create_flows(session=session, flow_list=flow_list, current_user=current_user) diff --git a/src/backend/base/langflow/api/v1/login.py b/src/backend/base/langflow/api/v1/login.py index 8c9fb5bd4..69a1d5876 100644 --- a/src/backend/base/langflow/api/v1/login.py +++ b/src/backend/base/langflow/api/v1/login.py @@ -1,5 +1,7 @@ from fastapi import APIRouter, Depends, HTTPException, Request, Response, status from fastapi.security import OAuth2PasswordRequestForm +from sqlmodel import Session + from langflow.api.v1.schemas import Token from langflow.services.auth.utils import ( authenticate_user, @@ -7,14 +9,10 @@ from langflow.services.auth.utils import ( create_user_longterm_token, create_user_tokens, ) -from langflow.services.deps import ( - get_session, - get_settings_service, - get_variable_service, -) +from langflow.services.database.models.folder.utils import create_default_folder_if_it_doesnt_exist +from langflow.services.deps import get_session, get_settings_service, get_variable_service from langflow.services.settings.manager import SettingsService from langflow.services.variable.service import VariableService -from sqlmodel import Session router = APIRouter(tags=["Login"]) @@ -58,6 +56,8 @@ async def login_to_get_access_token( expires=auth_settings.ACCESS_TOKEN_EXPIRE_SECONDS, ) variable_service.initialize_user_variables(user.id, db) + # Create default folder for user if it doesn't exist + create_default_folder_if_it_doesnt_exist(db, user.id) return tokens else: raise HTTPException( @@ -86,6 +86,7 @@ async def auto_login( expires=None, # Set to None to make it a session cookie ) variable_service.initialize_user_variables(user_id, db) + create_default_folder_if_it_doesnt_exist(db, user_id) return tokens raise HTTPException( @@ -139,4 +140,3 @@ async def logout(response: Response): response.delete_cookie("refresh_token_lf") response.delete_cookie("access_token_lf") return {"message": "Logout successful"} - return {"message": "Logout successful"} diff --git a/src/backend/base/langflow/api/v1/monitor.py b/src/backend/base/langflow/api/v1/monitor.py index dbefd1c3b..05fee6f03 100644 --- a/src/backend/base/langflow/api/v1/monitor.py +++ b/src/backend/base/langflow/api/v1/monitor.py @@ -1,10 +1,13 @@ -from typing import Optional +from typing import List, Optional from fastapi import APIRouter, Depends, HTTPException, Query - from langflow.services.deps import get_monitor_service -from langflow.services.monitor.schema import VertexBuildMapModel +from langflow.services.monitor.schema import ( + MessageModelResponse, + TransactionModelResponse, + VertexBuildMapModel, +) from langflow.services.monitor.service import MonitorService router = APIRouter(prefix="/monitor", tags=["Monitor"]) @@ -40,8 +43,9 @@ async def delete_vertex_builds( raise HTTPException(status_code=500, detail=str(e)) -@router.get("/messages") +@router.get("/messages", response_model=List[MessageModelResponse]) async def get_messages( + flow_id: Optional[str] = Query(None), session_id: Optional[str] = Query(None), sender: Optional[str] = Query(None), sender_name: Optional[str] = Query(None), @@ -49,25 +53,32 @@ async def get_messages( monitor_service: MonitorService = Depends(get_monitor_service), ): try: - return monitor_service.get_messages( + df = monitor_service.get_messages( + flow_id=flow_id, sender=sender, sender_name=sender_name, session_id=session_id, order_by=order_by, ) + dicts = df.to_dict(orient="records") + return [MessageModelResponse(**d) for d in dicts] except Exception as e: raise HTTPException(status_code=500, detail=str(e)) -@router.get("/transactions") +@router.get("/transactions", response_model=List[TransactionModelResponse]) async def get_transactions( source: Optional[str] = Query(None), target: Optional[str] = Query(None), status: Optional[str] = Query(None), order_by: Optional[str] = Query("timestamp"), + flow_id: Optional[str] = Query(None), monitor_service: MonitorService = Depends(get_monitor_service), ): try: - return monitor_service.get_transactions(source=source, target=target, status=status, order_by=order_by) + dicts = monitor_service.get_transactions( + source=source, target=target, status=status, order_by=order_by, flow_id=flow_id + ) + return [TransactionModelResponse(**d) for d in dicts] except Exception as e: raise HTTPException(status_code=500, detail=str(e)) diff --git a/src/backend/base/langflow/api/v1/schemas.py b/src/backend/base/langflow/api/v1/schemas.py index 9558ac8c5..1d93cc0e2 100644 --- a/src/backend/base/langflow/api/v1/schemas.py +++ b/src/backend/base/langflow/api/v1/schemas.py @@ -139,10 +139,20 @@ class FlowListCreate(BaseModel): flows: List[FlowCreate] +class FlowListIds(BaseModel): + flow_ids: List[str] + + class FlowListRead(BaseModel): flows: List[FlowRead] +class FlowListReadWithFolderName(BaseModel): + flows: List[FlowRead] + folder_name: str + folder_description: str + + class InitResponse(BaseModel): flowId: str diff --git a/src/backend/base/langflow/api/v1/users.py b/src/backend/base/langflow/api/v1/users.py index 7a6d4b7c6..f7261e9d2 100644 --- a/src/backend/base/langflow/api/v1/users.py +++ b/src/backend/base/langflow/api/v1/users.py @@ -13,6 +13,7 @@ from langflow.services.auth.utils import ( get_password_hash, verify_password, ) +from langflow.services.database.models.folder.utils import create_default_folder_if_it_doesnt_exist from langflow.services.database.models.user import User, UserCreate, UserRead, UserUpdate from langflow.services.database.models.user.crud import get_user_by_id, update_user from langflow.services.deps import get_session, get_settings_service @@ -36,6 +37,9 @@ def add_user( session.add(new_user) session.commit() session.refresh(new_user) + folder = create_default_folder_if_it_doesnt_exist(session, new_user.id) + if not folder: + raise HTTPException(status_code=500, detail="Error creating default folder") except IntegrityError as e: session.rollback() raise HTTPException(status_code=400, detail="This username is unavailable.") from e diff --git a/src/backend/base/langflow/base/io/chat.py b/src/backend/base/langflow/base/io/chat.py index 039b42d0c..14a09b3f5 100644 --- a/src/backend/base/langflow/base/io/chat.py +++ b/src/backend/base/langflow/base/io/chat.py @@ -54,6 +54,7 @@ class ChatComponent(CustomComponent): session_id=session_id, sender=sender, sender_name=sender_name, + flow_id=self.graph.flow_id, ) self.status = records diff --git a/src/backend/base/langflow/base/prompts/utils.py b/src/backend/base/langflow/base/prompts/utils.py index fbf46dd71..2270035af 100644 --- a/src/backend/base/langflow/base/prompts/utils.py +++ b/src/backend/base/langflow/base/prompts/utils.py @@ -1,3 +1,6 @@ +from copy import deepcopy + + from langchain_core.documents import Document from langflow.schema import Record @@ -27,19 +30,20 @@ def dict_values_to_string(d: dict) -> dict: dict: The dictionary with values converted to strings. """ # Do something similar to the above - for key, value in d.items(): + d_copy = deepcopy(d) + for key, value in d_copy.items(): # it could be a list of records or documents or strings if isinstance(value, list): for i, item in enumerate(value): if isinstance(item, Record): - d[key][i] = record_to_string(item) + d_copy[key][i] = record_to_string(item) elif isinstance(item, Document): - d[key][i] = document_to_string(item) + d_copy[key][i] = document_to_string(item) elif isinstance(value, Record): - d[key] = record_to_string(value) + d_copy[key] = record_to_string(value) elif isinstance(value, Document): - d[key] = document_to_string(value) - return d + d_copy[key] = document_to_string(value) + return d_copy def document_to_string(document: Document) -> str: diff --git a/src/backend/base/langflow/components/outputs/RecordsOutput.py b/src/backend/base/langflow/components/outputs/RecordsOutput.py new file mode 100644 index 000000000..bdd8a85e2 --- /dev/null +++ b/src/backend/base/langflow/components/outputs/RecordsOutput.py @@ -0,0 +1,10 @@ +from langflow.base.io.text import TextComponent +from langflow.schema import Record + + +class RecordsOutput(TextComponent): + display_name = "Records Output" + description = "Display Records as a Table" + + def build(self, input_value: Record) -> Record: + return input_value diff --git a/src/backend/base/langflow/graph/edge/base.py b/src/backend/base/langflow/graph/edge/base.py index ba7fe05e8..dad8469c0 100644 --- a/src/backend/base/langflow/graph/edge/base.py +++ b/src/backend/base/langflow/graph/edge/base.py @@ -3,9 +3,8 @@ from typing import TYPE_CHECKING, Any, List, Optional from loguru import logger from pydantic import BaseModel, Field -from langflow.graph.edge.utils import build_clean_params +from langflow.graph.vertex.utils import log_transaction from langflow.schema.schema import INPUT_FIELD_NAME -from langflow.services.deps import get_monitor_service from langflow.services.monitor.utils import log_message if TYPE_CHECKING: @@ -157,26 +156,9 @@ class ContractEdge(Edge): message=target.params.get(INPUT_FIELD_NAME, {}), session_id=target.params.get("session_id", ""), artifacts=target.artifacts, + flow_id=target.graph.flow_id, ) return self.result def __repr__(self) -> str: return f"{self.source_id} -[{self.target_param}]-> {self.target_id}" - - -def log_transaction(edge: ContractEdge, source: "Vertex", target: "Vertex", status, error=None): - try: - monitor_service = get_monitor_service() - clean_params = build_clean_params(target) - data = { - "source": source.vertex_type, - "target": target.vertex_type, - "target_args": clean_params, - "timestamp": monitor_service.get_timestamp(), - "status": status, - "error": error, - } - monitor_service.add_row(table_name="transactions", data=data) - except Exception as e: - logger.error(f"Error logging transaction: {e}") - logger.error(f"Error logging transaction: {e}") diff --git a/src/backend/base/langflow/graph/edge/utils.py b/src/backend/base/langflow/graph/edge/utils.py index 0f69e4b2d..e69de29bb 100644 --- a/src/backend/base/langflow/graph/edge/utils.py +++ b/src/backend/base/langflow/graph/edge/utils.py @@ -1,19 +0,0 @@ -from typing import TYPE_CHECKING - -if TYPE_CHECKING: - from langflow.graph.vertex.base import Vertex - - -def build_clean_params(target: "Vertex") -> dict: - """ - Cleans the parameters of the target vertex. - """ - # Removes all keys that the values aren't python types like str, int, bool, etc. - params = { - key: value for key, value in target.params.items() if isinstance(value, (str, int, bool, float, list, dict)) - } - # if it is a list we need to check if the contents are python types - for key, value in params.items(): - if isinstance(value, list): - params[key] = [item for item in value if isinstance(item, (str, int, bool, float, list, dict))] - return params diff --git a/src/backend/base/langflow/graph/graph/base.py b/src/backend/base/langflow/graph/graph/base.py index 0e06dec4f..bd17d43f8 100644 --- a/src/backend/base/langflow/graph/graph/base.py +++ b/src/backend/base/langflow/graph/graph/base.py @@ -14,7 +14,7 @@ from langflow.graph.graph.state_manager import GraphStateManager from langflow.graph.graph.utils import process_flow from langflow.graph.schema import InterfaceComponentTypes, RunOutputs from langflow.graph.vertex.base import Vertex -from langflow.graph.vertex.types import ChatVertex, FileToolVertex, LLMVertex, StateVertex, ToolkitVertex +from langflow.graph.vertex.types import FileToolVertex, InterfaceVertex, LLMVertex, StateVertex, ToolkitVertex from langflow.interface.tools.constants import FILE_TOOLS from langflow.schema import Record from langflow.schema.schema import INPUT_FIELD_NAME, InputType @@ -994,8 +994,8 @@ class Graph: """Returns the node class based on the node type.""" # First we check for the node_base_type node_name = node_id.split("-")[0] - if node_name in ["ChatOutput", "ChatInput"]: - return ChatVertex + if node_name in InterfaceComponentTypes: + return InterfaceVertex elif node_name in ["SharedState", "Notify", "Listen"]: return StateVertex elif node_base_type in lazy_load_vertex_dict.VERTEX_TYPE_MAP: diff --git a/src/backend/base/langflow/graph/graph/constants.py b/src/backend/base/langflow/graph/graph/constants.py index 193159c13..2ed42fbff 100644 --- a/src/backend/base/langflow/graph/graph/constants.py +++ b/src/backend/base/langflow/graph/graph/constants.py @@ -1,3 +1,4 @@ +from langflow.graph.schema import CHAT_COMPONENTS from langflow.graph.vertex import types from langflow.interface.agents.base import agent_creator from langflow.interface.custom.base import custom_component_creator @@ -13,8 +14,6 @@ from langflow.interface.tools.base import tool_creator from langflow.interface.wrappers.base import wrapper_creator from langflow.utils.lazy_load import LazyLoadDictBase -CHAT_COMPONENTS = ["ChatInput", "ChatOutput", "TextInput", "SessionID"] - class VertexTypesDict(LazyLoadDictBase): def __init__(self): @@ -47,7 +46,7 @@ class VertexTypesDict(LazyLoadDictBase): **{t: types.TextSplitterVertex for t in textsplitter_creator.to_list()}, **{t: types.CustomComponentVertex for t in custom_component_creator.to_list()}, **{t: types.RetrieverVertex for t in retriever_creator.to_list()}, - **{t: types.ChatVertex for t in CHAT_COMPONENTS}, + **{t: types.InterfaceVertex for t in CHAT_COMPONENTS}, } def get_custom_component_vertex_type(self): diff --git a/src/backend/base/langflow/graph/schema.py b/src/backend/base/langflow/graph/schema.py index 0bbdfa720..18010de4c 100644 --- a/src/backend/base/langflow/graph/schema.py +++ b/src/backend/base/langflow/graph/schema.py @@ -30,6 +30,7 @@ class InterfaceComponentTypes(str, Enum, metaclass=ContainsEnumMeta): ChatOutput = "ChatOutput" TextInput = "TextInput" TextOutput = "TextOutput" + RecordsOutput = "RecordsOutput" def __contains__(cls, item): try: @@ -40,6 +41,8 @@ class InterfaceComponentTypes(str, Enum, metaclass=ContainsEnumMeta): return True +CHAT_COMPONENTS = [InterfaceComponentTypes.ChatInput, InterfaceComponentTypes.ChatOutput] +RECORDS_COMPONENTS = [InterfaceComponentTypes.RecordsOutput] INPUT_COMPONENTS = [ InterfaceComponentTypes.ChatInput, InterfaceComponentTypes.TextInput, diff --git a/src/backend/base/langflow/graph/vertex/base.py b/src/backend/base/langflow/graph/vertex/base.py index ae0544fa1..e0dd0f4bf 100644 --- a/src/backend/base/langflow/graph/vertex/base.py +++ b/src/backend/base/langflow/graph/vertex/base.py @@ -10,7 +10,7 @@ from loguru import logger from langflow.graph.schema import INPUT_COMPONENTS, OUTPUT_COMPONENTS, InterfaceComponentTypes, ResultData from langflow.graph.utils import UnbuiltObject, UnbuiltResult -from langflow.graph.vertex.utils import generate_result +from langflow.graph.vertex.utils import generate_result, log_transaction from langflow.interface.initialize import loading from langflow.interface.listing import lazy_load_dict from langflow.schema.schema import INPUT_FIELD_NAME @@ -440,7 +440,11 @@ class Vertex: # to the frontend self.set_artifacts() artifacts = self.artifacts - messages = self.extract_messages_from_artifacts(artifacts) + if isinstance(artifacts, dict): + messages = self.extract_messages_from_artifacts(artifacts) + else: + messages = [] + result_dict = ResultData( results=result_dict, artifacts=artifacts, @@ -508,7 +512,7 @@ class Vertex: if not self._is_vertex(value): self.params[key][sub_key] = value else: - result = await value.get_result() + result = await value.get_result(self) self.params[key][sub_key] = result def _is_vertex(self, value): @@ -523,9 +527,7 @@ class Vertex: """ return all(self._is_vertex(vertex) for vertex in value) - async def get_result( - self, - ) -> Any: + async def get_result(self, requester: "Vertex") -> Any: """ Retrieves the result of the vertex. @@ -535,9 +537,9 @@ class Vertex: The result of the vertex. """ async with self._lock: - return await self._get_result() + return await self._get_result(requester) - async def _get_result(self) -> Any: + async def _get_result(self, requester: "Vertex") -> Any: """ Retrieves the result of the built component. @@ -547,15 +549,19 @@ class Vertex: The built result if use_result is True, else the built object. """ if not self._built: + log_transaction(source=self, target=requester, flow_id=self.graph.flow_id, status="error") raise ValueError(f"Component {self.display_name} has not been built yet") - return self._built_result if self.use_result else self._built_object + + result = self._built_result if self.use_result else self._built_object + log_transaction(source=self, target=requester, flow_id=self.graph.flow_id, status="success") + return result async def _build_vertex_and_update_params(self, key, vertex: "Vertex"): """ Builds a given vertex and updates the params dictionary accordingly. """ - result = await vertex.get_result() + result = await vertex.get_result(self) self._handle_func(key, result) if isinstance(result, list): self._extend_params_list_with_result(key, result) @@ -571,7 +577,7 @@ class Vertex: """ self.params[key] = [] for vertex in vertices: - result = await vertex.get_result() + result = await vertex.get_result(self) # Weird check to see if the params[key] is a list # because sometimes it is a Record and breaks the code if not isinstance(self.params[key], list): diff --git a/src/backend/base/langflow/graph/vertex/types.py b/src/backend/base/langflow/graph/vertex/types.py index 5faeeaa8b..941f06036 100644 --- a/src/backend/base/langflow/graph/vertex/types.py +++ b/src/backend/base/langflow/graph/vertex/types.py @@ -6,14 +6,14 @@ import yaml from langchain_core.messages import AIMessage from loguru import logger -from langflow.graph.schema import InterfaceComponentTypes +from langflow.graph.schema import CHAT_COMPONENTS, RECORDS_COMPONENTS, InterfaceComponentTypes from langflow.graph.utils import UnbuiltObject, flatten_list, serialize_field from langflow.graph.vertex.base import Vertex from langflow.interface.utils import extract_input_variables_from_prompt from langflow.schema import Record from langflow.schema.schema import INPUT_FIELD_NAME from langflow.services.monitor.utils import log_vertex_build -from langflow.utils.schemas import ChatOutputResponse +from langflow.utils.schemas import ChatOutputResponse, RecordOutputResponse from langflow.utils.util import unescape_string @@ -309,7 +309,7 @@ class CustomComponentVertex(Vertex): return self.artifacts["repr"] or super()._built_object_repr() -class ChatVertex(Vertex): +class InterfaceVertex(Vertex): def __init__(self, data: Dict, graph): super().__init__(data, graph=graph, base_type="custom_components", is_task=True) self.steps = [self._build, self._run] @@ -325,56 +325,131 @@ class ChatVertex(Vertex): return f"Task {self.task_id} is not running" if self.artifacts: # dump as a yaml string - artifacts = {k.title().replace("_", " "): v for k, v in self.artifacts.items() if v is not None} + if isinstance(self.artifacts, dict): + _artifacts = [self.artifacts] + elif hasattr(self.artifacts, "records"): + _artifacts = self.artifacts.records + else: + _artifacts = self.artifacts + artifacts = [] + for artifact in _artifacts: + # artifacts = {k.title().replace("_", " "): v for k, v in self.artifacts.items() if v is not None} + artifact = {k.title().replace("_", " "): v for k, v in artifact.items() if v is not None} + artifacts.append(artifact) yaml_str = yaml.dump(artifacts, default_flow_style=False, allow_unicode=True) return yaml_str return super()._built_object_repr() + def _process_chat_component(self): + """ + Process the chat component and return the message. + + This method processes the chat component by extracting the necessary parameters + such as sender, sender_name, and message from the `params` dictionary. It then + performs additional operations based on the type of the `_built_object` attribute. + If `_built_object` is an instance of `AIMessage`, it creates a `ChatOutputResponse` + object using the `from_message` method. If `_built_object` is not an instance of + `UnbuiltObject`, it checks the type of `_built_object` and performs specific + operations accordingly. If `_built_object` is a dictionary, it converts it into a + code block. If `_built_object` is an instance of `Record`, it assigns the `text` + attribute to the `message` variable. If `message` is an instance of `AsyncIterator` + or `Iterator`, it builds a stream URL and sets `message` to an empty string. If + `_built_object` is not a string, it converts it to a string. If `message` is a + generator or iterator, it assigns it to the `message` variable. Finally, it creates + a `ChatOutputResponse` object using the extracted parameters and assigns it to the + `artifacts` attribute. If `artifacts` is not None, it calls the `model_dump` method + on it and assigns the result to the `artifacts` attribute. It then returns the + `message` variable. + + Returns: + str: The processed message. + """ + artifacts = None + sender = self.params.get("sender", None) + sender_name = self.params.get("sender_name", None) + message = self.params.get(INPUT_FIELD_NAME, None) + if isinstance(message, str): + message = unescape_string(message) + stream_url = None + if isinstance(self._built_object, AIMessage): + artifacts = ChatOutputResponse.from_message( + self._built_object, + sender=sender, + sender_name=sender_name, + ) + elif not isinstance(self._built_object, UnbuiltObject): + if isinstance(self._built_object, dict): + # Turn the dict into a pleasing to + # read JSON inside a code block + message = dict_to_codeblock(self._built_object) + elif isinstance(self._built_object, Record): + message = self._built_object.text + elif isinstance(message, (AsyncIterator, Iterator)): + stream_url = self.build_stream_url() + message = "" + elif not isinstance(self._built_object, str): + message = str(self._built_object) + # if the message is a generator or iterator + # it means that it is a stream of messages + else: + message = self._built_object + + artifacts = ChatOutputResponse( + message=message, + sender=sender, + sender_name=sender_name, + stream_url=stream_url, + ) + + self.will_stream = stream_url is not None + if artifacts: + self.artifacts = artifacts.model_dump(exclude_none=True) + + return message + + def _process_record_component(self): + """ + Process the record component of the vertex. + + If the built object is an instance of `Record`, it calls the `model_dump` method + and assigns the result to the `artifacts` attribute. + + If the built object is a list, it iterates over each element and checks if it is + an instance of `Record`. If it is, it calls the `model_dump` method and appends + the result to the `artifacts` list. If it is not, it raises a `ValueError` if the + `ignore_errors` parameter is set to `False`, or logs an error message if it is set + to `True`. + + Returns: + The built object. + + Raises: + ValueError: If an element in the list is not an instance of `Record` and + `ignore_errors` is set to `False`. + """ + if isinstance(self._built_object, Record): + artifacts = [self._built_object.data] + elif isinstance(self._built_object, list): + artifacts = [] + ignore_errors = self.params.get("ignore_errors", False) + for record in self._built_object: + if isinstance(record, Record): + artifacts.append(record.data) + elif ignore_errors: + logger.error(f"Record expected, but got {record} of type {type(record)}") + else: + raise ValueError(f"Record expected, but got {record} of type {type(record)}") + self.artifacts = RecordOutputResponse(records=artifacts) + return self._built_object + async def _run(self, *args, **kwargs): if self.is_interface_component: - if self.vertex_type in ["ChatOutput", "ChatInput"]: - artifacts = None - sender = self.params.get("sender", None) - sender_name = self.params.get("sender_name", None) - message = self.params.get(INPUT_FIELD_NAME, None) - if isinstance(message, str): - message = unescape_string(message) - stream_url = None - if isinstance(self._built_object, AIMessage): - artifacts = ChatOutputResponse.from_message( - self._built_object, - sender=sender, - sender_name=sender_name, - ) - elif not isinstance(self._built_object, UnbuiltObject): - if isinstance(self._built_object, dict): - # Turn the dict into a pleasing to - # read JSON inside a code block - message = dict_to_codeblock(self._built_object) - elif isinstance(self._built_object, Record): - message = self._built_object.text - elif isinstance(message, (AsyncIterator, Iterator)): - stream_url = self.build_stream_url() - message = "" - elif not isinstance(self._built_object, str): - message = str(self._built_object) - # if the message is a generator or iterator - # it means that it is a stream of messages - else: - message = self._built_object - - artifacts = ChatOutputResponse( - message=message, - sender=sender, - sender_name=sender_name, - stream_url=stream_url, - ) - - self.will_stream = stream_url is not None - if artifacts: - self.artifacts = artifacts.model_dump(exclude_none=True) + if self.vertex_type in CHAT_COMPONENTS: + message = self._process_chat_component() + elif self.vertex_type in RECORDS_COMPONENTS: + message = self._process_record_component() if isinstance(self._built_object, (AsyncIterator, Iterator)): - if self.params["return_record"]: + if self.params.get("return_record", False): self._built_object = Record(text=message, data=self.artifacts) else: self._built_object = message diff --git a/src/backend/base/langflow/graph/vertex/utils.py b/src/backend/base/langflow/graph/vertex/utils.py index ea2693e29..b978424f2 100644 --- a/src/backend/base/langflow/graph/vertex/utils.py +++ b/src/backend/base/langflow/graph/vertex/utils.py @@ -1,11 +1,15 @@ -from typing import Any, Optional, Union +from typing import Any, Optional, Union, TYPE_CHECKING from langchain_core.messages import BaseMessage from langchain_core.runnables import Runnable from loguru import logger +from langflow.services.deps import get_monitor_service from langflow.utils.constants import PYTHON_BASIC_TYPES +if TYPE_CHECKING: + from langflow.graph.vertex.base import Vertex + def is_basic_type(obj): return type(obj) in PYTHON_BASIC_TYPES @@ -63,3 +67,49 @@ async def generate_result(built_object: Any, inputs: dict, has_external_output: else: result = built_object return result + + +def build_clean_params(target: "Vertex") -> dict: + """ + Cleans the parameters of the target vertex. + """ + # Removes all keys that the values aren't python types like str, int, bool, etc. + params = { + key: value for key, value in target.params.items() if isinstance(value, (str, int, bool, float, list, dict)) + } + # if it is a list we need to check if the contents are python types + for key, value in params.items(): + if isinstance(value, list): + params[key] = [item for item in value if isinstance(item, (str, int, bool, float, list, dict))] + return params + + +def log_transaction(source: "Vertex", target: "Vertex", flow_id, status, error=None): + """ + Logs a transaction between two vertices. + + Args: + source (Vertex): The source vertex of the transaction. + target (Vertex): The target vertex of the transaction. + status: The status of the transaction. + error (Optional): Any error associated with the transaction. + + Raises: + Exception: If there is an error while logging the transaction. + + """ + try: + monitor_service = get_monitor_service() + clean_params = build_clean_params(target) + data = { + "source": source.vertex_type, + "target": target.vertex_type, + "target_args": clean_params, + "timestamp": monitor_service.get_timestamp(), + "status": status, + "error": error, + "flow_id": flow_id, + } + monitor_service.add_row(table_name="transactions", data=data) + except Exception as e: + logger.error(f"Error logging transaction: {e}") diff --git a/src/backend/base/langflow/initial_setup/setup.py b/src/backend/base/langflow/initial_setup/setup.py index ca2bc230a..3c976cb94 100644 --- a/src/backend/base/langflow/initial_setup/setup.py +++ b/src/backend/base/langflow/initial_setup/setup.py @@ -11,10 +11,11 @@ from sqlmodel import select from langflow.base.constants import FIELD_FORMAT_ATTRIBUTES, NODE_FORMAT_ATTRIBUTES from langflow.interface.types import get_all_components from langflow.services.database.models.flow.model import Flow, FlowCreate +from langflow.services.database.models.folder.model import Folder, FolderCreate from langflow.services.deps import get_settings_service, session_scope STARTER_FOLDER_NAME = "Starter Projects" - +STARTER_FOLDER_DESCRIPTION = "Starter projects to help you get started in Langflow." # In the folder ./starter_projects we have a few JSON files that represent # starter projects. We want to load these into the database so that users @@ -158,6 +159,7 @@ def create_new_project( project_data, project_icon, project_icon_bg_color, + new_folder_id ): logger.debug(f"Creating starter project {project_name}") new_project = FlowCreate( @@ -168,33 +170,41 @@ def create_new_project( data=project_data, is_component=project_is_component, updated_at=updated_at_datetime, - folder=STARTER_FOLDER_NAME, + folder_id=new_folder_id, ) db_flow = Flow.model_validate(new_project, from_attributes=True) session.add(db_flow) -def get_all_flows_similar_to_project(session, project_name): - flows = session.exec( - select(Flow).where( - Flow.name == project_name, - Flow.folder == STARTER_FOLDER_NAME, - ) - ).all() +def get_all_flows_similar_to_project(session, folder_id): + flows = session.exec(select(Folder).where(Folder.id == folder_id)).first().flows return flows -def delete_start_projects(session): - flows = session.exec( - select(Flow).where( - Flow.folder == STARTER_FOLDER_NAME, - ) - ).all() +def delete_start_projects(session, folder_id): + flows = session.exec(select(Folder).where(Folder.id == folder_id)).first().flows for flow in flows: session.delete(flow) session.commit() +def folder_exists(session, folder_name): + folder = session.exec(select(Folder).where(Folder.name == folder_name)).first() + return folder is not None + + +def create_starter_folder(session): + if not folder_exists(session, STARTER_FOLDER_NAME): + new_folder = FolderCreate(name=STARTER_FOLDER_NAME, description=STARTER_FOLDER_DESCRIPTION) + db_folder = Folder.model_validate(new_folder, from_attributes=True) + session.add(db_folder) + session.commit() + session.refresh(db_folder) + return db_folder + else: + return session.exec(select(Folder).where(Folder.name == STARTER_FOLDER_NAME)).first() + + def create_or_update_starter_projects(): components_paths = get_settings_service().settings.COMPONENTS_PATH try: @@ -203,8 +213,9 @@ def create_or_update_starter_projects(): logger.exception(f"Error loading components: {e}") raise e with session_scope() as session: + new_folder = create_starter_folder(session) starter_projects = load_starter_projects() - delete_start_projects(session) + delete_start_projects(session, new_folder.id) for project_path, project in starter_projects: ( project_name, @@ -224,7 +235,7 @@ def create_or_update_starter_projects(): update_project_file(project_path, project, updated_project_data) if project_name and project_data: - for existing_project in get_all_flows_similar_to_project(session, project_name): + for existing_project in get_all_flows_similar_to_project(session, new_folder.id): session.delete(existing_project) create_new_project( @@ -236,4 +247,5 @@ def create_or_update_starter_projects(): project_data, project_icon, project_icon_bg_color, + new_folder.id ) diff --git a/src/backend/base/langflow/memory.py b/src/backend/base/langflow/memory.py index f494f6e60..f44958fdd 100644 --- a/src/backend/base/langflow/memory.py +++ b/src/backend/base/langflow/memory.py @@ -1,5 +1,5 @@ import warnings -from typing import Optional, Union +from typing import List, Optional, Union from loguru import logger @@ -60,7 +60,7 @@ def get_messages( return records -def add_messages(records: Union[list[Record], Record]): +def add_messages(records: Union[list[Record], Record], flow_id: Optional[str] = None): """ Add a message to the monitor service. """ @@ -76,7 +76,8 @@ def add_messages(records: Union[list[Record], Record]): messages: list[MessageModel] = [] for record in records: - messages.append(MessageModel.from_record(record)) + record.timestamp = monitor_service.get_timestamp() + messages.append(MessageModel.from_record(record, flow_id=flow_id)) for message in messages: try: @@ -107,7 +108,24 @@ def store_message( session_id: Optional[str] = None, sender: Optional[str] = None, sender_name: Optional[str] = None, -) -> list[Record]: + flow_id: Optional[str] = None, +) -> List[Record]: + """ + Stores a message in the memory. + + Args: + message (Union[str, Record]): The message to be stored. It can be either a string or a Record object. + session_id (Optional[str]): The session ID associated with the message. + sender (Optional[str]): The sender ID associated with the message. + sender_name (Optional[str]): The name of the sender associated with the message. + flow_id (Optional[str]): The flow ID associated with the message. When running from the CustomComponent you can access this using `self.graph.flow_id`. + + Returns: + List[Record]: A list of records containing the stored message. + + Raises: + ValueError: If any of the required parameters (session_id, sender, sender_name) is not provided. + """ if not message: warnings.warn("No message provided.") return [] @@ -134,4 +152,4 @@ def store_message( }, ) - return add_messages([record]) + return add_messages([record], flow_id=flow_id) diff --git a/src/backend/base/langflow/schema/schema.py b/src/backend/base/langflow/schema/schema.py index 1474c24ee..921bd65b2 100644 --- a/src/backend/base/langflow/schema/schema.py +++ b/src/backend/base/langflow/schema/schema.py @@ -1,4 +1,5 @@ import copy +import json from typing import Literal, Optional, cast from langchain_core.documents import Document @@ -162,23 +163,15 @@ class Record(BaseModel): # Create a new Record object with a deep copy of the data dictionary return Record(data=copy.deepcopy(self.data, memo), text_key=self.text_key, default_value=self.default_value) - def __str__(self) -> str: - """ - Returns a string representation of the Record, including text and data. - """ - # Assuming a method to dump model data as JSON string exists. - # If it doesn't, you might need to implement it or use json.dumps() directly. - # build the string considering all keys in the data dictionary - prefix = "Record(" - suffix = ")" - text = f"text_key={self.text_key}, " - text += ", ".join([f"{k}={v}" for k, v in self.data.items()]) - return prefix + text + suffix - # check which attributes the Record has by checking the keys in the data dictionary def __dir__(self): return super().__dir__() + list(self.data.keys()) + def __str__(self) -> str: + # return a JSON string representation of the Record atributes + + return json.dumps(self.data) + INPUT_FIELD_NAME = "input_value" diff --git a/src/backend/base/langflow/services/database/models/__init__.py b/src/backend/base/langflow/services/database/models/__init__.py index 1f19435bd..ce12a6fce 100644 --- a/src/backend/base/langflow/services/database/models/__init__.py +++ b/src/backend/base/langflow/services/database/models/__init__.py @@ -1,6 +1,7 @@ from .api_key import ApiKey from .flow import Flow +from .folder import Folder from .user import User from .variable import Variable -__all__ = ["Flow", "User", "ApiKey", "Variable"] +__all__ = ["Flow", "User", "ApiKey", "Variable", "Folder"] diff --git a/src/backend/base/langflow/services/database/models/flow/model.py b/src/backend/base/langflow/services/database/models/flow/model.py index 42cd9277d..17b5e8931 100644 --- a/src/backend/base/langflow/services/database/models/flow/model.py +++ b/src/backend/base/langflow/services/database/models/flow/model.py @@ -13,6 +13,7 @@ from sqlmodel import JSON, Column, Field, Relationship, SQLModel from langflow.schema.schema import Record if TYPE_CHECKING: + from langflow.services.database.models.folder import Folder from langflow.services.database.models.user import User @@ -24,7 +25,7 @@ class FlowBase(SQLModel): data: Optional[Dict] = Field(default=None, nullable=True) is_component: Optional[bool] = Field(default=False, nullable=True) updated_at: Optional[datetime] = Field(default_factory=lambda: datetime.now(timezone.utc), nullable=True) - folder: Optional[str] = Field(default=None, nullable=True) + folder_id: Optional[UUID] = Field(default=None, nullable=True) @field_validator("icon_bg_color") def validate_icon_bg_color(cls, v): @@ -112,6 +113,8 @@ class Flow(FlowBase, table=True): data: Optional[Dict] = Field(default=None, sa_column=Column(JSON)) user_id: Optional[UUID] = Field(index=True, foreign_key="user.id", nullable=True) user: "User" = Relationship(back_populates="flows") + folder_id: Optional[UUID] = Field(default=None, foreign_key="folder.id", nullable=True, index=True) + folder: Optional["Folder"] = Relationship(back_populates="flows") def to_record(self): serialized = self.model_dump() @@ -128,14 +131,17 @@ class Flow(FlowBase, table=True): class FlowCreate(FlowBase): user_id: Optional[UUID] = None + folder_id: Optional[UUID] = None class FlowRead(FlowBase): id: UUID user_id: Optional[UUID] = Field() + folder_id: Optional[UUID] = Field() class FlowUpdate(SQLModel): name: Optional[str] = None description: Optional[str] = None data: Optional[Dict] = None + folder_id: Optional[UUID] = None diff --git a/src/backend/base/langflow/services/database/models/folder/__init__.py b/src/backend/base/langflow/services/database/models/folder/__init__.py new file mode 100644 index 000000000..e1d7e97b7 --- /dev/null +++ b/src/backend/base/langflow/services/database/models/folder/__init__.py @@ -0,0 +1,3 @@ +from .model import Folder, FolderCreate, FolderRead, FolderUpdate + +__all__ = ["Folder", "FolderCreate", "FolderRead", "FolderUpdate"] diff --git a/src/backend/base/langflow/services/database/models/folder/constants.py b/src/backend/base/langflow/services/database/models/folder/constants.py new file mode 100644 index 000000000..df71e9edf --- /dev/null +++ b/src/backend/base/langflow/services/database/models/folder/constants.py @@ -0,0 +1,2 @@ +DEFAULT_FOLDER_DESCRIPTION = "Manage your personal projects. Download and upload entire collections." +DEFAULT_FOLDER_NAME = "My Projects" diff --git a/src/backend/base/langflow/services/database/models/folder/model.py b/src/backend/base/langflow/services/database/models/folder/model.py new file mode 100644 index 000000000..a7a1c51d0 --- /dev/null +++ b/src/backend/base/langflow/services/database/models/folder/model.py @@ -0,0 +1,55 @@ +from typing import TYPE_CHECKING, List, Optional +from uuid import UUID, uuid4 + +from sqlmodel import Field, Relationship, SQLModel + +from langflow.services.database.models.flow.model import FlowRead + +if TYPE_CHECKING: + from langflow.services.database.models.flow.model import Flow + from langflow.services.database.models.user.model import User + + +class FolderBase(SQLModel): + name: str = Field(index=True) + description: Optional[str] = Field(default=None) + + +class Folder(FolderBase, table=True): + id: Optional[UUID] = Field(default_factory=uuid4, primary_key=True) + parent_id: Optional[UUID] = Field(default=None, foreign_key="folder.id") + + parent: Optional["Folder"] = Relationship( + back_populates="children", + sa_relationship_kwargs=dict(remote_side="Folder.id"), + ) + children: List["Folder"] = Relationship(back_populates="parent") + user_id: Optional[UUID] = Field(default=None, foreign_key="user.id") + user: "User" = Relationship(back_populates="folders") + flows: List["Flow"] = Relationship( + back_populates="folder", sa_relationship_kwargs={"cascade": "all, delete, delete-orphan"} + ) + + +class FolderCreate(FolderBase): + components_list: Optional[List[UUID]] = None + flows_list: Optional[List[UUID]] = None + + +class FolderRead(FolderBase): + id: UUID + parent_id: Optional[UUID] = Field() + + +class FolderReadWithFlows(FolderBase): + id: UUID + parent_id: Optional[UUID] = Field() + flows: List["FlowRead"] = Field(default=[]) + + +class FolderUpdate(SQLModel): + name: Optional[str] = None + description: Optional[str] = None + parent_id: Optional[UUID] = None + components: Optional[List[UUID]] = None + flows: Optional[List[UUID]] = None diff --git a/src/backend/base/langflow/services/database/models/folder/utils.py b/src/backend/base/langflow/services/database/models/folder/utils.py new file mode 100644 index 000000000..19f70819f --- /dev/null +++ b/src/backend/base/langflow/services/database/models/folder/utils.py @@ -0,0 +1,26 @@ +from typing import TYPE_CHECKING +from uuid import UUID + +from langflow.services.database.models.flow.model import Flow +from sqlmodel import Session, select, update + +from .constants import DEFAULT_FOLDER_DESCRIPTION, DEFAULT_FOLDER_NAME +from .model import Folder + +if TYPE_CHECKING: + from langflow.services.database.models.user.model import User + + +def create_default_folder_if_it_doesnt_exist(session: Session, user_id: UUID): + if not session.exec(select(Folder).where(Folder.user_id == user_id)).first(): + folder = Folder(name=DEFAULT_FOLDER_NAME, user_id=user_id, description=DEFAULT_FOLDER_DESCRIPTION) + session.add(folder) + session.commit() + session.refresh(folder) + session.exec( + update(Flow) + .where((Flow.folder_id == None) & (Flow.user_id == user_id)) + .values(folder_id=folder.id) + ) + session.commit() + return None diff --git a/src/backend/base/langflow/services/database/models/user/model.py b/src/backend/base/langflow/services/database/models/user/model.py index 491ae4efc..dfc978c27 100644 --- a/src/backend/base/langflow/services/database/models/user/model.py +++ b/src/backend/base/langflow/services/database/models/user/model.py @@ -8,6 +8,7 @@ if TYPE_CHECKING: from langflow.services.database.models.api_key import ApiKey from langflow.services.database.models.variable import Variable from langflow.services.database.models.flow import Flow + from langflow.services.database.models.folder import Folder class User(SQLModel, table=True): @@ -30,6 +31,10 @@ class User(SQLModel, table=True): back_populates="user", sa_relationship_kwargs={"cascade": "delete"}, ) + folders: list["Folder"] = Relationship( + back_populates="user", + sa_relationship_kwargs={"cascade": "delete"}, + ) class UserCreate(SQLModel): diff --git a/src/backend/base/langflow/services/monitor/schema.py b/src/backend/base/langflow/services/monitor/schema.py index 80636a554..e7bc7a963 100644 --- a/src/backend/base/langflow/services/monitor/schema.py +++ b/src/backend/base/langflow/services/monitor/schema.py @@ -2,15 +2,16 @@ import json from datetime import datetime from typing import TYPE_CHECKING, Any, Optional -from pydantic import BaseModel, Field, field_serializer, validator +from pydantic import BaseModel, Field, field_serializer, field_validator if TYPE_CHECKING: from langflow.schema import Record class TransactionModel(BaseModel): - id: Optional[int] = Field(default=None, alias="id") + index: Optional[int] = Field(default=None) timestamp: Optional[datetime] = Field(default_factory=datetime.now, alias="timestamp") + flow_id: str source: str target: str target_args: dict @@ -22,15 +23,53 @@ class TransactionModel(BaseModel): populate_by_name = True # validate target_args in case it is a JSON - @validator("target_args", pre=True) + @field_validator("target_args", mode="before") def validate_target_args(cls, v): if isinstance(v, str): return json.loads(v) return v + @field_serializer("target_args") + def serialize_target_args(v): + if isinstance(v, dict): + return json.dumps(v) + return v + + +class TransactionModelResponse(BaseModel): + index: Optional[int] = Field(default=None) + timestamp: Optional[datetime] = Field(default_factory=datetime.now, alias="timestamp") + flow_id: str + source: str + target: str + target_args: dict + status: str + error: Optional[str] = None + + class Config: + from_attributes = True + populate_by_name = True + + # validate target_args in case it is a JSON + @field_validator("target_args", mode="before") + def validate_target_args(cls, v): + if isinstance(v, str): + return json.loads(v) + return v + + @field_validator("index", mode="before") + def validate_id(cls, v): + if isinstance(v, float): + try: + return int(v) + except ValueError: + return None + return v + class MessageModel(BaseModel): - id: Optional[int] = Field(default=None, alias="id") + index: Optional[int] = Field(default=None) + flow_id: Optional[str] = Field(default=None, alias="flow_id") timestamp: datetime = Field(default_factory=datetime.now) sender: str sender_name: str @@ -42,14 +81,14 @@ class MessageModel(BaseModel): from_attributes = True populate_by_name = True - @validator("artifacts", pre=True) + @field_validator("artifacts", mode="before") def validate_target_args(cls, v): if isinstance(v, str): return json.loads(v) return v @classmethod - def from_record(cls, record: "Record"): + def from_record(cls, record: "Record", flow_id: Optional[str] = None): # first check if the record has all the required fields if not record.data or ("sender" not in record.data and "sender_name" not in record.data): raise ValueError("The record does not have the required fields 'sender' and 'sender_name' in the data.") @@ -59,9 +98,30 @@ class MessageModel(BaseModel): message=record.text, session_id=record.session_id, artifacts=record.artifacts or {}, + timestamp=record.timestamp, + flow_id=flow_id, ) +class MessageModelResponse(MessageModel): + index: Optional[int] = Field(default=None) + + @field_validator("artifacts", mode="before") + def serialize_artifacts(v): + if isinstance(v, str): + return json.loads(v) + return v + + @field_validator("index", mode="before") + def validate_id(cls, v): + if isinstance(v, float): + try: + return int(v) + except ValueError: + return None + return v + + class VertexBuildModel(BaseModel): index: Optional[int] = Field(default=None, alias="index", exclude=True) id: Optional[str] = Field(default=None, alias="id") @@ -86,9 +146,11 @@ class VertexBuildModel(BaseModel): elif isinstance(value, list) and all(isinstance(i, BaseModel) for i in value): v[key] = [i.model_dump() for i in value] return json.dumps(v) + elif isinstance(v, BaseModel): + return v.model_dump_json() return v - @validator("params", pre=True) + @field_validator("params", mode="before") def validate_params(cls, v): if isinstance(v, str): try: @@ -103,16 +165,18 @@ class VertexBuildModel(BaseModel): return json.dumps([i.model_dump() for i in v]) return v - @validator("data", pre=True) + @field_validator("data", mode="before") def validate_data(cls, v): if isinstance(v, str): return json.loads(v) return v - @validator("artifacts", pre=True) + @field_validator("artifacts", mode="before") def validate_artifacts(cls, v): if isinstance(v, str): return json.loads(v) + elif isinstance(v, BaseModel): + return v.model_dump() return v diff --git a/src/backend/base/langflow/services/monitor/service.py b/src/backend/base/langflow/services/monitor/service.py index e3d56db52..7bf8b6e56 100644 --- a/src/backend/base/langflow/services/monitor/service.py +++ b/src/backend/base/langflow/services/monitor/service.py @@ -69,7 +69,7 @@ class MonitorService(Service): valid: Optional[bool] = None, order_by: Optional[str] = "timestamp", ): - query = "SELECT id, flow_id, valid, params, data, artifacts, timestamp FROM vertex_builds" + query = "SELECT index,flow_id, valid, params, data, artifacts, timestamp FROM vertex_builds" conditions = [] if flow_id: conditions.append(f"flow_id = '{flow_id}'") @@ -109,6 +109,7 @@ class MonitorService(Service): def get_messages( self, + flow_id: Optional[str] = None, sender: Optional[str] = None, sender_name: Optional[str] = None, session_id: Optional[str] = None, @@ -116,7 +117,7 @@ class MonitorService(Service): order: Optional[str] = "DESC", limit: Optional[int] = None, ): - query = "SELECT sender_name, sender, session_id, message, artifacts, timestamp FROM messages" + query = "SELECT index, flow_id, sender_name, sender, session_id, message, artifacts, timestamp FROM messages" conditions = [] if sender: conditions.append(f"sender = '{sender}'") @@ -124,6 +125,8 @@ class MonitorService(Service): conditions.append(f"sender_name = '{sender_name}'") if session_id: conditions.append(f"session_id = '{session_id}'") + if flow_id: + conditions.append(f"flow_id = '{flow_id}'") if conditions: query += " WHERE " + " AND ".join(conditions) @@ -146,8 +149,9 @@ class MonitorService(Service): target: Optional[str] = None, status: Optional[str] = None, order_by: Optional[str] = "timestamp", + flow_id: Optional[str] = None, ): - query = "SELECT source, target, target_args, status, error, timestamp FROM transactions" + query = "SELECT index,flow_id, source, target, target_args, status, error, timestamp FROM transactions" conditions = [] if source: conditions.append(f"source = '{source}'") @@ -155,6 +159,8 @@ class MonitorService(Service): conditions.append(f"target = '{target}'") if status: conditions.append(f"status = '{status}'") + if flow_id: + conditions.append(f"flow_id = '{flow_id}'") if conditions: query += " WHERE " + " AND ".join(conditions) diff --git a/src/backend/base/langflow/services/monitor/utils.py b/src/backend/base/langflow/services/monitor/utils.py index 7b6948c1a..aec5ae0c6 100644 --- a/src/backend/base/langflow/services/monitor/utils.py +++ b/src/backend/base/langflow/services/monitor/utils.py @@ -61,7 +61,7 @@ def drop_and_create_table_if_schema_mismatch(db_path: str, table_name: str, mode if current_schema != desired_schema: # If they don't match, drop the existing table and create a new one conn.execute(f"DROP TABLE IF EXISTS {table_name}") - if "id" in desired_schema.keys(): + if INDEX_KEY in desired_schema.keys(): # Create a sequence for the id column try: conn.execute(f"CREATE SEQUENCE seq_{table_name} START 1;") @@ -91,7 +91,7 @@ def add_row_to_table( columns = ", ".join(keys) values_placeholders = ", ".join(["?" for _ in keys]) - values = list(validated_dict.values()) + values = [validated_dict[key] for key in keys] # Create the insert statement insert_sql = f"INSERT INTO {table_name} ({columns}) VALUES ({values_placeholders})" @@ -104,7 +104,7 @@ def add_row_to_table( column_error_message = "" for key, value in validated_dict.items(): logger.error(f"{key}: {type(value)}") - if value in str(e): + if str(value) in str(e): column_error_message = f"Column: {key} Value: {value} Error: {e}" if column_error_message: @@ -119,6 +119,7 @@ async def log_message( message: str, session_id: str, artifacts: Optional[dict] = None, + flow_id: Optional[str] = None, ): try: from langflow.graph.vertex.base import Vertex @@ -134,6 +135,7 @@ async def log_message( "artifacts": artifacts or {}, "session_id": session_id, "timestamp": monitor_service.get_timestamp(), + "flow_id": flow_id, } monitor_service.add_row(table_name="messages", data=row) except Exception as e: diff --git a/src/backend/base/langflow/utils/schemas.py b/src/backend/base/langflow/utils/schemas.py index 3e6f17a5a..fbbec2429 100644 --- a/src/backend/base/langflow/utils/schemas.py +++ b/src/backend/base/langflow/utils/schemas.py @@ -45,6 +45,12 @@ class ChatOutputResponse(BaseModel): return self +class RecordOutputResponse(BaseModel): + """Record output response schema.""" + + records: List[Optional[Dict]] + + class ContainsEnumMeta(enum.EnumMeta): def __contains__(cls, item): try: diff --git a/src/backend/base/poetry.lock b/src/backend/base/poetry.lock index 9d988cc83..23665d65f 100644 --- a/src/backend/base/poetry.lock +++ b/src/backend/base/poetry.lock @@ -131,13 +131,13 @@ tz = ["backports.zoneinfo"] [[package]] name = "annotated-types" -version = "0.6.0" +version = "0.7.0" description = "Reusable constraint types to use with typing.Annotated" optional = false python-versions = ">=3.8" files = [ - {file = "annotated_types-0.6.0-py3-none-any.whl", hash = "sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43"}, - {file = "annotated_types-0.6.0.tar.gz", hash = "sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d"}, + {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"}, + {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, ] [[package]] @@ -632,17 +632,20 @@ gmpy2 = ["gmpy2"] [[package]] name = "emoji" -version = "2.11.1" +version = "2.12.1" description = "Emoji for Python" optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7" +python-versions = ">=3.7" files = [ - {file = "emoji-2.11.1-py2.py3-none-any.whl", hash = "sha256:b7ba25299bbf520cc8727848ae66b986da32aee27dc2887eaea2bff07226ce49"}, - {file = "emoji-2.11.1.tar.gz", hash = "sha256:062ff0b3154b6219143f8b9f4b3e5c64c35bc2b146e6e2349ab5f29e218ce1ee"}, + {file = "emoji-2.12.1-py3-none-any.whl", hash = "sha256:a00d62173bdadc2510967a381810101624a2f0986145b8da0cffa42e29430235"}, + {file = "emoji-2.12.1.tar.gz", hash = "sha256:4aa0488817691aa58d83764b6c209f8a27c0b3ab3f89d1b8dceca1a62e4973eb"}, ] +[package.dependencies] +typing-extensions = ">=4.7.0" + [package.extras] -dev = ["coverage", "coveralls", "pytest"] +dev = ["coverage", "pytest (>=7.4.4)"] [[package]] name = "exceptiongroup" @@ -1169,13 +1172,13 @@ types-requests = ">=2.31.0.2,<3.0.0.0" [[package]] name = "langsmith" -version = "0.1.59" +version = "0.1.60" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.59-py3-none-any.whl", hash = "sha256:445e3bc1d3baa1e5340cd979907a19483b9763a2ed37b863a01113d406f69345"}, - {file = "langsmith-0.1.59.tar.gz", hash = "sha256:e748a89f4dd6aa441349143e49e546c03b5dfb43376a25bfef6a5ca792fe1437"}, + {file = "langsmith-0.1.60-py3-none-any.whl", hash = "sha256:3c3520ea473de0a984237b3e9d638fdf23ef3acc5aec89a42e693225e72d6120"}, + {file = "langsmith-0.1.60.tar.gz", hash = "sha256:6a145b5454437f9e0f81525f23c4dcdbb8c07b1c91553b8f697456c418d6a599"}, ] [package.dependencies] @@ -2329,13 +2332,13 @@ files = [ [[package]] name = "requests" -version = "2.31.0" +version = "2.32.2" description = "Python HTTP for Humans." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, - {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, + {file = "requests-2.32.2-py3-none-any.whl", hash = "sha256:fc06670dd0ed212426dfeb94fc1b983d917c4f9847c863f313c9dfaaffb7c23c"}, + {file = "requests-2.32.2.tar.gz", hash = "sha256:dd951ff5ecf3e3b3aa26b40703ba77495dab41da839ae72ef3c8e5d8e2433289"}, ] [package.dependencies] @@ -2583,13 +2586,13 @@ typing-extensions = ">=3.7.4.3" [[package]] name = "types-requests" -version = "2.31.0.20240406" +version = "2.32.0.20240521" description = "Typing stubs for requests" optional = false python-versions = ">=3.8" files = [ - {file = "types-requests-2.31.0.20240406.tar.gz", hash = "sha256:4428df33c5503945c74b3f42e82b181e86ec7b724620419a2966e2de604ce1a1"}, - {file = "types_requests-2.31.0.20240406-py3-none-any.whl", hash = "sha256:6216cdac377c6b9a040ac1c0404f7284bd13199c0e1bb235f4324627e8898cf5"}, + {file = "types-requests-2.32.0.20240521.tar.gz", hash = "sha256:c5c4a0ae95aad51f1bf6dae9eed04a78f7f2575d4b171da37b622e08b93eb5d3"}, + {file = "types_requests-2.32.0.20240521-py3-none-any.whl", hash = "sha256:ab728ba43ffb073db31f21202ecb97db8753ded4a9dc49cb480d8a5350c5c421"}, ] [package.dependencies] diff --git a/src/backend/base/pyproject.toml b/src/backend/base/pyproject.toml index 06b62e126..6297fcabd 100644 --- a/src/backend/base/pyproject.toml +++ b/src/backend/base/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "langflow-base" -version = "0.0.45" +version = "0.0.46" description = "A Python package with a built-in web application" authors = ["Langflow "] maintainers = [ diff --git a/src/frontend/package-lock.json b/src/frontend/package-lock.json index c8ddc95ba..59e060c08 100644 --- a/src/frontend/package-lock.json +++ b/src/frontend/package-lock.json @@ -9,6 +9,7 @@ "version": "0.1.2", "dependencies": { "@headlessui/react": "^1.7.17", + "@hookform/resolvers": "^3.3.4", "@million/lint": "^0.0.73", "@radix-ui/react-accordion": "^1.1.2", "@radix-ui/react-checkbox": "^1.0.4", @@ -55,6 +56,7 @@ "react-cookie": "^4.1.1", "react-dom": "^18.2.21", "react-error-boundary": "^4.0.11", + "react-hook-form": "^7.51.4", "react-icons": "^5.0.1", "react-laag": "^2.0.5", "react-markdown": "^8.0.7", @@ -73,10 +75,11 @@ "uuid": "^9.0.0", "vite-plugin-svgr": "^3.2.0", "web-vitals": "^2.1.4", + "zod": "^3.23.7", "zustand": "^4.4.7" }, "devDependencies": { - "@playwright/test": "^1.43.1", + "@playwright/test": "^1.44.0", "@swc/cli": "^0.1.62", "@swc/core": "^1.3.80", "@tailwindcss/typography": "^0.5.9", @@ -107,6 +110,15 @@ "vite": "^4.5.2" } }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/@adobe/css-tools": { "version": "4.3.3", "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.3.tgz", @@ -171,20 +183,20 @@ } }, "node_modules/@babel/core": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.5.tgz", - "integrity": "sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==", + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.4.tgz", + "integrity": "sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg==", "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.24.2", - "@babel/generator": "^7.24.5", + "@babel/generator": "^7.24.4", "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-module-transforms": "^7.24.5", - "@babel/helpers": "^7.24.5", - "@babel/parser": "^7.24.5", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.24.4", + "@babel/parser": "^7.24.4", "@babel/template": "^7.24.0", - "@babel/traverse": "^7.24.5", - "@babel/types": "^7.24.5", + "@babel/traverse": "^7.24.1", + "@babel/types": "^7.24.0", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -200,11 +212,11 @@ } }, "node_modules/@babel/generator": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.5.tgz", - "integrity": "sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==", + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.4.tgz", + "integrity": "sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw==", "dependencies": { - "@babel/types": "^7.24.5", + "@babel/types": "^7.24.0", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" @@ -271,15 +283,15 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.5.tgz", - "integrity": "sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", + "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.24.3", - "@babel/helper-simple-access": "^7.24.5", - "@babel/helper-split-export-declaration": "^7.24.5", - "@babel/helper-validator-identifier": "^7.24.5" + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.20" }, "engines": { "node": ">=6.9.0" @@ -289,22 +301,22 @@ } }, "node_modules/@babel/helper-simple-access": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.5.tgz", - "integrity": "sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", "dependencies": { - "@babel/types": "^7.24.5" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz", - "integrity": "sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", "dependencies": { - "@babel/types": "^7.24.5" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -319,9 +331,9 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz", - "integrity": "sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "engines": { "node": ">=6.9.0" } @@ -335,24 +347,24 @@ } }, "node_modules/@babel/helpers": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.5.tgz", - "integrity": "sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q==", + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.4.tgz", + "integrity": "sha512-FewdlZbSiwaVGlgT1DPANDuCHaDMiOo+D/IDYRFYjHOuv66xMSJ7fQwwODwRNAPkADIO/z1EoF/l2BCWlWABDw==", "dependencies": { "@babel/template": "^7.24.0", - "@babel/traverse": "^7.24.5", - "@babel/types": "^7.24.5" + "@babel/traverse": "^7.24.1", + "@babel/types": "^7.24.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.5.tgz", - "integrity": "sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==", + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.2.tgz", + "integrity": "sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==", "dependencies": { - "@babel/helper-validator-identifier": "^7.24.5", + "@babel/helper-validator-identifier": "^7.22.20", "chalk": "^2.4.2", "js-tokens": "^4.0.0", "picocolors": "^1.0.0" @@ -362,9 +374,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.5.tgz", - "integrity": "sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==", + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.4.tgz", + "integrity": "sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==", "bin": { "parser": "bin/babel-parser.js" }, @@ -373,9 +385,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.5.tgz", - "integrity": "sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==", + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.4.tgz", + "integrity": "sha512-dkxf7+hn8mFBwKjs9bvBlArzLVxVbS8usaPUDd5p2a9JCL9tB8OaOVN1isD4+Xyk4ns89/xeOmbQvgdK7IIVdA==", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -397,18 +409,18 @@ } }, "node_modules/@babel/traverse": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.5.tgz", - "integrity": "sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.1.tgz", + "integrity": "sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==", "dependencies": { - "@babel/code-frame": "^7.24.2", - "@babel/generator": "^7.24.5", + "@babel/code-frame": "^7.24.1", + "@babel/generator": "^7.24.1", "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-function-name": "^7.23.0", "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.24.5", - "@babel/parser": "^7.24.5", - "@babel/types": "^7.24.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.24.1", + "@babel/types": "^7.24.0", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -417,258 +429,18 @@ } }, "node_modules/@babel/types": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.5.tgz", - "integrity": "sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz", + "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==", "dependencies": { - "@babel/helper-string-parser": "^7.24.1", - "@babel/helper-validator-identifier": "^7.24.5", + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz", - "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==", - "cpu": [ - "ppc64" - ], - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz", - "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", - "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz", - "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", - "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", - "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", - "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", - "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", - "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", - "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", - "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", - "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", - "cpu": [ - "loong64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", - "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", - "cpu": [ - "mips64el" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", - "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", - "cpu": [ - "ppc64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", - "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", - "cpu": [ - "riscv64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", - "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", - "cpu": [ - "s390x" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, "node_modules/@esbuild/linux-x64": { "version": "0.17.19", "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", @@ -684,96 +456,6 @@ "node": ">=12" } }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", - "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", - "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", - "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", - "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", - "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", - "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", @@ -868,28 +550,28 @@ } }, "node_modules/@floating-ui/core": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.1.tgz", - "integrity": "sha512-42UH54oPZHPdRHdw6BgoBD6cg/eVTmVrFcgeRDM3jbO7uxSoipVcmcIGFcA5jmOHO5apcyvBhkSKES3fQJnu7A==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.0.tgz", + "integrity": "sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==", "dependencies": { - "@floating-ui/utils": "^0.2.0" + "@floating-ui/utils": "^0.2.1" } }, "node_modules/@floating-ui/dom": { - "version": "1.6.5", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.5.tgz", - "integrity": "sha512-Nsdud2X65Dz+1RHjAIP0t8z5e2ff/IRbei6BqFrl1urT8sDVzM1HMQ+R0XcU5ceRfyO3I6ayeqIfh+6Wb8LGTw==", + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.3.tgz", + "integrity": "sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw==", "dependencies": { "@floating-ui/core": "^1.0.0", "@floating-ui/utils": "^0.2.0" } }, "node_modules/@floating-ui/react-dom": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.9.tgz", - "integrity": "sha512-q0umO0+LQK4+p6aGyvzASqKbKOJcAHJ7ycE9CuUvfx3s9zTHWmGJTPOIlM/hmSBfUfg/XfY5YhLBLR/LHwShQQ==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.8.tgz", + "integrity": "sha512-HOdqOt3R3OGeTKidaLvJKcgg75S6tibQ3Tif4eyd91QnIJWr0NLvoXFpJA/j8HqkFSL68GDca9AuyWEHlhyClw==", "dependencies": { - "@floating-ui/dom": "^1.0.0" + "@floating-ui/dom": "^1.6.1" }, "peerDependencies": { "react": ">=16.8.0", @@ -897,9 +579,9 @@ } }, "node_modules/@floating-ui/utils": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.2.tgz", - "integrity": "sha512-J4yDIIthosAsRZ5CPYP/jQvUAQtlZTTD/4suA08/FEnlxqW3sKS9iAhgsa9VYLZ6vDHn/ixJgIqRQPotoBjxIw==" + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.1.tgz", + "integrity": "sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==" }, "node_modules/@headlessui/react": { "version": "1.7.19", @@ -917,6 +599,14 @@ "react-dom": "^16 || ^17 || ^18" } }, + "node_modules/@hookform/resolvers": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@hookform/resolvers/-/resolvers-3.3.4.tgz", + "integrity": "sha512-o5cgpGOuJYrd+iMKvkttOclgwRW86EsWJZZRC23prf0uU2i48Htq4PuT73AVb9ionFyZrwYEITuOFGF+BydEtQ==", + "peerDependencies": { + "react-hook-form": "^7.0.0" + } + }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.14", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", @@ -1097,11 +787,26 @@ "node-pre-gyp": "bin/node-pre-gyp" } }, - "node_modules/@mapbox/node-pre-gyp/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "node_modules/@mapbox/node-pre-gyp/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "optional": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "optional": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, "bin": { "semver": "bin/semver.js" }, @@ -1109,6 +814,12 @@ "node": ">=10" } }, + "node_modules/@mapbox/node-pre-gyp/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "optional": true + }, "node_modules/@million/lint": { "version": "0.0.73", "resolved": "https://registry.npmjs.org/@million/lint/-/lint-0.0.73.tgz", @@ -1136,231 +847,6 @@ "lint": "dist/wizard/index.js" } }, - "node_modules/@million/lint/node_modules/@esbuild/android-arm": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz", - "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@million/lint/node_modules/@esbuild/android-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz", - "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@million/lint/node_modules/@esbuild/android-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz", - "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@million/lint/node_modules/@esbuild/darwin-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz", - "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@million/lint/node_modules/@esbuild/darwin-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz", - "integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@million/lint/node_modules/@esbuild/freebsd-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz", - "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@million/lint/node_modules/@esbuild/freebsd-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz", - "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@million/lint/node_modules/@esbuild/linux-arm": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz", - "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@million/lint/node_modules/@esbuild/linux-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz", - "integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@million/lint/node_modules/@esbuild/linux-ia32": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz", - "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@million/lint/node_modules/@esbuild/linux-loong64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz", - "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==", - "cpu": [ - "loong64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@million/lint/node_modules/@esbuild/linux-mips64el": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz", - "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==", - "cpu": [ - "mips64el" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@million/lint/node_modules/@esbuild/linux-ppc64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz", - "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==", - "cpu": [ - "ppc64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@million/lint/node_modules/@esbuild/linux-riscv64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz", - "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==", - "cpu": [ - "riscv64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@million/lint/node_modules/@esbuild/linux-s390x": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz", - "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==", - "cpu": [ - "s390x" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, "node_modules/@million/lint/node_modules/@esbuild/linux-x64": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz", @@ -1376,96 +862,6 @@ "node": ">=12" } }, - "node_modules/@million/lint/node_modules/@esbuild/netbsd-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz", - "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@million/lint/node_modules/@esbuild/openbsd-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz", - "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@million/lint/node_modules/@esbuild/sunos-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz", - "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@million/lint/node_modules/@esbuild/win32-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz", - "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@million/lint/node_modules/@esbuild/win32-ia32": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz", - "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@million/lint/node_modules/@esbuild/win32-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz", - "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, "node_modules/@million/lint/node_modules/@radix-ui/primitive": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.0.0.tgz", @@ -2839,11 +2235,11 @@ } }, "node_modules/@reactflow/background": { - "version": "11.3.13", - "resolved": "https://registry.npmjs.org/@reactflow/background/-/background-11.3.13.tgz", - "integrity": "sha512-hkvpVEhgvfTDyCvdlitw4ioKCYLaaiRXnuEG+1QM3Np+7N1DiWF1XOv5I8AFyNoJL07yXEkbECUTsHvkBvcG5A==", + "version": "11.3.12", + "resolved": "https://registry.npmjs.org/@reactflow/background/-/background-11.3.12.tgz", + "integrity": "sha512-jBuWVb43JQy5h4WOS7G0PU8voGTEJNA+qDmx8/jyBtrjbasTesLNfQvboTGjnQYYiJco6mw5vrtQItAJDNoIqw==", "dependencies": { - "@reactflow/core": "11.11.3", + "@reactflow/core": "11.11.2", "classcat": "^5.0.3", "zustand": "^4.4.1" }, @@ -2853,11 +2249,11 @@ } }, "node_modules/@reactflow/controls": { - "version": "11.2.13", - "resolved": "https://registry.npmjs.org/@reactflow/controls/-/controls-11.2.13.tgz", - "integrity": "sha512-3xgEg6ALIVkAQCS4NiBjb7ad8Cb3D8CtA7Vvl4Hf5Ar2PIVs6FOaeft9s2iDZGtsWP35ECDYId1rIFVhQL8r+A==", + "version": "11.2.12", + "resolved": "https://registry.npmjs.org/@reactflow/controls/-/controls-11.2.12.tgz", + "integrity": "sha512-L9F3+avFRShoprdT+5oOijm5gVsz2rqWCXBzOAgD923L1XFGIspdiHLLf8IlPGsT+mfl0GxbptZhaEeEzl1e3g==", "dependencies": { - "@reactflow/core": "11.11.3", + "@reactflow/core": "11.11.2", "classcat": "^5.0.3", "zustand": "^4.4.1" }, @@ -2867,9 +2263,9 @@ } }, "node_modules/@reactflow/core": { - "version": "11.11.3", - "resolved": "https://registry.npmjs.org/@reactflow/core/-/core-11.11.3.tgz", - "integrity": "sha512-+adHdUa7fJSEM93fWfjQwyWXeI92a1eLKwWbIstoCakHpL8UjzwhEh6sn+mN2h/59MlVI7Ehr1iGTt3MsfcIFA==", + "version": "11.11.2", + "resolved": "https://registry.npmjs.org/@reactflow/core/-/core-11.11.2.tgz", + "integrity": "sha512-+GfgyskweL1PsgRSguUwfrT2eDotlFgaKfDLm7x0brdzzPJY2qbCzVetaxedaiJmIli3817iYbILvE9qLKwbRA==", "dependencies": { "@types/d3": "^7.4.0", "@types/d3-drag": "^3.0.1", @@ -2887,11 +2283,11 @@ } }, "node_modules/@reactflow/minimap": { - "version": "11.7.13", - "resolved": "https://registry.npmjs.org/@reactflow/minimap/-/minimap-11.7.13.tgz", - "integrity": "sha512-m2MvdiGSyOu44LEcERDEl1Aj6x//UQRWo3HEAejNU4HQTlJnYrSN8tgrYF8TxC1+c/9UdyzQY5VYgrTwW4QWdg==", + "version": "11.7.12", + "resolved": "https://registry.npmjs.org/@reactflow/minimap/-/minimap-11.7.12.tgz", + "integrity": "sha512-SRDU77c2PCF54PV/MQfkz7VOW46q7V1LZNOQlXAp7dkNyAOI6R+tb9qBUtUJOvILB+TCN6pRfD9fQ+2T99bW3Q==", "dependencies": { - "@reactflow/core": "11.11.3", + "@reactflow/core": "11.11.2", "@types/d3-selection": "^3.0.3", "@types/d3-zoom": "^3.0.1", "classcat": "^5.0.3", @@ -2905,11 +2301,11 @@ } }, "node_modules/@reactflow/node-resizer": { - "version": "2.2.13", - "resolved": "https://registry.npmjs.org/@reactflow/node-resizer/-/node-resizer-2.2.13.tgz", - "integrity": "sha512-X7ceQ2s3jFLgbkg03n2RYr4hm3jTVrzkW2W/8ANv/SZfuVmF8XJxlERuD8Eka5voKqLda0ywIZGAbw9GoHLfUQ==", + "version": "2.2.12", + "resolved": "https://registry.npmjs.org/@reactflow/node-resizer/-/node-resizer-2.2.12.tgz", + "integrity": "sha512-6LHJGuI1zHyRrZHw5gGlVLIWnvVxid9WIqw8FMFSg+oF2DuS3pAPwSoZwypy7W22/gDNl9eD1Dcl/OtFtDFQ+w==", "dependencies": { - "@reactflow/core": "11.11.3", + "@reactflow/core": "11.11.2", "classcat": "^5.0.4", "d3-drag": "^3.0.0", "d3-selection": "^3.0.0", @@ -2921,11 +2317,11 @@ } }, "node_modules/@reactflow/node-toolbar": { - "version": "1.3.13", - "resolved": "https://registry.npmjs.org/@reactflow/node-toolbar/-/node-toolbar-1.3.13.tgz", - "integrity": "sha512-aknvNICO10uWdthFSpgD6ctY/CTBeJUMV9co8T9Ilugr08Nb89IQ4uD0dPmr031ewMQxixtYIkw+sSDDzd2aaQ==", + "version": "1.3.12", + "resolved": "https://registry.npmjs.org/@reactflow/node-toolbar/-/node-toolbar-1.3.12.tgz", + "integrity": "sha512-4kJRvNna/E3y2MZW9/80wTKwkhw4pLJiz3D5eQrD13XcmojSb1rArO9CiwyrI+rMvs5gn6NlCFB4iN1F+Q+lxQ==", "dependencies": { - "@reactflow/core": "11.11.3", + "@reactflow/core": "11.11.2", "classcat": "^5.0.3", "zustand": "^4.4.1" }, @@ -2935,9 +2331,9 @@ } }, "node_modules/@remix-run/router": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.16.1.tgz", - "integrity": "sha512-es2g3dq6Nb07iFxGk5GuHN20RwBZOsuDQN7izWIisUcv9r+d2C5jQxqmgkdebXgReWfiyUabcki6Fg77mSNrig==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.16.0.tgz", + "integrity": "sha512-Quz1KOffeEf/zwkCBM3kBtH4ZoZ+pT3xIXBG4PPW/XFtDP7EGhtTiC2+gpL9GnR7+Qdet5Oa6cYSvwKYg6kN9Q==", "engines": { "node": ">=14.0.0" } @@ -3219,11 +2615,26 @@ } } }, - "node_modules/@swc/cli/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "node_modules/@swc/cli/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/cli/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, "bin": { "semver": "bin/semver.js" }, @@ -3231,10 +2642,16 @@ "node": ">=10" } }, + "node_modules/@swc/cli/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/@swc/core": { - "version": "1.5.6", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.5.6.tgz", - "integrity": "sha512-0UC0NkgWoqd9fkHPn1NTkTsQucW8iaA1fujK2OLGp40Zg5Vr7nrwBlqruX9expVMggS4rv/3vZSAGzRm80VQ/g==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.5.0.tgz", + "integrity": "sha512-fjADAC5gOOX54Rpcr1lF9DHLD+nPD5H/zXLtEgK2Ez3esmogT+LfHzCZtUxqetjvaMChKhQ0Pp0ZB6Hpz/tCbw==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -3249,16 +2666,16 @@ "url": "https://opencollective.com/swc" }, "optionalDependencies": { - "@swc/core-darwin-arm64": "1.5.6", - "@swc/core-darwin-x64": "1.5.6", - "@swc/core-linux-arm-gnueabihf": "1.5.6", - "@swc/core-linux-arm64-gnu": "1.5.6", - "@swc/core-linux-arm64-musl": "1.5.6", - "@swc/core-linux-x64-gnu": "1.5.6", - "@swc/core-linux-x64-musl": "1.5.6", - "@swc/core-win32-arm64-msvc": "1.5.6", - "@swc/core-win32-ia32-msvc": "1.5.6", - "@swc/core-win32-x64-msvc": "1.5.6" + "@swc/core-darwin-arm64": "1.5.0", + "@swc/core-darwin-x64": "1.5.0", + "@swc/core-linux-arm-gnueabihf": "1.5.0", + "@swc/core-linux-arm64-gnu": "1.5.0", + "@swc/core-linux-arm64-musl": "1.5.0", + "@swc/core-linux-x64-gnu": "1.5.0", + "@swc/core-linux-x64-musl": "1.5.0", + "@swc/core-win32-arm64-msvc": "1.5.0", + "@swc/core-win32-ia32-msvc": "1.5.0", + "@swc/core-win32-x64-msvc": "1.5.0" }, "peerDependencies": { "@swc/helpers": "^0.5.0" @@ -3269,90 +2686,10 @@ } } }, - "node_modules/@swc/core-darwin-arm64": { - "version": "1.5.6", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.5.6.tgz", - "integrity": "sha512-U4szqU03cvZOTXug5o+HQbbg16ZGwANtr7LELjw4hmWBqSTcbBVXgocyBMm1L4ngFIsqJc33D+urnnaae/NfMg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-darwin-x64": { - "version": "1.5.6", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.5.6.tgz", - "integrity": "sha512-k4jymBHYkbfGw8DT4bLtVsAckpp2dblyImQHRPScpvDyS4jUo4174mgy/dEnFmZVLTbuZAY876zBQyH+eJ3p4A==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.5.6", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.5.6.tgz", - "integrity": "sha512-ijwGEdP18vS8YmvHUIfKYDFQ5mQ1GtCxhJp+IcJlrBJE+/eSJVvEVF5WwXFQ+Hzj6tr/OOub8UcRNUaQokjh3A==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.5.6", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.5.6.tgz", - "integrity": "sha512-6YD942jsDm64wgGNew4Q1Yh8CRI4QKWTqjzCkvlZCGV6aOw5B663WDSnUEKIoN4egeLcvSiqYYGlKMfbkkfNMw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.5.6", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.5.6.tgz", - "integrity": "sha512-Jntdd/HQAgRSQFUpmXjiU00BG08Yl5G1pgYDBXG2mPfkndGGgapRT8JPsnzfQujh9nOdWMIQDnCGU+mB4NY2Dg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.5.6", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.5.6.tgz", - "integrity": "sha512-cdaAyAZJvYCx0u9uadUVe4VVJOEC6GeVO5uTGo/vybCsKFn2Z8WVjGVTeHbxdp7pH2II9MRTySIv1eCCq70SOQ==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.5.0.tgz", + "integrity": "sha512-c6LegFU1qdyMfk+GzNIOvrX61+mksm21Q01FBnXSy1nf1ACj/a86jmr3zkPl0zpNVHfPOw3Ry1QIuLQKD+67YA==", "cpu": [ "x64" ], @@ -3366,9 +2703,9 @@ } }, "node_modules/@swc/core-linux-x64-musl": { - "version": "1.5.6", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.5.6.tgz", - "integrity": "sha512-mGIs4d6/Hv/5EbP2d+2YNmIj9U5U/6CiPZsTyahQcEl+vJjNsmwDJoLex36LhxoGIUmVbbgk6cHj5DoHWNl0bQ==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.5.0.tgz", + "integrity": "sha512-I/V8aWBmfDWwjtM1bS8ASG+6PcO/pVFYyPP5g2ok46Vz1o1MnAUd18mHnWX43nqVJokaW+BD/G4ZMZ+gXRl4zQ==", "cpu": [ "x64" ], @@ -3381,54 +2718,6 @@ "node": ">=10" } }, - "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.5.6", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.5.6.tgz", - "integrity": "sha512-ViiS2pUXy/J9RZWJXQJMuDKid0lqH9fu2piFi3IHnMWyyWPla5qHYijkeODwrdBsjc30NAHjV6jfka5SZduqiw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.5.6", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.5.6.tgz", - "integrity": "sha512-Ju5z65Nda8oYjt2Z4CGbuBLxM+98TcewLogutI69rBo5S70xunadp4ANIHcr9fZlTu/IX9mxZmUpOaHtb+/TfA==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.5.6", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.5.6.tgz", - "integrity": "sha512-pkqJsdrgxyFYJA+g9a3zbl+AoxYoBtv+Rji1Fw4+Sq7CsSMWboayWNN5fKRiyi3u3nG8kxqyGi51PsKy2G4Vpg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=10" - } - }, "node_modules/@swc/counter": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", @@ -3516,11 +2805,11 @@ } }, "node_modules/@tanstack/react-virtual": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/@tanstack/react-virtual/-/react-virtual-3.5.0.tgz", - "integrity": "sha512-rtvo7KwuIvqK9zb0VZ5IL7fiJAEnG+0EiFZz8FUOs+2mhGqdGmjKIaT1XU7Zq0eFqL0jonLlhbayJI/J2SA/Bw==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@tanstack/react-virtual/-/react-virtual-3.4.0.tgz", + "integrity": "sha512-GZN4xn/Tg5w7gvYeVcMVCeL4pEyUhvg+Cp6KX2Z01C4FRNxIWMgIQ9ibgMarNQfo+gt0PVLcEER4A9sNv/jlow==", "dependencies": { - "@tanstack/virtual-core": "3.5.0" + "@tanstack/virtual-core": "3.4.0" }, "funding": { "type": "github", @@ -3532,18 +2821,18 @@ } }, "node_modules/@tanstack/virtual-core": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.5.0.tgz", - "integrity": "sha512-KnPRCkQTyqhanNC0K63GBG3wA8I+D1fQuVnAvcBF8f13akOKeQp1gSbu6f77zCxhEk727iV5oQnbHLYzHrECLg==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.4.0.tgz", + "integrity": "sha512-75jXqXxqq5M5Veb9KP1STi8kA5u408uOOAefk2ftHDGCpUk3RP6zX++QqfbmHJTBiU72NQ+ghgCZVts/Wocz8Q==", "funding": { "type": "github", "url": "https://github.com/sponsors/tannerlinsley" } }, "node_modules/@testing-library/dom": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.1.0.tgz", - "integrity": "sha512-wdsYKy5zupPyLCW2Je5DLHSxSfbIp6h80WoHOQc+RPtmPGA52O9x5MJEkv92Sjonpq+poOAtUKhh1kBGAXBrNA==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.0.0.tgz", + "integrity": "sha512-PmJPnogldqoVFf+EwbHvbBJ98MmqASV8kLrBYgsDNxQcFMeIS7JFL48sfyXvuMtgmWO/wMhh25odr+8VhDmn4g==", "dev": true, "peer": true, "dependencies": { @@ -4230,9 +3519,9 @@ } }, "node_modules/@types/lodash": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.1.tgz", - "integrity": "sha512-X+2qazGS3jxLAIz5JDXDzglAF3KpijdhFxlf/V1+hEsOUc+HnWi81L/uv/EvGuV90WY+7mPGFCUDGfQC3Gj95Q==", + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.0.tgz", + "integrity": "sha512-t7dhREVv6dbNj0q17X12j7yDG4bD/DHYX7o5/DbDxobP0HnGPgpRz2Ej77aL7TZT3DSw13fqUTj8J4mMnqa7WA==", "dev": true }, "node_modules/@types/mathjax": { @@ -4254,9 +3543,9 @@ "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==" }, "node_modules/@types/node": { - "version": "16.18.97", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.97.tgz", - "integrity": "sha512-4muilE1Lbfn57unR+/nT9AFjWk0MtWi5muwCEJqnOvfRQDbSfLCUdN7vCIg8TYuaANfhLOV85ve+FNpiUsbSRg==", + "version": "16.18.96", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.96.tgz", + "integrity": "sha512-84iSqGXoO+Ha16j8pRZ/L90vDMKX04QTYMTfYeE1WrjWaZXuchBehGUZEpNgx7JnmlrIHdnABmpjrQjhCnNldQ==", "devOptional": true }, "node_modules/@types/prop-types": { @@ -4265,9 +3554,9 @@ "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==" }, "node_modules/@types/react": { - "version": "18.3.2", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.2.tgz", - "integrity": "sha512-Btgg89dAnqD4vV7R3hlwOxgqobUQKgx3MmrQRi0yYbs/P0ym8XozIAlkqVilPqHQwXs4e9Tf63rrCgl58BcO4w==", + "version": "18.3.0", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.0.tgz", + "integrity": "sha512-DiUcKjzE6soLyln8NNZmyhcQjVv+WsUIFSqetMN0p8927OztKT4VTfFTqsbAi5oAGIcgOmOajlfBqyptDDjZRw==", "dependencies": { "@types/prop-types": "*", "csstype": "^3.0.2" @@ -4342,9 +3631,9 @@ "optional": true }, "node_modules/ace-builds": { - "version": "1.33.2", - "resolved": "https://registry.npmjs.org/ace-builds/-/ace-builds-1.33.2.tgz", - "integrity": "sha512-uDqCe+XDIdnADaDrA8o+x+qAfbM6uqyDQ43QcE6qC7zBPTvQSMOSPcXW+HvjZhEc2YbVYSaxXJX1qQKPgYqi5w==" + "version": "1.33.1", + "resolved": "https://registry.npmjs.org/ace-builds/-/ace-builds-1.33.1.tgz", + "integrity": "sha512-pj5mcXV1n3s86UI4SWUt8X0ltN8cTaYcvF76cSmvy5i2ZDtXX9KkjVcYTGkCV7ox6VUrzqHByeqH0xRsMjXi4g==" }, "node_modules/acorn": { "version": "8.11.3", @@ -4384,16 +3673,16 @@ } }, "node_modules/ag-grid-community": { - "version": "31.3.1", - "resolved": "https://registry.npmjs.org/ag-grid-community/-/ag-grid-community-31.3.1.tgz", - "integrity": "sha512-kKnNxY8UaVoF0aUSdtzK7oGr48Wj+VrdDY5l2p9+HdF0cAo/jBEasuUYR85QbkumNyilI6UbFpO6IyCrjNQ6Iw==" + "version": "31.2.1", + "resolved": "https://registry.npmjs.org/ag-grid-community/-/ag-grid-community-31.2.1.tgz", + "integrity": "sha512-D+gnUQ4dHZ/EQJmupQnDqcEKiCEeuK5ZxlsIpdPKgHg/23dmW+aEdivtB9nLpSc2IEK0RUpchcSxeUT37Boo5A==" }, "node_modules/ag-grid-react": { - "version": "31.3.1", - "resolved": "https://registry.npmjs.org/ag-grid-react/-/ag-grid-react-31.3.1.tgz", - "integrity": "sha512-MP5PhFeRhe1gWNx866Sr1C+IrJcrJ0yj8pM/ls+Be/GNmSyIcmGb0Gwbl19bOSdfL5btTkNmGY/RbwnIO4GoMQ==", + "version": "31.2.1", + "resolved": "https://registry.npmjs.org/ag-grid-react/-/ag-grid-react-31.2.1.tgz", + "integrity": "sha512-9UH3xxXRwZfW97oz58KboyCJl4t+zdetopieeHVcttsXX1DvGFDUIEz7A1sQaG8e1DAXLMf3IxoIPrfWheH4XA==", "dependencies": { - "ag-grid-community": "31.3.1", + "ag-grid-community": "31.2.1", "prop-types": "^15.8.1" }, "peerDependencies": { @@ -4709,11 +3998,26 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/bin-version-check/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "node_modules/bin-version-check/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/bin-version-check/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, "bin": { "semver": "bin/semver.js" }, @@ -4721,6 +4025,12 @@ "node": ">=10" } }, + "node_modules/bin-version-check/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/bin-version/node_modules/execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", @@ -4963,9 +4273,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001618", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001618.tgz", - "integrity": "sha512-p407+D1tIkDvsEAPS22lJxLQQaG8OTBEqo0KhzfABGk0TU4juBNDSfH0hyAp/HRyx+M8L17z/ltyhxh27FTfQg==", + "version": "1.0.30001612", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001612.tgz", + "integrity": "sha512-lFgnZ07UhaCcsSZgWW0K5j4e69dK1u/ltrL9lTUiFOwNHs12S3UMIEYgBV0Z6C6hRDev7iRnMzzYmKabYdXF9g==", "funding": [ { "type": "opencollective", @@ -5465,9 +4775,9 @@ } }, "node_modules/daisyui": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/daisyui/-/daisyui-4.11.1.tgz", - "integrity": "sha512-obT9CUbQdW6eoHwSeT5VwaRrWlwrM4OT5qlfdJ0oQlSIEYhwnEl2+L2fwu5PioLbitwuMdYC2X8I1cyy8Pf6LQ==", + "version": "4.10.2", + "resolved": "https://registry.npmjs.org/daisyui/-/daisyui-4.10.2.tgz", + "integrity": "sha512-eCWS1W/JPyxW9IvlgW5m0R6rp9ZhRsBTW37rvEUthckkjsV04u8XipV519OoccSA46ixhSJa3q7XLI1WUFtRCA==", "dev": true, "dependencies": { "css-selector-tokenizer": "^0.8", @@ -5787,9 +5097,9 @@ } }, "node_modules/dompurify": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.1.3.tgz", - "integrity": "sha512-5sOWYSNPaxz6o2MUPvtyxTTqR4D3L77pr5rUQoWgD5ROQtVIZQgJkXbo1DLlK3vj11YGw5+LnF4SYti4gZmwng==" + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.1.1.tgz", + "integrity": "sha512-tVP8C/GJwnABOn/7cx/ymx/hXpmBfWIPihC1aOEvS8GbMqy3pgeYtJk1HXN3CO7tu+8bpY18f6isjR5Cymj0TQ==" }, "node_modules/dot-case": { "version": "3.0.4", @@ -5817,9 +5127,9 @@ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" }, "node_modules/electron-to-chromium": { - "version": "1.4.767", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.767.tgz", - "integrity": "sha512-nzzHfmQqBss7CE3apQHkHjXW77+8w3ubGCIoEijKCJebPufREaFETgGXWTkh32t259F3Kcq+R8MZdFdOJROgYw==" + "version": "1.4.750", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.750.tgz", + "integrity": "sha512-9ItEpeu15hW5m8jKdriL+BQrgwDTXEL9pn4SkillWFu73ZNNNQ2BKKLS+ZHv2vC9UkNhosAeyfxOf/5OSeTCPA==" }, "node_modules/emoji-regex": { "version": "8.0.0", @@ -6779,9 +6089,9 @@ } }, "node_modules/framer-motion": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-11.2.0.tgz", - "integrity": "sha512-LRfLVPEwtO9IXJCAsWvtj3XZxrdZDcTxNNkZEq30aQ8p7/wimfUkDy67TDWdtzPiyKDkqOHDhaQC6XVrQ4Fh7A==", + "version": "11.1.7", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-11.1.7.tgz", + "integrity": "sha512-cW11Pu53eDAXUEhv5hEiWuIXWhfkbV32PlgVISn7jRdcAiVrJ1S03YQQ0/DzoswGYYwKi4qYmHHjCzAH52eSdQ==", "dependencies": { "tslib": "^2.4.0" }, @@ -6851,19 +6161,6 @@ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "devOptional": true }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -8722,14 +8019,14 @@ } }, "node_modules/merge-refs": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/merge-refs/-/merge-refs-1.3.0.tgz", - "integrity": "sha512-nqXPXbso+1dcKDpPCXvwZyJILz+vSLqGGOnDrYHQYE+B8n9JTCekVLC65AfCpR4ggVyA/45Y0iR9LDyS2iI+zA==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/merge-refs/-/merge-refs-1.2.2.tgz", + "integrity": "sha512-RwcT7GsQR3KbuLw1rRuodq4Nt547BKEBkliZ0qqsrpyNne9bGTFtsFIsIpx82huWhcl3kOlOlH4H0xkPk/DqVw==", "funding": { "url": "https://github.com/wojtekmaj/merge-refs?sponsor=1" }, "peerDependencies": { - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0" }, "peerDependenciesMeta": { "@types/react": { @@ -9659,9 +8956,9 @@ } }, "node_modules/nwsapi": { - "version": "2.2.10", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.10.tgz", - "integrity": "sha512-QK0sRs7MKv0tKe1+5uZIQk/C8XGza4DAnztJG8iD+TpJIORARrCxczA738awHrZoHeTjSSoHqao2teO0dC/gFQ==" + "version": "2.2.9", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.9.tgz", + "integrity": "sha512-2f3F0SEEer8bBu0dsNCFF50N0cTThV1nWFYcEYFZttdW0lDAoybv9cQoK7X7/68Z89S7FoRrVjP1LPX4XRf9vg==" }, "node_modules/object-assign": { "version": "4.1.1", @@ -9763,17 +9060,17 @@ } }, "node_modules/optionator": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", - "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dev": true, "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.5" + "type-check": "^0.4.0" }, "engines": { "node": ">= 0.8.0" @@ -10010,24 +9307,24 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, "node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.2.tgz", + "integrity": "sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==", "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { - "node": ">=16 || 14 >=14.18" + "node": ">=16 || 14 >=14.17" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", - "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.1.tgz", + "integrity": "sha512-tS24spDe/zXhWbNPErCHs/AGOzbKGHT+ybSBqmdLm8WZ1xXLWvH8Qn71QPAlqVhd0qUTWjy+Kl9JmISgDdEjsA==", "engines": { "node": "14 || >=16.14" } @@ -10075,9 +9372,9 @@ } }, "node_modules/picocolors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", - "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" }, "node_modules/picomatch": { "version": "2.3.1", @@ -10810,10 +10107,25 @@ "react": ">=16.13.1" } }, + "node_modules/react-hook-form": { + "version": "7.51.4", + "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.51.4.tgz", + "integrity": "sha512-V14i8SEkh+V1gs6YtD0hdHYnoL4tp/HX/A45wWQN15CYr9bFRmmRdYStSO5L65lCCZRF+kYiSKhm9alqbcdiVA==", + "engines": { + "node": ">=12.22.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/react-hook-form" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17 || ^18" + } + }, "node_modules/react-icons": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.2.1.tgz", - "integrity": "sha512-zdbW5GstTzXaVKvGSyTaBalt7HSfuK5ovrzlpyiWHAFXndXTdd/1hdDHI4xBM1Mn7YriT6aqESucFl9kEXzrdw==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.1.0.tgz", + "integrity": "sha512-D3zug1270S4hbSlIRJ0CUS97QE1yNNKDjzQe3HqY0aefp2CBn9VgzgES27sRR2gOvFK+0CNx/BW0ggOESp6fqQ==", "peerDependencies": { "react": "*" } @@ -10872,9 +10184,9 @@ "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==" }, "node_modules/react-pdf": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/react-pdf/-/react-pdf-7.7.3.tgz", - "integrity": "sha512-a2VfDl8hiGjugpqezBTUzJHYLNB7IS7a2t7GD52xMI9xHg8LdVaTMsnM9ZlNmKadnStT/tvX5IfV0yLn+JvYmw==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/react-pdf/-/react-pdf-7.7.1.tgz", + "integrity": "sha512-cbbf/PuRtGcPPw+HLhMI1f6NSka8OJgg+j/yPWTe95Owf0fK6gmVY7OXpTxMeh92O3T3K3EzfE0ML0eXPGwR5g==", "dependencies": { "clsx": "^2.0.0", "dequal": "^2.0.3", @@ -10969,11 +10281,11 @@ } }, "node_modules/react-router": { - "version": "6.23.1", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.23.1.tgz", - "integrity": "sha512-fzcOaRF69uvqbbM7OhvQyBTFDVrrGlsFdS3AL+1KfIBtGETibHzi3FkoTRyiDJnWNc2VxrfvR+657ROHjaNjqQ==", + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.23.0.tgz", + "integrity": "sha512-wPMZ8S2TuPadH0sF5irFGjkNLIcRvOSaEe7v+JER8508dyJumm6XZB1u5kztlX0RVq6AzRVndzqcUh6sFIauzA==", "dependencies": { - "@remix-run/router": "1.16.1" + "@remix-run/router": "1.16.0" }, "engines": { "node": ">=14.0.0" @@ -10983,12 +10295,12 @@ } }, "node_modules/react-router-dom": { - "version": "6.23.1", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.23.1.tgz", - "integrity": "sha512-utP+K+aSTtEdbWpC+4gxhdlPFwuEfDKq8ZrPFU65bbRJY+l706qjR7yaidBpo3MSeA/fzwbXWbKBI6ftOnP3OQ==", + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.23.0.tgz", + "integrity": "sha512-Q9YaSYvubwgbal2c9DJKfx6hTNoBp3iJDsl+Duva/DwxoJH+OTXkxGpql4iUK2sla/8z4RpjAm6EWx1qUDuopQ==", "dependencies": { - "@remix-run/router": "1.16.1", - "react-router": "6.23.1" + "@remix-run/router": "1.16.0", + "react-router": "6.23.0" }, "engines": { "node": ">=14.0.0" @@ -11044,16 +10356,16 @@ } }, "node_modules/reactflow": { - "version": "11.11.3", - "resolved": "https://registry.npmjs.org/reactflow/-/reactflow-11.11.3.tgz", - "integrity": "sha512-wusd1Xpn1wgsSEv7UIa4NNraCwH9syBtubBy4xVNXg3b+CDKM+sFaF3hnMx0tr0et4km9urIDdNvwm34QiZong==", + "version": "11.11.2", + "resolved": "https://registry.npmjs.org/reactflow/-/reactflow-11.11.2.tgz", + "integrity": "sha512-o1fT3stSdhzW+SedCGNSmEvZvULZygZIMLyW67NcWNZrgwx1wuJfzLg5fuQ0Nzf389wItumZX/zP3zdaPX7lEw==", "dependencies": { - "@reactflow/background": "11.3.13", - "@reactflow/controls": "11.2.13", - "@reactflow/core": "11.11.3", - "@reactflow/minimap": "11.7.13", - "@reactflow/node-resizer": "2.2.13", - "@reactflow/node-toolbar": "1.3.13" + "@reactflow/background": "11.3.12", + "@reactflow/controls": "11.2.12", + "@reactflow/core": "11.11.2", + "@reactflow/minimap": "11.7.12", + "@reactflow/node-resizer": "2.2.12", + "@reactflow/node-toolbar": "1.3.12" }, "peerDependencies": { "react": ">=17", @@ -11473,11 +10785,26 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semver-truncate/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "node_modules/semver-truncate/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver-truncate/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, "bin": { "semver": "bin/semver.js" }, @@ -11485,6 +10812,12 @@ "node": ">=10" } }, + "node_modules/semver-truncate/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", @@ -12130,30 +11463,30 @@ } }, "node_modules/sucrase/node_modules/glob": { - "version": "10.3.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.15.tgz", - "integrity": "sha512-0c6RlJt1TICLyvJYIApxb8GsXoai0KUP7AxKKAtsYXdgJR1mGEUa7DgwShbdk1nly0PYoZj01xd4hzbq3fsjpw==", + "version": "10.3.12", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz", + "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==", "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^2.3.6", "minimatch": "^9.0.1", "minipass": "^7.0.4", - "path-scurry": "^1.11.0" + "path-scurry": "^1.10.2" }, "bin": { "glob": "dist/esm/bin.mjs" }, "engines": { - "node": ">=16 || 14 >=14.18" + "node": ">=16 || 14 >=14.17" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/sucrase/node_modules/minipass": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.1.tgz", - "integrity": "sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", "engines": { "node": ">=16 || 14 >=14.17" } @@ -12359,9 +11692,9 @@ } }, "node_modules/tough-cookie": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", - "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", + "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", "dependencies": { "psl": "^1.1.33", "punycode": "^2.1.1", @@ -12520,9 +11853,9 @@ } }, "node_modules/undici": { - "version": "6.16.1", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.16.1.tgz", - "integrity": "sha512-NeNiTT7ixpeiL1qOIU/xTVpHpVP0svmI6PwoCKaMGaI5AsHOaRdwqU/f7Fi9eyU4u03nd5U/BC8wmRMnS9nqoA==", + "version": "6.14.1", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.14.1.tgz", + "integrity": "sha512-mAel3i4BsYhkeVPXeIPXVGPJKeBzqCieZYoFsbWfUzd68JmHByhc1Plit5WlylxXFaGpgkZB8mExlxnt+Q1p7A==", "engines": { "node": ">=18.17" } @@ -12673,9 +12006,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", - "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", "funding": [ { "type": "opencollective", @@ -12691,8 +12024,8 @@ } ], "dependencies": { - "escalade": "^3.1.2", - "picocolors": "^1.0.1" + "escalade": "^3.1.1", + "picocolors": "^1.0.0" }, "bin": { "update-browserslist-db": "cli.js" @@ -12897,231 +12230,6 @@ "vite": "^2.6.0 || 3 || 4" } }, - "node_modules/vite/node_modules/@esbuild/android-arm": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", - "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/android-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", - "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/android-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", - "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/darwin-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", - "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/darwin-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", - "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/freebsd-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", - "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/freebsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", - "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-arm": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", - "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", - "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-ia32": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", - "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-loong64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", - "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", - "cpu": [ - "loong64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-mips64el": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", - "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", - "cpu": [ - "mips64el" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-ppc64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", - "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", - "cpu": [ - "ppc64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-riscv64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", - "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", - "cpu": [ - "riscv64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-s390x": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", - "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", - "cpu": [ - "s390x" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, "node_modules/vite/node_modules/@esbuild/linux-x64": { "version": "0.18.20", "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", @@ -13137,96 +12245,6 @@ "node": ">=12" } }, - "node_modules/vite/node_modules/@esbuild/netbsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", - "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/openbsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", - "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/sunos-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", - "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/win32-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", - "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/win32-ia32": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", - "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/win32-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", - "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, "node_modules/vite/node_modules/esbuild": { "version": "0.18.20", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", @@ -13452,15 +12470,6 @@ "string-width": "^1.0.2 || 2 || 3 || 4" } }, - "node_modules/word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/wrap-ansi": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", @@ -13588,9 +12597,9 @@ "devOptional": true }, "node_modules/ws": { - "version": "8.17.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.0.tgz", - "integrity": "sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", + "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", "engines": { "node": ">=10.0.0" }, @@ -13642,9 +12651,9 @@ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" }, "node_modules/yaml": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.2.tgz", - "integrity": "sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.1.tgz", + "integrity": "sha512-pIXzoImaqmfOrL7teGUBt/T7ZDnyeGBWyXQBvOVhLkWLN37GXv8NMLK406UY6dS51JfcQHsmcW5cJ441bHg6Lg==", "bin": { "yaml": "bin.mjs" }, @@ -13665,9 +12674,9 @@ } }, "node_modules/zod": { - "version": "3.23.8", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz", - "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==", + "version": "3.23.7", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.7.tgz", + "integrity": "sha512-NBeIoqbtOiUMomACV/y+V3Qfs9+Okr18vR5c/5pHClPpufWOrsx8TENboDPe265lFdfewX2yBtNTLPvnmCxwog==", "funding": { "url": "https://github.com/sponsors/colinhacks" } diff --git a/src/frontend/package.json b/src/frontend/package.json index d755b70b9..7950f2cf6 100644 --- a/src/frontend/package.json +++ b/src/frontend/package.json @@ -4,6 +4,7 @@ "private": true, "dependencies": { "@headlessui/react": "^1.7.17", + "@hookform/resolvers": "^3.3.4", "@million/lint": "^0.0.73", "@radix-ui/react-accordion": "^1.1.2", "@radix-ui/react-checkbox": "^1.0.4", @@ -50,6 +51,7 @@ "react-cookie": "^4.1.1", "react-dom": "^18.2.21", "react-error-boundary": "^4.0.11", + "react-hook-form": "^7.51.4", "react-icons": "^5.0.1", "react-laag": "^2.0.5", "react-markdown": "^8.0.7", @@ -68,6 +70,7 @@ "uuid": "^9.0.0", "vite-plugin-svgr": "^3.2.0", "web-vitals": "^2.1.4", + "zod": "^3.23.7", "zustand": "^4.4.7" }, "scripts": { @@ -101,7 +104,7 @@ }, "proxy": "http://127.0.0.1:7860", "devDependencies": { - "@playwright/test": "^1.43.1", + "@playwright/test": "^1.44.0", "@swc/cli": "^0.1.62", "@swc/core": "^1.3.80", "@tailwindcss/typography": "^0.5.9", diff --git a/src/frontend/src/App.css b/src/frontend/src/App.css index 22a596730..a4ff01961 100644 --- a/src/frontend/src/App.css +++ b/src/frontend/src/App.css @@ -11,6 +11,13 @@ body { text-align: center; } +.label { + user-select: none; + -webkit-user-select: none; /* Safari */ + -moz-user-select: none; /* Firefox */ + -ms-user-select: none; +} + .react-flow__node { width: auto; height: auto; @@ -76,6 +83,25 @@ body { height: 8px !important; border-radius: 10px; } +*::-webkit-scrollbar { + width: 8px !important; + height: 8px !important; + border-radius: 10px; +} + +::-webkit-scrollbar-track { + background-color: #f1f1f1 !important; + border-radius: 10px; +} + +::-webkit-scrollbar-thumb { + background-color: #ccc !important; + border-radius: 999px !important; +} + +::-webkit-scrollbar-thumb:hover { + background-color: #bbb !important; +} .jv-indent::-webkit-scrollbar-track { background-color: #f1f1f1 !important; @@ -111,3 +137,30 @@ body { .json-view-flow .json-view { background-color: #bbb !important; } + +.ag-body-horizontal-scroll-viewport, +.ag-body-vertical-scroll-viewport { + cursor: auto; +} + +.ag-body-horizontal-scroll-viewport::-webkit-scrollbar, +.ag-body-vertical-scroll-viewport::-webkit-scrollbar { + width: 8px; + height: 8px; +} + +.ag-body-horizontal-scroll-viewport::-webkit-scrollbar-track, +.ag-body-vertical-scroll-viewport::-webkit-scrollbar-track { + background-color: #f1f1f1; +} + +.ag-body-horizontal-scroll-viewport::-webkit-scrollbar-thumb, +.ag-body-vertical-scroll-viewport::-webkit-scrollbar-thumb { + background-color: #ccc; + border-radius: 999px; +} + +.ag-body-horizontal-scroll-viewport::-webkit-scrollbar-thumb:hover, +.ag-body-vertical-scroll-viewport::-webkit-scrollbar-thumb:hover { + background-color: #bbb; +} diff --git a/src/frontend/src/App.tsx b/src/frontend/src/App.tsx index 2d8fc3caa..0bb14af1e 100644 --- a/src/frontend/src/App.tsx +++ b/src/frontend/src/App.tsx @@ -19,6 +19,7 @@ import Router from "./routes"; import useAlertStore from "./stores/alertStore"; import { useDarkStore } from "./stores/darkStore"; import useFlowsManagerStore from "./stores/flowsManagerStore"; +import { useFolderStore } from "./stores/foldersStore"; import { useGlobalVariablesStore } from "./stores/globalVariables"; import { useStoreStore } from "./stores/storeStore"; import { useTypesStore } from "./stores/typesStore"; @@ -47,13 +48,13 @@ export default function App() { const setGlobalVariables = useGlobalVariablesStore( (state) => state.setGlobalVariables ); - const setUnavailableFields = useGlobalVariablesStore( - (state) => state.setUnavaliableFields - ); const checkHasStore = useStoreStore((state) => state.checkHasStore); const navigate = useNavigate(); const dark = useDarkStore((state) => state.dark); + const getFoldersApi = useFolderStore((state) => state.getFoldersApi); + const loadingFolders = useFolderStore((state) => state.loading); + const [isLoadingHealth, setIsLoadingHealth] = useState(false); useEffect(() => { @@ -76,7 +77,7 @@ export default function App() { setUserData(user); setAutoLogin(true); setLoading(false); - await Promise.all([refreshStars(), refreshVersion(), fetchData()]); + fetchAllData(); } }) .catch(async (error) => { @@ -84,7 +85,7 @@ export default function App() { setAutoLogin(false); if (isAuthenticated && !isLoginPage) { getUser(); - await Promise.all([refreshStars(), refreshVersion(), fetchData()]); + fetchAllData(); } else { setLoading(false); useFlowsManagerStore.setState({ isLoading: false }); @@ -92,14 +93,21 @@ export default function App() { } }); - /* - Abort the request as it isn't needed anymore, the component being + /* + Abort the request as it isn't needed anymore, the component being unmounted. It helps avoid, among other things, the well-known "can't perform a React state update on an unmounted component" warning. */ return () => abortController.abort(); }, []); + const fetchAllData = async () => { + setTimeout(async () => { + await Promise.all([refreshStars(), refreshVersion(), fetchData()]); + getFoldersApi(); + }, 1000); + }; + const fetchData = async () => { return new Promise(async (resolve, reject) => { if (isAuthenticated) { @@ -157,7 +165,7 @@ export default function App() { setFetchError(false); //This condition is necessary to avoid infinite loop on starter page when the application is not healthy if (isLoading === true && window.location.pathname === "/") { - navigate("/flows"); + navigate("/all"); window.location.reload(); } }; @@ -184,7 +192,7 @@ export default function App() { > } - {isLoading ? ( + {isLoading || loadingFolders ? (
diff --git a/src/frontend/src/components/accordionComponent/composite/folderAccordionComponent/index.tsx b/src/frontend/src/components/accordionComponent/composite/folderAccordionComponent/index.tsx new file mode 100644 index 000000000..d4fb95b5c --- /dev/null +++ b/src/frontend/src/components/accordionComponent/composite/folderAccordionComponent/index.tsx @@ -0,0 +1,72 @@ +import { useState } from "react"; +import IconComponent from "../../../../components/genericIconComponent"; +import { AccordionComponentType } from "../../../../types/components"; +import { + Accordion, + AccordionContent, + AccordionItem, + AccordionTrigger, +} from "../../../ui/custom-accordion"; + +export default function FolderAccordionComponent({ + trigger, + open = [], + keyValue, + options, +}: AccordionComponentType): JSX.Element { + const [value, setValue] = useState( + open.length === 0 ? "" : getOpenAccordion(), + ); + + function getOpenAccordion(): string { + let value = ""; + open.forEach((el) => { + if (el == trigger) { + value = trigger; + } + }); + + return value; + } + + function handleClick(): void { + value === "" ? setValue(keyValue!) : setValue(""); + } + + return ( + <> + + + { + handleClick(); + }} + className="px-2" + > + {trigger} + + + {options!.map((option, index) => ( +
+
+ ))} +
+
+
+ + ); +} diff --git a/src/frontend/src/components/addNewVariableButtonComponent/addNewVariableButton.tsx b/src/frontend/src/components/addNewVariableButtonComponent/addNewVariableButton.tsx index 25a45bd28..f54997e19 100644 --- a/src/frontend/src/components/addNewVariableButtonComponent/addNewVariableButton.tsx +++ b/src/frontend/src/components/addNewVariableButtonComponent/addNewVariableButton.tsx @@ -130,8 +130,8 @@ export default function AddNewVariableButton({ children }): JSX.Element { setFields(value)} selectedOptions={fields} - password={false} options={availableFields()} + password={false} placeholder="Choose a field for the variable..." id={"apply-to-fields"} > diff --git a/src/frontend/src/components/arrayReaderComponent/index.tsx b/src/frontend/src/components/arrayReaderComponent/index.tsx new file mode 100644 index 000000000..bcbfde010 --- /dev/null +++ b/src/frontend/src/components/arrayReaderComponent/index.tsx @@ -0,0 +1,12 @@ +export default function ArrayReader({ array }: { array: any[] }): JSX.Element { + //TODO check array type + return ( +
+
    + {array.map((item, index) => ( +
  • {item}
  • + ))} +
+
+ ); +} diff --git a/src/frontend/src/components/cardComponent/components/dragCardComponent/index.tsx b/src/frontend/src/components/cardComponent/components/dragCardComponent/index.tsx new file mode 100644 index 000000000..e4425c61c --- /dev/null +++ b/src/frontend/src/components/cardComponent/components/dragCardComponent/index.tsx @@ -0,0 +1,39 @@ +import { storeComponent } from "../../../../types/store"; +import { cn } from "../../../../utils/utils"; +import ForwardedIconComponent from "../../../genericIconComponent"; +import ShadTooltip from "../../../shadTooltipComponent"; +import { Card, CardHeader, CardTitle } from "../../../ui/card"; + +export default function DragCardComponent({ data }: { data: storeComponent }) { + return ( + <> + +
+ +
+ + + +
{data.name}
+
+
+
+
+
+ + ); +} diff --git a/src/frontend/src/components/cardComponent/index.tsx b/src/frontend/src/components/cardComponent/index.tsx index d2ae3b405..d113a9b42 100644 --- a/src/frontend/src/components/cardComponent/index.tsx +++ b/src/frontend/src/components/cardComponent/index.tsx @@ -1,4 +1,6 @@ import { useEffect, useState } from "react"; +import { createRoot } from "react-dom/client"; +import { Control } from "react-hook-form"; import { getComponent, postLikeComponent } from "../../controllers/API"; import IOModal from "../../modals/IOModal"; import DeleteConfirmationModal from "../../modals/deleteConfirmationModal"; @@ -22,7 +24,10 @@ import { CardHeader, CardTitle, } from "../ui/card"; +import { Checkbox } from "../ui/checkbox"; +import { FormControl, FormField } from "../ui/form"; import Loading from "../ui/loading"; +import DragCardComponent from "./components/dragCardComponent"; export default function CollectionCardComponent({ data, @@ -32,6 +37,8 @@ export default function CollectionCardComponent({ onClick, onDelete, playground, + control, + is_component, }: { data: storeComponent; authorized?: boolean; @@ -40,6 +47,8 @@ export default function CollectionCardComponent({ button?: JSX.Element; playground?: boolean; onDelete?: () => void; + control?: Control; + is_component?: boolean; }) { const addFlow = useFlowsManagerStore((state) => state.addFlow); const setSuccessData = useAlertStore((state) => state.setSuccessData); @@ -69,6 +78,10 @@ export default function CollectionCardComponent({ ); const [loadingPlayground, setLoadingPlayground] = useState(false); + const selectedFlowsComponentsCards = useFlowsManagerStore( + (state) => state.selectedFlowsComponentsCards + ); + const name = data.is_component ? "Component" : "Flow"; async function getFlowData() { @@ -82,7 +95,6 @@ export default function CollectionCardComponent({ return false; } const { inputs, outputs } = getInputsAndOutputs(flow?.data?.nodes ?? []); - console.log(inputs, outputs); return inputs.length > 0 || outputs.length > 0; } @@ -177,36 +189,59 @@ export default function CollectionCardComponent({ } } + const isSelectedCard = + selectedFlowsComponentsCards?.includes(data?.id) ?? false; + + function onDragStart(event: React.DragEvent) { + let image: JSX.Element = ; // <== whatever you want here + + var ghost = document.createElement("div"); + ghost.style.transform = "translate(-10000px, -10000px)"; + ghost.style.position = "absolute"; + document.body.appendChild(ghost); + event.dataTransfer.setDragImage(ghost, 0, 0); + const root = createRoot(ghost); + root.render(image); + const flow = getFlowById(data.id); + if (flow) { + event.dataTransfer.setData("flow", JSON.stringify(data)); + } + } + return ( <>
- + + -
{data.name}
+
{data.name}
{data?.metadata !== undefined && ( -
+
{data.private && ( @@ -249,19 +284,29 @@ export default function CollectionCardComponent({
)} - {onDelete && data?.metadata === undefined && ( - +
)}
@@ -368,11 +413,7 @@ export default function CollectionCardComponent({ authorized ? "Delete" : "Please review your API key." } > - { - onDelete(); - }} - > +
- {/* - - */} + {hasStore && ( + + +
+ <> + {folders.map((item, index) => ( +
onDrop(e, item.id!)} + key={item.id} + data-testid={`sidebar-nav-${item.name}`} + className={cn( + buttonVariants({ variant: "ghost" }), + checkPathName(item.id!) + ? "border border-border bg-muted hover:bg-muted" + : "border hover:bg-transparent lg:border-transparent lg:hover:border-border", + "group flex w-full shrink-0 cursor-pointer gap-2 opacity-100 lg:min-w-full", + )} + onClick={() => handleChangeFolder!(item.id!)} + > +
+ + + {item.name} + +
+ {index > 0 && ( + + )} + {index > 0 && ( + + )} + +
+
+ ))} + +
+ + ); +}; +export default SideBarFoldersButtonsComponent; diff --git a/src/frontend/src/components/sidebarComponent/hooks/use-on-file-drop.tsx b/src/frontend/src/components/sidebarComponent/hooks/use-on-file-drop.tsx new file mode 100644 index 000000000..556ed3f2c --- /dev/null +++ b/src/frontend/src/components/sidebarComponent/hooks/use-on-file-drop.tsx @@ -0,0 +1,134 @@ +import { + UPLOAD_ALERT_LIST, + WRONG_FILE_ERROR_ALERT, +} from "../../../constants/alerts_constants"; +import { updateFlowInDatabase } from "../../../controllers/API"; +import { uploadFlowsFromFolders } from "../../../pages/MainPage/services"; +import useAlertStore from "../../../stores/alertStore"; +import useFlowsManagerStore from "../../../stores/flowsManagerStore"; +import { useFolderStore } from "../../../stores/foldersStore"; +import { FlowType } from "../../../types/flow"; + +const useFileDrop = (folderId, folderChangeCallback) => { + const setFolderDragging = useFolderStore((state) => state.setFolderDragging); + const setErrorData = useAlertStore((state) => state.setErrorData); + const getFoldersApi = useFolderStore((state) => state.getFoldersApi); + const refreshFlows = useFlowsManagerStore((state) => state.refreshFlows); + const flows = useFlowsManagerStore((state) => state.flows); + + const triggerFolderChange = (folderId) => { + if (folderChangeCallback) { + folderChangeCallback(folderId); + } + }; + const handleFileDrop = async (e) => { + if (e.dataTransfer.types.some((type) => type === "Files")) { + if (e.dataTransfer.files && e.dataTransfer.files.length > 0) { + const firstFile = e.dataTransfer.files[0]; + if (firstFile.type === "application/json") { + uploadFormData(firstFile); + } else { + setErrorData({ + title: WRONG_FILE_ERROR_ALERT, + list: [UPLOAD_ALERT_LIST], + }); + } + } + } + }; + + const dragOver = ( + e: + | React.DragEvent + | React.DragEvent + | React.DragEvent + ) => { + e.preventDefault(); + + if (e.dataTransfer.types.some((types) => types === "Files")) { + setFolderDragging(true); + } + }; + + const dragEnter = ( + e: + | React.DragEvent + | React.DragEvent + | React.DragEvent + ) => { + if (e.dataTransfer.types.some((types) => types === "Files")) { + setFolderDragging(true); + } + e.preventDefault(); + }; + + const dragLeave = ( + e: + | React.DragEvent + | React.DragEvent + | React.DragEvent + ) => { + e.preventDefault(); + if (e.target === e.currentTarget) { + setFolderDragging(false); + } + }; + + const onDrop = ( + e: + | React.DragEvent + | React.DragEvent + | React.DragEvent, + folderId: string + ) => { + if (e?.dataTransfer?.getData("flow")) { + const data = JSON.parse(e?.dataTransfer?.getData("flow")); + + if (data) { + uploadFromDragCard(data.id, folderId); + return; + } + } + + e.preventDefault(); + handleFileDrop(e); + setFolderDragging(false); + }; + + const uploadFromDragCard = (flowId, folderId) => { + const selectedFlow = flows.find((flow) => flow.id === flowId); + + if (!selectedFlow) { + throw new Error("Flow not found"); + } + + const updatedFlow: FlowType = { + ...selectedFlow, + folder_id: folderId, + }; + updateFlowInDatabase(updatedFlow).then(() => { + getFoldersApi(true); + triggerFolderChange(folderId); + }); + }; + + const uploadFormData = (data) => { + const formData = new FormData(); + formData.append("file", data); + + uploadFlowsFromFolders(formData).then(() => { + getFoldersApi(true); + triggerFolderChange(folderId); + refreshFlows(); + }); + }; + + return { + dragOver, + dragEnter, + dragLeave, + onDrop, + }; +}; + +export default useFileDrop; diff --git a/src/frontend/src/components/sidebarComponent/index.tsx b/src/frontend/src/components/sidebarComponent/index.tsx index edeaee51e..63fec9661 100644 --- a/src/frontend/src/components/sidebarComponent/index.tsx +++ b/src/frontend/src/components/sidebarComponent/index.tsx @@ -1,48 +1,61 @@ -import { Link, useLocation } from "react-router-dom"; +import { useLocation } from "react-router-dom"; +import { FolderType } from "../../pages/MainPage/entities"; +import { useFolderStore } from "../../stores/foldersStore"; import { cn } from "../../utils/utils"; -import { buttonVariants } from "../ui/button"; +import HorizontalScrollFadeComponent from "../horizontalScrollFadeComponent"; +import SideBarButtonsComponent from "./components/sideBarButtons"; +import SideBarFoldersButtonsComponent from "./components/sideBarFolderButtons"; -interface SidebarNavProps extends React.HTMLAttributes { +type SidebarNavProps = { items: { - href: string; + href?: string; title: string; icon: React.ReactNode; }[]; -} + handleOpenNewFolderModal?: () => void; + handleChangeFolder?: (id: string) => void; + handleEditFolder?: (item: FolderType) => void; + handleDeleteFolder?: (item: FolderType) => void; + className?: string; +}; export default function SidebarNav({ className, items, + handleOpenNewFolderModal, + handleChangeFolder, + handleEditFolder, + handleDeleteFolder, ...props }: SidebarNavProps) { const location = useLocation(); const pathname = location.pathname; + const loadingFolders = useFolderStore((state) => state.loading); + const folders = useFolderStore((state) => state.folders); + + const pathValues = ["folder", "components", "flows", "all"]; + const isFolderPath = pathValues.some((value) => pathname.includes(value)); return ( -