langflow-base-nightly 0.5.1.dev3__py3-none-any.whl → 0.5.1.dev5__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- langflow/__init__.py +215 -0
- langflow/__main__.py +16 -2
- langflow/alembic/versions/006b3990db50_add_unique_constraints.py +4 -7
- langflow/alembic/versions/012fb73ac359_add_folder_table.py +4 -5
- langflow/alembic/versions/0ae3a2674f32_update_the_columns_that_need_to_change_.py +11 -20
- langflow/alembic/versions/0b8757876a7c_.py +4 -7
- langflow/alembic/versions/0d60fcbd4e8e_create_vertex_builds_table.py +4 -6
- langflow/alembic/versions/1a110b568907_replace_credential_table_with_variable.py +4 -5
- langflow/alembic/versions/1b8b740a6fa3_remove_fk_constraint_in_message_.py +32 -27
- langflow/alembic/versions/1c79524817ed_add_unique_constraints_per_user_in_.py +4 -5
- langflow/alembic/versions/1d90f8a0efe1_update_description_columns_type.py +4 -5
- langflow/alembic/versions/1eab2c3eb45e_event_error.py +14 -15
- langflow/alembic/versions/1ef9c4f3765d_.py +5 -10
- langflow/alembic/versions/1f4d6df60295_add_default_fields_column.py +4 -5
- langflow/alembic/versions/260dbcc8b680_adds_tables.py +4 -5
- langflow/alembic/versions/29fe8f1f806b_add_missing_index.py +4 -5
- langflow/alembic/versions/2ac71eb9c3ae_adds_credential_table.py +4 -7
- langflow/alembic/versions/3bb0ddf32dfb_add_unique_constraints_per_user_in_flow_.py +4 -5
- langflow/alembic/versions/4e5980a44eaa_fix_date_times_again.py +1 -2
- langflow/alembic/versions/58b28437a398_modify_nullable.py +1 -2
- langflow/alembic/versions/5ace73a7f223_new_remove_table_upgrade_op.py +6 -12
- langflow/alembic/versions/631faacf5da2_add_webhook_columns.py +4 -5
- langflow/alembic/versions/63b9c451fd30_add_icon_and_icon_bg_color_to_flow.py +4 -5
- langflow/alembic/versions/66f72f04a1de_add_mcp_support_with_project_settings_.py +21 -23
- langflow/alembic/versions/67cc006d50bf_add_profile_image_column.py +4 -5
- langflow/alembic/versions/6e7b581b5648_fix_nullable.py +4 -5
- langflow/alembic/versions/7843803a87b5_store_updates.py +4 -6
- langflow/alembic/versions/79e675cb6752_change_datetime_type.py +1 -2
- langflow/alembic/versions/7d2162acc8b2_adds_updated_at_and_folder_cols.py +4 -10
- langflow/alembic/versions/90be8e2ed91e_create_transactions_table.py +4 -6
- langflow/alembic/versions/93e2705fa8d6_add_column_save_path_to_flow.py +7 -9
- langflow/alembic/versions/a72f5cf9c2f9_add_endpoint_name_col.py +4 -5
- langflow/alembic/versions/b2fa308044b5_add_unique_constraints.py +1 -2
- langflow/alembic/versions/bc2f01c40e4a_new_fixes.py +4 -5
- langflow/alembic/versions/c153816fd85f_set_name_and_value_to_not_nullable.py +4 -5
- langflow/alembic/versions/d066bfd22890_add_message_table.py +4 -4
- langflow/alembic/versions/d2d475a1f7c0_add_tags_column_to_flow.py +12 -13
- langflow/alembic/versions/d3dbf656a499_add_gradient_column_in_flow.py +12 -12
- langflow/alembic/versions/d9a6ea21edcd_rename_default_folder.py +7 -10
- langflow/alembic/versions/dd9e0804ebd1_add_v2_file_table.py +8 -7
- langflow/alembic/versions/e3162c1804e6_add_persistent_locked_state.py +10 -10
- langflow/alembic/versions/e3bc869fa272_fix_nullable.py +4 -5
- langflow/alembic/versions/e56d87f8994a_add_optins_column_to_user.py +13 -14
- langflow/alembic/versions/e5a65ecff2cd_nullable_in_vertex_build.py +4 -5
- langflow/alembic/versions/eb5866d51fd2_change_columns_to_be_nullable.py +4 -5
- langflow/alembic/versions/eb5e72293a8e_add_error_and_edit_flags_to_message.py +4 -5
- langflow/alembic/versions/f3b2d1f1002d_add_column_access_type_to_flow.py +19 -15
- langflow/alembic/versions/f5ee9749d1a6_user_id_can_be_null_in_flow.py +4 -6
- langflow/alembic/versions/fd531f8868b1_fix_credential_table.py +5 -8
- langflow/api/build.py +5 -4
- langflow/api/health_check_router.py +1 -1
- langflow/api/limited_background_tasks.py +1 -1
- langflow/api/log_router.py +1 -2
- langflow/api/utils.py +2 -2
- langflow/api/v1/base.py +1 -2
- langflow/api/v1/callback.py +4 -9
- langflow/api/v1/chat.py +6 -7
- langflow/api/v1/endpoints.py +15 -15
- langflow/api/v1/files.py +1 -1
- langflow/api/v1/flows.py +1 -1
- langflow/api/v1/knowledge_bases.py +1 -1
- langflow/api/v1/mcp.py +1 -1
- langflow/api/v1/mcp_projects.py +14 -5
- langflow/api/v1/mcp_utils.py +3 -3
- langflow/api/v1/openai_responses.py +4 -4
- langflow/api/v1/schemas.py +3 -38
- langflow/api/v1/starter_projects.py +61 -3
- langflow/api/v1/store.py +1 -1
- langflow/api/v1/validate.py +3 -3
- langflow/api/v1/voice_mode.py +2 -2
- langflow/api/v2/files.py +1 -1
- langflow/api/v2/mcp.py +2 -2
- langflow/base/__init__.py +11 -0
- langflow/base/agents/__init__.py +3 -0
- langflow/base/data/__init__.py +2 -4
- langflow/base/data/utils.py +2 -197
- langflow/base/embeddings/__init__.py +3 -0
- langflow/base/io/__init__.py +7 -0
- langflow/base/io/chat.py +5 -18
- langflow/base/io/text.py +2 -21
- langflow/base/knowledge_bases/__init__.py +3 -0
- langflow/base/memory/__init__.py +3 -0
- langflow/base/models/__init__.py +2 -2
- langflow/base/models/openai_constants.py +6 -120
- langflow/base/prompts/__init__.py +3 -0
- langflow/base/prompts/api_utils.py +2 -223
- langflow/base/textsplitters/__init__.py +3 -0
- langflow/base/tools/__init__.py +3 -0
- langflow/base/vectorstores/__init__.py +3 -0
- langflow/components/__init__.py +7 -259
- langflow/components/agents.py +6 -0
- langflow/components/anthropic.py +6 -0
- langflow/components/data.py +6 -0
- langflow/components/helpers.py +6 -0
- langflow/components/knowledge_bases/ingestion.py +13 -14
- langflow/components/knowledge_bases/retrieval.py +8 -7
- langflow/components/openai.py +6 -0
- langflow/components/processing/__init__.py +1 -117
- langflow/components/processing/converter.py +3 -149
- langflow/custom/__init__.py +26 -3
- langflow/custom/custom_component/__init__.py +4 -0
- langflow/custom/custom_component/component.py +20 -1738
- langflow/custom/custom_component/component_with_cache.py +1 -8
- langflow/custom/custom_component/custom_component.py +1 -552
- langflow/custom/utils.py +1 -872
- langflow/custom/validate.py +1 -0
- langflow/events/event_manager.py +18 -108
- langflow/field_typing/__init__.py +6 -6
- langflow/field_typing/constants.py +87 -122
- langflow/field_typing/range_spec.py +2 -32
- langflow/frontend/assets/{SlackIcon-Cc7Qnzki.js → SlackIcon-v88osOTA.js} +1 -1
- langflow/frontend/assets/{Wikipedia-7ulMZY46.js → Wikipedia-DD_S2k00.js} +1 -1
- langflow/frontend/assets/{Wolfram-By9PGsHS.js → Wolfram-EO2C5noN.js} +1 -1
- langflow/frontend/assets/{index-DVLIDc2_.js → index-1Gv1mfvk.js} +1 -1
- langflow/frontend/assets/{index-MVW4HTEk.js → index-7v-bzlzf.js} +1 -1
- langflow/frontend/assets/{index-CUzlcce2.js → index-9CbMazbV.js} +1 -1
- langflow/frontend/assets/{index-CU16NJD7.js → index-B8ZHP8g2.js} +1 -1
- langflow/frontend/assets/{index-v8eXbWlM.js → index-B8y2e6vN.js} +1 -1
- langflow/frontend/assets/{index-BX_asvRB.js → index-BBRUGsyr.js} +1 -1
- langflow/frontend/assets/{index-9FL5xjkL.js → index-BGwqQwlh.js} +1 -1
- langflow/frontend/assets/{index-BAn-AzCS.js → index-BIq-k-FG.js} +1 -1
- langflow/frontend/assets/{index-D5c2nNvp.js → index-BSN73YP8.js} +1 -1
- langflow/frontend/assets/{index-DMCerPJM.js → index-BU8R8jRn.js} +1 -1
- langflow/frontend/assets/{index-CvSoff-8.js → index-BV6yx8ey.js} +1 -1
- langflow/frontend/assets/{index-BISPW-f6.js → index-BYIsg-Eh.js} +1 -1
- langflow/frontend/assets/{index-GzOGB_fo.js → index-B_ksDBSQ.js} +1 -1
- langflow/frontend/assets/{index-BIqEYjNT.js → index-Ba1UOZ9A.js} +1 -1
- langflow/frontend/assets/{index-ByxGmq5p.js → index-Ba9tKRQg.js} +1 -1
- langflow/frontend/assets/{index-BLEWsL1U.js → index-Bbfaw8ca.js} +1 -1
- langflow/frontend/assets/{index-C_MhBX6R.js → index-BbuGqvAx.js} +1 -1
- langflow/frontend/assets/{index-RH_I78z_.js → index-BeoXu1YX.js} +1 -1
- langflow/frontend/assets/{index-cYFKmtmg.js → index-BfjZmOnH.js} +1 -1
- langflow/frontend/assets/{index-Bm9i8F4W.js → index-Bjzy_HZB.js} +1 -1
- langflow/frontend/assets/{index-_szO7sta.js → index-BofEkpYB.js} +1 -1
- langflow/frontend/assets/{index-DP1oE6QB.js → index-Bp7Mty2H.js} +1 -1
- langflow/frontend/assets/{index-CeswGUz3.js → index-BqX1H6yK.js} +1 -1
- langflow/frontend/assets/{index-C8pI0lzi.js → index-BqtBAJAN.js} +1 -1
- langflow/frontend/assets/{index-BusCv3bR.js → index-Bsfraj7A.js} +1 -1
- langflow/frontend/assets/{index-BWnKMRFJ.js → index-BtFl7fER.js} +1 -1
- langflow/frontend/assets/{index-DnlVWWU8.js → index-BvX993Sv.js} +1 -1
- langflow/frontend/assets/{index-C676MS3I.js → index-BvgQ2vzM.js} +1 -1
- langflow/frontend/assets/{index-DJ6HD14g.js → index-BwY98u8n.js} +1 -1
- langflow/frontend/assets/{index-C51yNvIL.js → index-C-RIJAOS.js} +1 -1
- langflow/frontend/assets/{index-DiblXWmk.js → index-C1K6A38P.js} +1 -1
- langflow/frontend/assets/{index-Co__gFM1.js → index-C3Vwhx0t.js} +1 -1
- langflow/frontend/assets/{index-Coi86oqP.js → index-C5XUG_gr.js} +1 -1
- langflow/frontend/assets/{index-jwzN3Jd_.js → index-C6ouLG9o.js} +1 -1
- langflow/frontend/assets/{index-CQQ-4XMS.js → index-C7ZJ_Z6f.js} +1 -1
- langflow/frontend/assets/{index-Bl7RpmrB.js → index-CCOGIwGY.js} +1 -1
- langflow/frontend/assets/{index-CVkIdc6y.js → index-CCcye2rt.js} +1 -1
- langflow/frontend/assets/{index-bMhyLtgS.js → index-CFR4yJQB.js} +1 -1
- langflow/frontend/assets/{index-aAgSKWb3.js → index-CIGmPP0H.js} +1 -1
- langflow/frontend/assets/{index-BGt6jQ4x.js → index-CJmMEa6d.js} +1 -1
- langflow/frontend/assets/{index-DX7JcSMz.js → index-CJxD7lyU.js} +1 -1
- langflow/frontend/assets/{index-BZ-A4K98.js → index-CL_vu6ut.js} +1 -1
- langflow/frontend/assets/{index-BMpKFGhI.js → index-COf3UnBn.js} +1 -1
- langflow/frontend/assets/{index-xN8ogFdo.js → index-CV9650h_.js} +1 -1
- langflow/frontend/assets/{index-OsUvqIUr.js → index-CVDzych0.js} +1 -1
- langflow/frontend/assets/{index-BH7AyHxp.js → index-CWIHsC4D.js} +1 -1
- langflow/frontend/assets/{index-mjwtJmkP.js → index-CXCnFZ0L.js} +1 -1
- langflow/frontend/assets/{index-3jlSQi5Y.js → index-Ca_Pw_Dn.js} +1 -1
- langflow/frontend/assets/{index-D-SnFlhU.js → index-Cbb3bX9e.js} +1 -1
- langflow/frontend/assets/{index--e0oQqZh.js → index-CcJtOz-Z.js} +1 -1
- langflow/frontend/assets/{index-S-sc0Cm9.js → index-CfTbTHEv.js} +1 -1
- langflow/frontend/assets/{index-Deu8rlaZ.js → index-ChoxDAgX.js} +1 -1
- langflow/frontend/assets/{index-lnF9Eqr2.js → index-Cn4gw8aE.js} +1 -1
- langflow/frontend/assets/{index-C_NwzK6j.js → index-CnpLg4zX.js} +1 -1
- langflow/frontend/assets/{index-DznH7Jbq.js → index-Cpao2omG.js} +1 -1
- langflow/frontend/assets/{index-DpWrk8mA.js → index-CqoxM01j.js} +1 -1
- langflow/frontend/assets/{index-Bw-TIIC6.js → index-CrHf2Ic1.js} +1 -1
- langflow/frontend/assets/{index-DmYLDQag.js → index-CrV0uIjp.js} +1 -1
- langflow/frontend/assets/{index-Dp7ZQyL3.js → index-CssADaak.js} +1 -1
- langflow/frontend/assets/{index-CNh0rwur.js → index-CtJdNLy9.js} +1 -1
- langflow/frontend/assets/{index-Ca1b7Iag.js → index-CyeWD2dh.js} +1 -1
- langflow/frontend/assets/{index-DcApTyZ7.js → index-D1xzD7uc.js} +1 -1
- langflow/frontend/assets/{index-B3GvPjhD.js → index-D6MuXC4L.js} +1 -1
- langflow/frontend/assets/{index-Cw0UComa.js → index-D8w9zvIF.js} +1 -1
- langflow/frontend/assets/{index-C-2MRYoJ.js → index-D98Gn0A6.js} +1 -1
- langflow/frontend/assets/{index-aWnZIwHd.js → index-DBhjpWkf.js} +1 -1
- langflow/frontend/assets/{index-nw3WF9lY.js → index-DCCRJzcY.js} +1 -1
- langflow/frontend/assets/{index-RjeC0kaX.js → index-DCTRSkEW.js} +1 -1
- langflow/frontend/assets/{index-B_kBTgxV.js → index-DCUfitVj.js} +1 -1
- langflow/frontend/assets/{index-ChsGhZn3.js → index-DDdz-Xcl.js} +1 -1
- langflow/frontend/assets/{index-7yAHPRxv.js → index-DGdMwZjG.js} +1 -1
- langflow/frontend/assets/{index-DjQElpEg.js → index-DGtl2vMw.js} +1 -1
- langflow/frontend/assets/{index-BCXhKCOK.js → index-DHVdkrni.js} +1 -1
- langflow/frontend/assets/{index-S8uJXTOq.js → index-DJBWwjgl.js} +1 -1
- langflow/frontend/assets/{index-qiVTWUuf.js → index-DMAkJ_qX.js} +1 -1
- langflow/frontend/assets/{index-D-WStJI6.js → index-DMEvEQI5.js} +1 -1
- langflow/frontend/assets/{index-BhqVw9WQ.js → index-DNGRoOsp.js} +1 -1
- langflow/frontend/assets/{index-Cu7vC48Y.js → index-DNT_TUTa.js} +1 -1
- langflow/frontend/assets/{index-Bhcv5M0n.js → index-DQKOH_9K.js} +1 -1
- langflow/frontend/assets/{index-CLcaktde.js → index-DQhqqtqQ.js} +1 -1
- langflow/frontend/assets/{index-DZVgPCio.js → index-DRM7KKnG.js} +1 -1
- langflow/frontend/assets/{index-uybez8MR.js → index-DSCtl3a5.js} +1 -1
- langflow/frontend/assets/{index-CJ5A6STv.js → index-DSLNlm0Z.js} +1 -1
- langflow/frontend/assets/{index-Drg8me2a.js → index-DT-PspE-.js} +1 -1
- langflow/frontend/assets/{index-DsEZjOcp.js → index-DTpbH-p8.js} +1 -1
- langflow/frontend/assets/{index-DrXXKzpD.js → index-DWV6MsIq.js} +1 -1
- langflow/frontend/assets/{index-4JIEdyIM.js → index-DWeL4US_.js} +1 -1
- langflow/frontend/assets/{index-BlDsBQ_1.js → index-DYKZHhpU.js} +1 -1
- langflow/frontend/assets/{index-DFY8YFbC.js → index-DZyQHiMR.js} +1 -1
- langflow/frontend/assets/{index-CKPZpkQk.js → index-Dc6qVuSa.js} +1 -1
- langflow/frontend/assets/{index-yyAaYjLR.js → index-DkYuicnC.js} +1 -1
- langflow/frontend/assets/{index-DmVt5Jlx.js → index-Dlj_2mMs.js} +1 -1
- langflow/frontend/assets/{index-BvRIG6P5.js → index-DmGJUrEp.js} +1 -1
- langflow/frontend/assets/{index-BWFIrwW1.js → index-Dn6hpCAZ.js} +1 -1
- langflow/frontend/assets/{index-Cb5G9Ifd.js → index-DrJU8Fgb.js} +1 -1
- langflow/frontend/assets/{index-COoTCxvs.js → index-DsWfdCzp.js} +1 -1
- langflow/frontend/assets/{index-ZjeocHyu.js → index-DvCPWs2_.js} +1 -1
- langflow/frontend/assets/{index-B5LHnuQR.js → index-DvPVq7OP.js} +1 -1
- langflow/frontend/assets/{index-BnCnYnao.js → index-Dw71ufW4.js} +1 -1
- langflow/frontend/assets/{index-AALDfCyt.js → index-DxkJactf.js} +1 -1
- langflow/frontend/assets/{index-k9jP5chN.js → index-Dz2GTphU.js} +1 -1
- langflow/frontend/assets/{index-BdjfHsrf.js → index-Fvd524_c.js} +1 -1
- langflow/frontend/assets/{index-AKVkmT4S.js → index-GAQ0Mk2M.js} +1 -1
- langflow/frontend/assets/{index-BZSa2qz7.js → index-Hm5-4ItD.js} +1 -1
- langflow/frontend/assets/{index-DbfS_UH-.js → index-IT67FzsK.js} +1 -1
- langflow/frontend/assets/{index-BLXN681C.js → index-ItYiij1i.js} +1 -1
- langflow/frontend/assets/{index-CiklyQU3.js → index-IuR_FEdB.js} +1 -1
- langflow/frontend/assets/{index-xV6ystWy.js → index-Jj60FQkv.js} +1 -1
- langflow/frontend/assets/{index-C_157Mb-.js → index-LlvshmVz.js} +1 -1
- langflow/frontend/assets/{index-CDphUsa3.js → index-LwKh3I_W.js} +1 -1
- langflow/frontend/assets/{index-BrDz-PxE.js → index-N-xxmKKH.js} +1 -1
- langflow/frontend/assets/{index-BsdLyYMY.js → index-RwpaHIAH.js} +1 -1
- langflow/frontend/assets/{index-Cu2Xr6_j.js → index-TVvsp-xh.js} +1 -1
- langflow/frontend/assets/{index-CPiM2oyj.js → index-TdE2u9zP.js} +1 -1
- langflow/frontend/assets/{index-DOj_QWqG.js → index-_x-NkYeW.js} +1 -1
- langflow/frontend/assets/{index-YJsAl7vm.js → index-a-YclEbW.js} +1 -1
- langflow/frontend/assets/{index-5-CSw2-z.js → index-e9MFKUCo.js} +1 -1
- langflow/frontend/assets/{index-BSwBVwyF.js → index-krPr8f2F.js} +1 -1
- langflow/frontend/assets/{index-Df6psZEj.js → index-kveiUWuL.js} +1 -1
- langflow/frontend/assets/{index-CF4_Og1m.js → index-lE3oSjJi.js} +1 -1
- langflow/frontend/assets/{index-C6nzdeYx.js → index-lM3UYg7F.js} +1 -1
- langflow/frontend/assets/{index-C-wnbBBY.js → index-nsRk3qgA.js} +1 -1
- langflow/frontend/assets/{index-D234yKNJ.js → index-pBO0SZLD.js} +4 -4
- langflow/frontend/assets/{index-BMvp94tO.js → index-pbZHsbuE.js} +1 -1
- langflow/frontend/assets/{index-hg2y9OAt.js → index-sfX3aWyp.js} +1 -1
- langflow/frontend/assets/{index-DTCrijba.js → index-xQz-VJ0-.js} +1 -1
- langflow/frontend/assets/{index-SB4rw8D5.js → index-yfcsaHS6.js} +1 -1
- langflow/frontend/assets/{index-C-bjC2sz.js → index-zcGjo9fx.js} +1 -1
- langflow/frontend/assets/lazyIconImports-BjqDmNYG.js +2 -0
- langflow/frontend/assets/{use-post-add-user-JUeLDErC.js → use-post-add-user-w3vpKSOB.js} +1 -1
- langflow/frontend/index.html +1 -1
- langflow/graph/__init__.py +4 -4
- langflow/helpers/data.py +2 -2
- langflow/helpers/flow.py +9 -7
- langflow/helpers/user.py +2 -2
- langflow/initial_setup/setup.py +9 -9
- langflow/initial_setup/starter_projects/Basic Prompt Chaining.json +119 -41
- langflow/initial_setup/starter_projects/Basic Prompting.json +45 -19
- langflow/initial_setup/starter_projects/Blog Writer.json +53 -21
- langflow/initial_setup/starter_projects/Custom Component Generator.json +121 -97
- langflow/initial_setup/starter_projects/Document Q&A.json +46 -18
- langflow/initial_setup/starter_projects/Financial Report Parser.json +49 -17
- langflow/initial_setup/starter_projects/Hybrid Search RAG.json +89 -50
- langflow/initial_setup/starter_projects/Image Sentiment Analysis.json +86 -22
- langflow/initial_setup/starter_projects/Instagram Copywriter.json +210 -57
- langflow/initial_setup/starter_projects/Invoice Summarizer.json +132 -35
- langflow/initial_setup/starter_projects/Knowledge Ingestion.json +8 -8
- langflow/initial_setup/starter_projects/Knowledge Retrieval.json +8 -8
- langflow/initial_setup/starter_projects/Market Research.json +174 -48
- langflow/initial_setup/starter_projects/Meeting Summary.json +102 -38
- langflow/initial_setup/starter_projects/Memory Chatbot.json +49 -21
- langflow/initial_setup/starter_projects/News Aggregator.json +140 -39
- langflow/initial_setup/starter_projects/Nvidia Remix.json +153 -181
- langflow/initial_setup/starter_projects/Pok/303/251dex Agent.json" +132 -35
- langflow/initial_setup/starter_projects/Portfolio Website Code Generator.json +106 -43
- langflow/initial_setup/starter_projects/Price Deal Finder.json +136 -39
- langflow/initial_setup/starter_projects/Research Agent.json +206 -53
- langflow/initial_setup/starter_projects/Research Translation Loop.json +66 -34
- langflow/initial_setup/starter_projects/SEO Keyword Generator.json +41 -15
- langflow/initial_setup/starter_projects/SaaS Pricing.json +128 -31
- langflow/initial_setup/starter_projects/Search agent.json +132 -35
- langflow/initial_setup/starter_projects/Sequential Tasks Agents.json +422 -98
- langflow/initial_setup/starter_projects/Simple Agent.json +150 -42
- langflow/initial_setup/starter_projects/Social Media Agent.json +150 -42
- langflow/initial_setup/starter_projects/Text Sentiment Analysis.json +120 -24
- langflow/initial_setup/starter_projects/Travel Planning Agents.json +418 -94
- langflow/initial_setup/starter_projects/Twitter Thread Generator.json +69 -37
- langflow/initial_setup/starter_projects/Vector Store RAG.json +66 -38
- langflow/initial_setup/starter_projects/Youtube Analysis.json +191 -51
- langflow/initial_setup/starter_projects/basic_prompting.py +4 -4
- langflow/initial_setup/starter_projects/blog_writer.py +5 -5
- langflow/initial_setup/starter_projects/complex_agent.py +8 -8
- langflow/initial_setup/starter_projects/document_qa.py +5 -5
- langflow/initial_setup/starter_projects/hierarchical_tasks_agent.py +8 -8
- langflow/initial_setup/starter_projects/memory_chatbot.py +6 -6
- langflow/initial_setup/starter_projects/sequential_tasks_agent.py +7 -7
- langflow/initial_setup/starter_projects/vector_store_rag.py +8 -8
- langflow/inputs/__init__.py +3 -2
- langflow/inputs/constants.py +3 -2
- langflow/inputs/input_mixin.py +49 -310
- langflow/inputs/inputs.py +72 -703
- langflow/inputs/validators.py +2 -18
- langflow/interface/__init__.py +4 -0
- langflow/interface/components.py +3 -491
- langflow/interface/initialize/loading.py +7 -6
- langflow/interface/listing.py +3 -25
- langflow/interface/run.py +1 -1
- langflow/interface/utils.py +3 -111
- langflow/io/__init__.py +2 -2
- langflow/io/schema.py +11 -302
- langflow/load/__init__.py +4 -2
- langflow/load/utils.py +2 -96
- langflow/logging/__init__.py +2 -1
- langflow/logging/setup.py +1 -1
- langflow/main.py +8 -5
- langflow/memory.py +12 -6
- langflow/middleware.py +1 -1
- langflow/processing/process.py +7 -7
- langflow/schema/__init__.py +22 -5
- langflow/schema/artifact.py +1 -1
- langflow/schema/data.py +5 -303
- langflow/schema/dataframe.py +2 -205
- langflow/schema/graph.py +4 -45
- langflow/schema/image.py +2 -67
- langflow/schema/message.py +6 -470
- langflow/schema/playground_events.py +5 -6
- langflow/schema/schema.py +24 -117
- langflow/serialization/constants.py +3 -2
- langflow/serialization/serialization.py +1 -1
- langflow/server.py +1 -2
- langflow/services/__init__.py +1 -2
- langflow/services/auth/mcp_encryption.py +1 -1
- langflow/services/auth/service.py +1 -1
- langflow/services/auth/utils.py +5 -5
- langflow/services/cache/disk.py +2 -2
- langflow/services/cache/factory.py +2 -2
- langflow/services/cache/service.py +2 -2
- langflow/services/cache/utils.py +0 -11
- langflow/services/database/factory.py +1 -1
- langflow/services/database/models/flow/model.py +1 -1
- langflow/services/database/models/message/crud.py +2 -1
- langflow/services/database/models/transactions/crud.py +1 -1
- langflow/services/database/models/user/crud.py +1 -1
- langflow/services/database/service.py +2 -2
- langflow/services/database/utils.py +1 -2
- langflow/services/deps.py +12 -17
- langflow/services/enhanced_manager.py +71 -0
- langflow/services/factory.py +14 -7
- langflow/services/flow/flow_runner.py +4 -4
- langflow/services/job_queue/service.py +2 -1
- langflow/services/manager.py +14 -130
- langflow/services/schema.py +0 -1
- langflow/services/session/service.py +3 -2
- langflow/services/settings/__init__.py +0 -3
- langflow/services/settings/base.py +16 -549
- langflow/services/settings/factory.py +2 -21
- langflow/services/settings/feature_flags.py +2 -11
- langflow/services/settings/service.py +2 -31
- langflow/services/shared_component_cache/factory.py +1 -1
- langflow/services/socket/service.py +1 -1
- langflow/services/socket/utils.py +1 -8
- langflow/services/state/factory.py +1 -1
- langflow/services/state/service.py +3 -2
- langflow/services/storage/factory.py +2 -2
- langflow/services/storage/local.py +1 -2
- langflow/services/storage/s3.py +1 -2
- langflow/services/storage/service.py +2 -1
- langflow/services/store/factory.py +1 -1
- langflow/services/store/service.py +2 -2
- langflow/services/store/utils.py +1 -2
- langflow/services/task/service.py +2 -1
- langflow/services/task/temp_flow_cleanup.py +1 -1
- langflow/services/telemetry/factory.py +1 -1
- langflow/services/telemetry/service.py +2 -3
- langflow/services/tracing/arize_phoenix.py +3 -3
- langflow/services/tracing/base.py +1 -1
- langflow/services/tracing/factory.py +1 -1
- langflow/services/tracing/langfuse.py +2 -2
- langflow/services/tracing/langsmith.py +2 -2
- langflow/services/tracing/langwatch.py +4 -4
- langflow/services/tracing/opik.py +2 -2
- langflow/services/tracing/service.py +17 -11
- langflow/services/tracing/traceloop.py +2 -2
- langflow/services/tracing/utils.py +1 -1
- langflow/services/utils.py +54 -9
- langflow/services/variable/factory.py +1 -1
- langflow/services/variable/kubernetes.py +2 -3
- langflow/services/variable/kubernetes_secrets.py +1 -2
- langflow/services/variable/service.py +2 -3
- langflow/template/__init__.py +2 -9
- langflow/template/field/__init__.py +3 -0
- langflow/template/field/base.py +2 -256
- langflow/template/frontend_node.py +3 -0
- langflow/template/utils.py +2 -216
- langflow/utils/constants.py +28 -204
- langflow/utils/lazy_load.py +3 -14
- langflow/utils/schemas.py +2 -3
- langflow/utils/template_validation.py +2 -2
- langflow/utils/util.py +59 -479
- langflow/utils/validate.py +2 -488
- langflow/utils/voice_utils.py +1 -2
- langflow/worker.py +1 -1
- {langflow_base_nightly-0.5.1.dev3.dist-info → langflow_base_nightly-0.5.1.dev5.dist-info}/METADATA +2 -1
- langflow_base_nightly-0.5.1.dev5.dist-info/RECORD +633 -0
- langflow/base/agents/agent.py +0 -267
- langflow/base/agents/callback.py +0 -130
- langflow/base/agents/context.py +0 -109
- langflow/base/agents/crewai/__init__.py +0 -0
- langflow/base/agents/crewai/crew.py +0 -231
- langflow/base/agents/crewai/tasks.py +0 -12
- langflow/base/agents/default_prompts.py +0 -23
- langflow/base/agents/errors.py +0 -15
- langflow/base/agents/events.py +0 -346
- langflow/base/agents/utils.py +0 -205
- langflow/base/astra_assistants/__init__.py +0 -0
- langflow/base/astra_assistants/util.py +0 -171
- langflow/base/chains/__init__.py +0 -0
- langflow/base/chains/model.py +0 -19
- langflow/base/composio/__init__.py +0 -0
- langflow/base/composio/composio_base.py +0 -1297
- langflow/base/compressors/__init__.py +0 -0
- langflow/base/compressors/model.py +0 -60
- langflow/base/constants.py +0 -46
- langflow/base/curl/__init__.py +0 -0
- langflow/base/curl/parse.py +0 -188
- langflow/base/data/base_file.py +0 -685
- langflow/base/data/docling_utils.py +0 -245
- langflow/base/document_transformers/__init__.py +0 -0
- langflow/base/document_transformers/model.py +0 -43
- langflow/base/embeddings/aiml_embeddings.py +0 -62
- langflow/base/embeddings/model.py +0 -26
- langflow/base/flow_processing/__init__.py +0 -0
- langflow/base/flow_processing/utils.py +0 -86
- langflow/base/huggingface/__init__.py +0 -0
- langflow/base/huggingface/model_bridge.py +0 -133
- langflow/base/langchain_utilities/__init__.py +0 -0
- langflow/base/langchain_utilities/model.py +0 -35
- langflow/base/langchain_utilities/spider_constants.py +0 -1
- langflow/base/langwatch/__init__.py +0 -0
- langflow/base/langwatch/utils.py +0 -18
- langflow/base/mcp/__init__.py +0 -0
- langflow/base/mcp/constants.py +0 -2
- langflow/base/mcp/util.py +0 -1524
- langflow/base/memory/memory.py +0 -49
- langflow/base/memory/model.py +0 -38
- langflow/base/models/aiml_constants.py +0 -51
- langflow/base/models/anthropic_constants.py +0 -47
- langflow/base/models/aws_constants.py +0 -151
- langflow/base/models/chat_result.py +0 -76
- langflow/base/models/google_generative_ai_constants.py +0 -70
- langflow/base/models/groq_constants.py +0 -134
- langflow/base/models/model.py +0 -375
- langflow/base/models/model_input_constants.py +0 -299
- langflow/base/models/model_metadata.py +0 -41
- langflow/base/models/model_utils.py +0 -8
- langflow/base/models/novita_constants.py +0 -35
- langflow/base/models/ollama_constants.py +0 -49
- langflow/base/models/sambanova_constants.py +0 -18
- langflow/base/processing/__init__.py +0 -0
- langflow/base/prompts/utils.py +0 -61
- langflow/base/textsplitters/model.py +0 -28
- langflow/base/tools/base.py +0 -26
- langflow/base/tools/component_tool.py +0 -324
- langflow/base/tools/constants.py +0 -49
- langflow/base/tools/flow_tool.py +0 -131
- langflow/base/tools/run_flow.py +0 -227
- langflow/base/vectorstores/model.py +0 -193
- langflow/base/vectorstores/utils.py +0 -22
- langflow/base/vectorstores/vector_store_connection_decorator.py +0 -52
- langflow/components/FAISS/__init__.py +0 -34
- langflow/components/FAISS/faiss.py +0 -111
- langflow/components/Notion/__init__.py +0 -19
- langflow/components/Notion/add_content_to_page.py +0 -269
- langflow/components/Notion/create_page.py +0 -94
- langflow/components/Notion/list_database_properties.py +0 -68
- langflow/components/Notion/list_pages.py +0 -122
- langflow/components/Notion/list_users.py +0 -77
- langflow/components/Notion/page_content_viewer.py +0 -93
- langflow/components/Notion/search.py +0 -111
- langflow/components/Notion/update_page_property.py +0 -114
- langflow/components/_importing.py +0 -37
- langflow/components/agentql/__init__.py +0 -3
- langflow/components/agentql/agentql_api.py +0 -151
- langflow/components/agents/__init__.py +0 -4
- langflow/components/agents/agent.py +0 -554
- langflow/components/agents/mcp_component.py +0 -501
- langflow/components/aiml/__init__.py +0 -37
- langflow/components/aiml/aiml.py +0 -112
- langflow/components/aiml/aiml_embeddings.py +0 -37
- langflow/components/amazon/__init__.py +0 -36
- langflow/components/amazon/amazon_bedrock_embedding.py +0 -109
- langflow/components/amazon/amazon_bedrock_model.py +0 -124
- langflow/components/amazon/s3_bucket_uploader.py +0 -211
- langflow/components/anthropic/__init__.py +0 -34
- langflow/components/anthropic/anthropic.py +0 -187
- langflow/components/apify/__init__.py +0 -5
- langflow/components/apify/apify_actor.py +0 -325
- langflow/components/arxiv/__init__.py +0 -3
- langflow/components/arxiv/arxiv.py +0 -163
- langflow/components/assemblyai/__init__.py +0 -46
- langflow/components/assemblyai/assemblyai_get_subtitles.py +0 -83
- langflow/components/assemblyai/assemblyai_lemur.py +0 -183
- langflow/components/assemblyai/assemblyai_list_transcripts.py +0 -95
- langflow/components/assemblyai/assemblyai_poll_transcript.py +0 -72
- langflow/components/assemblyai/assemblyai_start_transcript.py +0 -188
- langflow/components/azure/__init__.py +0 -37
- langflow/components/azure/azure_openai.py +0 -95
- langflow/components/azure/azure_openai_embeddings.py +0 -83
- langflow/components/baidu/__init__.py +0 -32
- langflow/components/baidu/baidu_qianfan_chat.py +0 -113
- langflow/components/bing/__init__.py +0 -3
- langflow/components/bing/bing_search_api.py +0 -61
- langflow/components/cassandra/__init__.py +0 -40
- langflow/components/cassandra/cassandra.py +0 -264
- langflow/components/cassandra/cassandra_chat.py +0 -92
- langflow/components/cassandra/cassandra_graph.py +0 -238
- langflow/components/chains/__init__.py +0 -0
- langflow/components/chroma/__init__.py +0 -34
- langflow/components/chroma/chroma.py +0 -167
- langflow/components/cleanlab/__init__.py +0 -40
- langflow/components/cleanlab/cleanlab_evaluator.py +0 -157
- langflow/components/cleanlab/cleanlab_rag_evaluator.py +0 -254
- langflow/components/cleanlab/cleanlab_remediator.py +0 -131
- langflow/components/clickhouse/__init__.py +0 -34
- langflow/components/clickhouse/clickhouse.py +0 -135
- langflow/components/cloudflare/__init__.py +0 -32
- langflow/components/cloudflare/cloudflare.py +0 -81
- langflow/components/cohere/__init__.py +0 -40
- langflow/components/cohere/cohere_embeddings.py +0 -81
- langflow/components/cohere/cohere_models.py +0 -46
- langflow/components/cohere/cohere_rerank.py +0 -51
- langflow/components/composio/__init__.py +0 -73
- langflow/components/composio/composio_api.py +0 -268
- langflow/components/composio/dropbox_compnent.py +0 -11
- langflow/components/composio/github_composio.py +0 -11
- langflow/components/composio/gmail_composio.py +0 -38
- langflow/components/composio/googlecalendar_composio.py +0 -11
- langflow/components/composio/googlemeet_composio.py +0 -11
- langflow/components/composio/googletasks_composio.py +0 -8
- langflow/components/composio/linear_composio.py +0 -11
- langflow/components/composio/outlook_composio.py +0 -11
- langflow/components/composio/reddit_composio.py +0 -11
- langflow/components/composio/slack_composio.py +0 -11
- langflow/components/composio/slackbot_composio.py +0 -11
- langflow/components/composio/supabase_composio.py +0 -11
- langflow/components/composio/todoist_composio.py +0 -11
- langflow/components/composio/youtube_composio.py +0 -11
- langflow/components/confluence/__init__.py +0 -3
- langflow/components/confluence/confluence.py +0 -84
- langflow/components/couchbase/__init__.py +0 -34
- langflow/components/couchbase/couchbase.py +0 -102
- langflow/components/crewai/__init__.py +0 -49
- langflow/components/crewai/crewai.py +0 -107
- langflow/components/crewai/hierarchical_crew.py +0 -46
- langflow/components/crewai/hierarchical_task.py +0 -44
- langflow/components/crewai/sequential_crew.py +0 -52
- langflow/components/crewai/sequential_task.py +0 -73
- langflow/components/crewai/sequential_task_agent.py +0 -143
- langflow/components/custom_component/__init__.py +0 -34
- langflow/components/custom_component/custom_component.py +0 -31
- langflow/components/data/__init__.py +0 -25
- langflow/components/data/api_request.py +0 -545
- langflow/components/data/csv_to_data.py +0 -95
- langflow/components/data/directory.py +0 -113
- langflow/components/data/file.py +0 -586
- langflow/components/data/json_to_data.py +0 -98
- langflow/components/data/news_search.py +0 -164
- langflow/components/data/rss.py +0 -69
- langflow/components/data/sql_executor.py +0 -99
- langflow/components/data/url.py +0 -299
- langflow/components/data/web_search.py +0 -112
- langflow/components/data/webhook.py +0 -56
- langflow/components/datastax/__init__.py +0 -70
- langflow/components/datastax/astra_assistant_manager.py +0 -306
- langflow/components/datastax/astra_db.py +0 -69
- langflow/components/datastax/astra_vectorize.py +0 -124
- langflow/components/datastax/astradb_cql.py +0 -314
- langflow/components/datastax/astradb_graph.py +0 -319
- langflow/components/datastax/astradb_tool.py +0 -414
- langflow/components/datastax/astradb_vectorstore.py +0 -1285
- langflow/components/datastax/create_assistant.py +0 -58
- langflow/components/datastax/create_thread.py +0 -32
- langflow/components/datastax/dotenv.py +0 -35
- langflow/components/datastax/get_assistant.py +0 -37
- langflow/components/datastax/getenvvar.py +0 -30
- langflow/components/datastax/graph_rag.py +0 -141
- langflow/components/datastax/hcd.py +0 -314
- langflow/components/datastax/list_assistants.py +0 -25
- langflow/components/datastax/run.py +0 -89
- langflow/components/deactivated/__init__.py +0 -19
- langflow/components/deactivated/amazon_kendra.py +0 -66
- langflow/components/deactivated/chat_litellm_model.py +0 -158
- langflow/components/deactivated/code_block_extractor.py +0 -26
- langflow/components/deactivated/documents_to_data.py +0 -22
- langflow/components/deactivated/embed.py +0 -16
- langflow/components/deactivated/extract_key_from_data.py +0 -46
- langflow/components/deactivated/json_document_builder.py +0 -59
- langflow/components/deactivated/list_flows.py +0 -20
- langflow/components/deactivated/mcp_sse.py +0 -61
- langflow/components/deactivated/mcp_stdio.py +0 -62
- langflow/components/deactivated/merge_data.py +0 -93
- langflow/components/deactivated/message.py +0 -37
- langflow/components/deactivated/metal.py +0 -54
- langflow/components/deactivated/multi_query.py +0 -59
- langflow/components/deactivated/retriever.py +0 -43
- langflow/components/deactivated/selective_passthrough.py +0 -77
- langflow/components/deactivated/should_run_next.py +0 -40
- langflow/components/deactivated/split_text.py +0 -63
- langflow/components/deactivated/store_message.py +0 -24
- langflow/components/deactivated/sub_flow.py +0 -124
- langflow/components/deactivated/vectara_self_query.py +0 -76
- langflow/components/deactivated/vector_store.py +0 -24
- langflow/components/deepseek/__init__.py +0 -34
- langflow/components/deepseek/deepseek.py +0 -136
- langflow/components/docling/__init__.py +0 -43
- langflow/components/docling/chunk_docling_document.py +0 -186
- langflow/components/docling/docling_inline.py +0 -235
- langflow/components/docling/docling_remote.py +0 -193
- langflow/components/docling/export_docling_document.py +0 -117
- langflow/components/documentloaders/__init__.py +0 -0
- langflow/components/duckduckgo/__init__.py +0 -3
- langflow/components/duckduckgo/duck_duck_go_search_run.py +0 -92
- langflow/components/elastic/__init__.py +0 -37
- langflow/components/elastic/elasticsearch.py +0 -267
- langflow/components/elastic/opensearch.py +0 -243
- langflow/components/embeddings/__init__.py +0 -37
- langflow/components/embeddings/similarity.py +0 -76
- langflow/components/embeddings/text_embedder.py +0 -64
- langflow/components/exa/__init__.py +0 -3
- langflow/components/exa/exa_search.py +0 -68
- langflow/components/firecrawl/__init__.py +0 -43
- langflow/components/firecrawl/firecrawl_crawl_api.py +0 -88
- langflow/components/firecrawl/firecrawl_extract_api.py +0 -136
- langflow/components/firecrawl/firecrawl_map_api.py +0 -89
- langflow/components/firecrawl/firecrawl_scrape_api.py +0 -73
- langflow/components/git/__init__.py +0 -4
- langflow/components/git/git.py +0 -262
- langflow/components/git/gitextractor.py +0 -196
- langflow/components/glean/__init__.py +0 -3
- langflow/components/glean/glean_search_api.py +0 -173
- langflow/components/google/__init__.py +0 -17
- langflow/components/google/gmail.py +0 -192
- langflow/components/google/google_bq_sql_executor.py +0 -157
- langflow/components/google/google_drive.py +0 -92
- langflow/components/google/google_drive_search.py +0 -152
- langflow/components/google/google_generative_ai.py +0 -147
- langflow/components/google/google_generative_ai_embeddings.py +0 -141
- langflow/components/google/google_oauth_token.py +0 -89
- langflow/components/google/google_search_api_core.py +0 -68
- langflow/components/google/google_serper_api_core.py +0 -74
- langflow/components/groq/__init__.py +0 -34
- langflow/components/groq/groq.py +0 -140
- langflow/components/helpers/__init__.py +0 -52
- langflow/components/helpers/calculator_core.py +0 -89
- langflow/components/helpers/create_list.py +0 -40
- langflow/components/helpers/current_date.py +0 -42
- langflow/components/helpers/id_generator.py +0 -42
- langflow/components/helpers/memory.py +0 -251
- langflow/components/helpers/output_parser.py +0 -45
- langflow/components/helpers/store_message.py +0 -90
- langflow/components/homeassistant/__init__.py +0 -7
- langflow/components/homeassistant/home_assistant_control.py +0 -152
- langflow/components/homeassistant/list_home_assistant_states.py +0 -137
- langflow/components/huggingface/__init__.py +0 -37
- langflow/components/huggingface/huggingface.py +0 -197
- langflow/components/huggingface/huggingface_inference_api.py +0 -106
- langflow/components/ibm/__init__.py +0 -34
- langflow/components/ibm/watsonx.py +0 -203
- langflow/components/ibm/watsonx_embeddings.py +0 -135
- langflow/components/icosacomputing/__init__.py +0 -5
- langflow/components/icosacomputing/combinatorial_reasoner.py +0 -84
- langflow/components/input_output/__init__.py +0 -38
- langflow/components/input_output/chat.py +0 -120
- langflow/components/input_output/chat_output.py +0 -200
- langflow/components/input_output/text.py +0 -27
- langflow/components/input_output/text_output.py +0 -29
- langflow/components/jigsawstack/__init__.py +0 -23
- langflow/components/jigsawstack/ai_scrape.py +0 -126
- langflow/components/jigsawstack/ai_web_search.py +0 -136
- langflow/components/jigsawstack/file_read.py +0 -115
- langflow/components/jigsawstack/file_upload.py +0 -94
- langflow/components/jigsawstack/image_generation.py +0 -205
- langflow/components/jigsawstack/nsfw.py +0 -60
- langflow/components/jigsawstack/object_detection.py +0 -124
- langflow/components/jigsawstack/sentiment.py +0 -112
- langflow/components/jigsawstack/text_to_sql.py +0 -90
- langflow/components/jigsawstack/text_translate.py +0 -77
- langflow/components/jigsawstack/vocr.py +0 -107
- langflow/components/langchain_utilities/__init__.py +0 -109
- langflow/components/langchain_utilities/character.py +0 -53
- langflow/components/langchain_utilities/conversation.py +0 -52
- langflow/components/langchain_utilities/csv_agent.py +0 -107
- langflow/components/langchain_utilities/fake_embeddings.py +0 -26
- langflow/components/langchain_utilities/html_link_extractor.py +0 -35
- langflow/components/langchain_utilities/json_agent.py +0 -45
- langflow/components/langchain_utilities/langchain_hub.py +0 -126
- langflow/components/langchain_utilities/language_recursive.py +0 -49
- langflow/components/langchain_utilities/language_semantic.py +0 -138
- langflow/components/langchain_utilities/llm_checker.py +0 -39
- langflow/components/langchain_utilities/llm_math.py +0 -42
- langflow/components/langchain_utilities/natural_language.py +0 -61
- langflow/components/langchain_utilities/openai_tools.py +0 -53
- langflow/components/langchain_utilities/openapi.py +0 -48
- langflow/components/langchain_utilities/recursive_character.py +0 -60
- langflow/components/langchain_utilities/retrieval_qa.py +0 -83
- langflow/components/langchain_utilities/runnable_executor.py +0 -137
- langflow/components/langchain_utilities/self_query.py +0 -80
- langflow/components/langchain_utilities/spider.py +0 -142
- langflow/components/langchain_utilities/sql.py +0 -40
- langflow/components/langchain_utilities/sql_database.py +0 -35
- langflow/components/langchain_utilities/sql_generator.py +0 -78
- langflow/components/langchain_utilities/tool_calling.py +0 -59
- langflow/components/langchain_utilities/vector_store_info.py +0 -49
- langflow/components/langchain_utilities/vector_store_router.py +0 -33
- langflow/components/langchain_utilities/xml_agent.py +0 -71
- langflow/components/langwatch/__init__.py +0 -3
- langflow/components/langwatch/langwatch.py +0 -278
- langflow/components/link_extractors/__init__.py +0 -0
- langflow/components/lmstudio/__init__.py +0 -34
- langflow/components/lmstudio/lmstudioembeddings.py +0 -89
- langflow/components/lmstudio/lmstudiomodel.py +0 -129
- langflow/components/logic/__init__.py +0 -52
- langflow/components/logic/conditional_router.py +0 -171
- langflow/components/logic/data_conditional_router.py +0 -125
- langflow/components/logic/flow_tool.py +0 -110
- langflow/components/logic/listen.py +0 -29
- langflow/components/logic/loop.py +0 -125
- langflow/components/logic/notify.py +0 -88
- langflow/components/logic/pass_message.py +0 -35
- langflow/components/logic/run_flow.py +0 -71
- langflow/components/logic/sub_flow.py +0 -114
- langflow/components/maritalk/__init__.py +0 -32
- langflow/components/maritalk/maritalk.py +0 -52
- langflow/components/mem0/__init__.py +0 -3
- langflow/components/mem0/mem0_chat_memory.py +0 -136
- langflow/components/milvus/__init__.py +0 -34
- langflow/components/milvus/milvus.py +0 -115
- langflow/components/mistral/__init__.py +0 -37
- langflow/components/mistral/mistral.py +0 -114
- langflow/components/mistral/mistral_embeddings.py +0 -58
- langflow/components/models/__init__.py +0 -34
- langflow/components/models/embedding_model.py +0 -114
- langflow/components/models/language_model.py +0 -144
- langflow/components/mongodb/__init__.py +0 -34
- langflow/components/mongodb/mongodb_atlas.py +0 -213
- langflow/components/needle/__init__.py +0 -3
- langflow/components/needle/needle.py +0 -104
- langflow/components/notdiamond/__init__.py +0 -36
- langflow/components/notdiamond/notdiamond.py +0 -228
- langflow/components/novita/__init__.py +0 -32
- langflow/components/novita/novita.py +0 -130
- langflow/components/nvidia/__init__.py +0 -57
- langflow/components/nvidia/nvidia.py +0 -157
- langflow/components/nvidia/nvidia_embedding.py +0 -77
- langflow/components/nvidia/nvidia_ingest.py +0 -317
- langflow/components/nvidia/nvidia_rerank.py +0 -63
- langflow/components/nvidia/system_assist.py +0 -65
- langflow/components/olivya/__init__.py +0 -3
- langflow/components/olivya/olivya.py +0 -116
- langflow/components/ollama/__init__.py +0 -37
- langflow/components/ollama/ollama.py +0 -330
- langflow/components/ollama/ollama_embeddings.py +0 -106
- langflow/components/openai/__init__.py +0 -37
- langflow/components/openai/openai.py +0 -100
- langflow/components/openai/openai_chat_model.py +0 -158
- langflow/components/openrouter/__init__.py +0 -32
- langflow/components/openrouter/openrouter.py +0 -202
- langflow/components/output_parsers/__init__.py +0 -0
- langflow/components/perplexity/__init__.py +0 -34
- langflow/components/perplexity/perplexity.py +0 -75
- langflow/components/pgvector/__init__.py +0 -34
- langflow/components/pgvector/pgvector.py +0 -72
- langflow/components/pinecone/__init__.py +0 -34
- langflow/components/pinecone/pinecone.py +0 -134
- langflow/components/processing/alter_metadata.py +0 -108
- langflow/components/processing/batch_run.py +0 -205
- langflow/components/processing/combine_text.py +0 -39
- langflow/components/processing/create_data.py +0 -110
- langflow/components/processing/data_operations.py +0 -438
- langflow/components/processing/data_to_dataframe.py +0 -70
- langflow/components/processing/dataframe_operations.py +0 -321
- langflow/components/processing/extract_key.py +0 -53
- langflow/components/processing/filter_data.py +0 -42
- langflow/components/processing/filter_data_values.py +0 -88
- langflow/components/processing/json_cleaner.py +0 -103
- langflow/components/processing/lambda_filter.py +0 -154
- langflow/components/processing/llm_router.py +0 -499
- langflow/components/processing/merge_data.py +0 -90
- langflow/components/processing/message_to_data.py +0 -36
- langflow/components/processing/parse_data.py +0 -70
- langflow/components/processing/parse_dataframe.py +0 -68
- langflow/components/processing/parse_json_data.py +0 -90
- langflow/components/processing/parser.py +0 -143
- langflow/components/processing/prompt.py +0 -67
- langflow/components/processing/python_repl_core.py +0 -98
- langflow/components/processing/regex.py +0 -82
- langflow/components/processing/save_file.py +0 -208
- langflow/components/processing/select_data.py +0 -48
- langflow/components/processing/split_text.py +0 -141
- langflow/components/processing/structured_output.py +0 -202
- langflow/components/processing/update_data.py +0 -160
- langflow/components/prototypes/__init__.py +0 -34
- langflow/components/prototypes/python_function.py +0 -73
- langflow/components/qdrant/__init__.py +0 -34
- langflow/components/qdrant/qdrant.py +0 -109
- langflow/components/redis/__init__.py +0 -37
- langflow/components/redis/redis.py +0 -89
- langflow/components/redis/redis_chat.py +0 -43
- langflow/components/sambanova/__init__.py +0 -32
- langflow/components/sambanova/sambanova.py +0 -84
- langflow/components/scrapegraph/__init__.py +0 -40
- langflow/components/scrapegraph/scrapegraph_markdownify_api.py +0 -64
- langflow/components/scrapegraph/scrapegraph_search_api.py +0 -64
- langflow/components/scrapegraph/scrapegraph_smart_scraper_api.py +0 -71
- langflow/components/searchapi/__init__.py +0 -36
- langflow/components/searchapi/search.py +0 -79
- langflow/components/serpapi/__init__.py +0 -3
- langflow/components/serpapi/serp.py +0 -115
- langflow/components/serper/__init__.py +0 -3
- langflow/components/serper/google_serper_api_core.py +0 -74
- langflow/components/supabase/__init__.py +0 -37
- langflow/components/supabase/supabase.py +0 -76
- langflow/components/tavily/__init__.py +0 -4
- langflow/components/tavily/tavily_extract.py +0 -117
- langflow/components/tavily/tavily_search.py +0 -212
- langflow/components/textsplitters/__init__.py +0 -0
- langflow/components/toolkits/__init__.py +0 -0
- langflow/components/tools/__init__.py +0 -72
- langflow/components/tools/calculator.py +0 -103
- langflow/components/tools/google_search_api.py +0 -45
- langflow/components/tools/google_serper_api.py +0 -115
- langflow/components/tools/python_code_structured_tool.py +0 -327
- langflow/components/tools/python_repl.py +0 -97
- langflow/components/tools/search_api.py +0 -87
- langflow/components/tools/searxng.py +0 -145
- langflow/components/tools/serp_api.py +0 -119
- langflow/components/tools/tavily_search_tool.py +0 -344
- langflow/components/tools/wikidata_api.py +0 -102
- langflow/components/tools/wikipedia_api.py +0 -49
- langflow/components/tools/yahoo_finance.py +0 -124
- langflow/components/twelvelabs/__init__.py +0 -52
- langflow/components/twelvelabs/convert_astra_results.py +0 -84
- langflow/components/twelvelabs/pegasus_index.py +0 -311
- langflow/components/twelvelabs/split_video.py +0 -291
- langflow/components/twelvelabs/text_embeddings.py +0 -57
- langflow/components/twelvelabs/twelvelabs_pegasus.py +0 -408
- langflow/components/twelvelabs/video_embeddings.py +0 -100
- langflow/components/twelvelabs/video_file.py +0 -179
- langflow/components/unstructured/__init__.py +0 -3
- langflow/components/unstructured/unstructured.py +0 -121
- langflow/components/upstash/__init__.py +0 -34
- langflow/components/upstash/upstash.py +0 -124
- langflow/components/vectara/__init__.py +0 -37
- langflow/components/vectara/vectara.py +0 -97
- langflow/components/vectara/vectara_rag.py +0 -164
- langflow/components/vectorstores/__init__.py +0 -34
- langflow/components/vectorstores/local_db.py +0 -261
- langflow/components/vertexai/__init__.py +0 -37
- langflow/components/vertexai/vertexai.py +0 -71
- langflow/components/vertexai/vertexai_embeddings.py +0 -67
- langflow/components/weaviate/__init__.py +0 -34
- langflow/components/weaviate/weaviate.py +0 -89
- langflow/components/wikipedia/__init__.py +0 -4
- langflow/components/wikipedia/wikidata.py +0 -86
- langflow/components/wikipedia/wikipedia.py +0 -53
- langflow/components/wolframalpha/__init__.py +0 -3
- langflow/components/wolframalpha/wolfram_alpha_api.py +0 -54
- langflow/components/xai/__init__.py +0 -32
- langflow/components/xai/xai.py +0 -167
- langflow/components/yahoosearch/__init__.py +0 -3
- langflow/components/yahoosearch/yahoo.py +0 -137
- langflow/components/youtube/__init__.py +0 -52
- langflow/components/youtube/channel.py +0 -227
- langflow/components/youtube/comments.py +0 -231
- langflow/components/youtube/playlist.py +0 -33
- langflow/components/youtube/search.py +0 -120
- langflow/components/youtube/trending.py +0 -285
- langflow/components/youtube/video_details.py +0 -263
- langflow/components/youtube/youtube_transcripts.py +0 -118
- langflow/components/zep/__init__.py +0 -3
- langflow/components/zep/zep.py +0 -44
- langflow/custom/attributes.py +0 -86
- langflow/custom/code_parser/__init__.py +0 -3
- langflow/custom/code_parser/code_parser.py +0 -361
- langflow/custom/custom_component/base_component.py +0 -118
- langflow/custom/dependency_analyzer.py +0 -165
- langflow/custom/directory_reader/__init__.py +0 -3
- langflow/custom/directory_reader/directory_reader.py +0 -359
- langflow/custom/directory_reader/utils.py +0 -171
- langflow/custom/eval.py +0 -12
- langflow/custom/schema.py +0 -32
- langflow/custom/tree_visitor.py +0 -21
- langflow/frontend/assets/lazyIconImports-Ci-S9xBA.js +0 -2
- langflow/graph/edge/__init__.py +0 -0
- langflow/graph/edge/base.py +0 -277
- langflow/graph/edge/schema.py +0 -119
- langflow/graph/edge/utils.py +0 -0
- langflow/graph/graph/__init__.py +0 -0
- langflow/graph/graph/ascii.py +0 -202
- langflow/graph/graph/base.py +0 -2185
- langflow/graph/graph/constants.py +0 -58
- langflow/graph/graph/runnable_vertices_manager.py +0 -133
- langflow/graph/graph/schema.py +0 -53
- langflow/graph/graph/state_model.py +0 -66
- langflow/graph/graph/utils.py +0 -1024
- langflow/graph/schema.py +0 -75
- langflow/graph/state/__init__.py +0 -0
- langflow/graph/state/model.py +0 -237
- langflow/graph/utils.py +0 -229
- langflow/graph/vertex/__init__.py +0 -0
- langflow/graph/vertex/base.py +0 -811
- langflow/graph/vertex/constants.py +0 -0
- langflow/graph/vertex/exceptions.py +0 -4
- langflow/graph/vertex/param_handler.py +0 -255
- langflow/graph/vertex/schema.py +0 -26
- langflow/graph/vertex/utils.py +0 -19
- langflow/graph/vertex/vertex_types.py +0 -489
- langflow/legacy_custom/__init__.py +0 -0
- langflow/legacy_custom/customs.py +0 -16
- langflow/load/load.py +0 -250
- langflow/logging/logger.py +0 -369
- langflow/processing/utils.py +0 -25
- langflow/schema/openai_responses_schemas.py +0 -74
- langflow/schema/serialize.py +0 -13
- langflow/services/chat/config.py +0 -2
- langflow/services/settings/auth.py +0 -130
- langflow/services/settings/constants.py +0 -31
- langflow/services/settings/manager.py +0 -49
- langflow/services/settings/utils.py +0 -40
- langflow/template/field/prompt.py +0 -2
- langflow/template/frontend_node/__init__.py +0 -6
- langflow/template/frontend_node/base.py +0 -212
- langflow/template/frontend_node/constants.py +0 -65
- langflow/template/frontend_node/custom_components.py +0 -97
- langflow/template/template/__init__.py +0 -0
- langflow/template/template/base.py +0 -99
- langflow/utils/async_helpers.py +0 -42
- langflow/utils/concurrency.py +0 -60
- langflow/utils/util_strings.py +0 -56
- langflow_base_nightly-0.5.1.dev3.dist-info/RECORD +0 -1159
- {langflow_base_nightly-0.5.1.dev3.dist-info → langflow_base_nightly-0.5.1.dev5.dist-info}/WHEEL +0 -0
- {langflow_base_nightly-0.5.1.dev3.dist-info → langflow_base_nightly-0.5.1.dev5.dist-info}/entry_points.txt +0 -0
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
from langflow.custom.custom_component.component import Component
|
|
2
|
-
from langflow.io import DataInput, Output
|
|
3
|
-
from langflow.logging.logger import logger
|
|
4
|
-
from langflow.schema.data import Data
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
class MergeDataComponent(Component):
|
|
8
|
-
"""MergeDataComponent is responsible for combining multiple Data objects into a unified list of Data objects.
|
|
9
|
-
|
|
10
|
-
It ensures that all keys across the input Data objects are present in each merged Data object.
|
|
11
|
-
Missing keys are filled with empty strings to maintain consistency.
|
|
12
|
-
"""
|
|
13
|
-
|
|
14
|
-
display_name = "Merge Data"
|
|
15
|
-
description = (
|
|
16
|
-
"Combines multiple Data objects into a unified list, ensuring all keys are present in each Data object."
|
|
17
|
-
)
|
|
18
|
-
icon = "merge"
|
|
19
|
-
|
|
20
|
-
inputs = [
|
|
21
|
-
DataInput(
|
|
22
|
-
name="data_inputs",
|
|
23
|
-
display_name="Data Inputs",
|
|
24
|
-
is_list=True,
|
|
25
|
-
info="A list of Data inputs objects to be merged.",
|
|
26
|
-
),
|
|
27
|
-
]
|
|
28
|
-
|
|
29
|
-
outputs = [
|
|
30
|
-
Output(
|
|
31
|
-
display_name="Merged Data",
|
|
32
|
-
name="merged_data",
|
|
33
|
-
method="merge_data",
|
|
34
|
-
),
|
|
35
|
-
]
|
|
36
|
-
|
|
37
|
-
def merge_data(self) -> list[Data]:
|
|
38
|
-
"""Merges multiple Data objects into a single list of Data objects.
|
|
39
|
-
|
|
40
|
-
Ensures that all keys from the input Data objects are present in each merged Data object.
|
|
41
|
-
Missing keys are filled with empty strings.
|
|
42
|
-
|
|
43
|
-
Returns:
|
|
44
|
-
List[Data]: A list of merged Data objects with consistent keys.
|
|
45
|
-
"""
|
|
46
|
-
logger.info("Initiating the data merging process.")
|
|
47
|
-
|
|
48
|
-
data_inputs: list[Data] = self.data_inputs
|
|
49
|
-
logger.debug(f"Received {len(data_inputs)} data input(s) for merging.")
|
|
50
|
-
|
|
51
|
-
if not data_inputs:
|
|
52
|
-
logger.warning("No data inputs provided. Returning an empty list.")
|
|
53
|
-
return []
|
|
54
|
-
|
|
55
|
-
# Collect all unique keys from all Data objects
|
|
56
|
-
all_keys: set[str] = set()
|
|
57
|
-
for idx, data_input in enumerate(data_inputs):
|
|
58
|
-
if not isinstance(data_input, Data):
|
|
59
|
-
error_message = f"Data input at index {idx} is not of type Data."
|
|
60
|
-
logger.error(error_message)
|
|
61
|
-
type_error_message = (
|
|
62
|
-
f"All items in data_inputs must be of type Data. Item at index {idx} is {type(data_input)}"
|
|
63
|
-
)
|
|
64
|
-
raise TypeError(type_error_message)
|
|
65
|
-
all_keys.update(data_input.data.keys())
|
|
66
|
-
logger.debug(f"Collected {len(all_keys)} unique key(s) from input data.")
|
|
67
|
-
|
|
68
|
-
try:
|
|
69
|
-
# Create new list of Data objects with missing keys filled with empty strings
|
|
70
|
-
merged_data_list = []
|
|
71
|
-
for idx, data_input in enumerate(data_inputs):
|
|
72
|
-
merged_data_dict = {}
|
|
73
|
-
|
|
74
|
-
for key in all_keys:
|
|
75
|
-
# Use the existing value if the key exists, otherwise use an empty string
|
|
76
|
-
value = data_input.data.get(key, "")
|
|
77
|
-
if key not in data_input.data:
|
|
78
|
-
log_message = f"Key '{key}' missing in data input at index {idx}. Assigning empty string."
|
|
79
|
-
logger.debug(log_message)
|
|
80
|
-
merged_data_dict[key] = value
|
|
81
|
-
|
|
82
|
-
merged_data = Data(
|
|
83
|
-
text_key=data_input.text_key, data=merged_data_dict, default_value=data_input.default_value
|
|
84
|
-
)
|
|
85
|
-
merged_data_list.append(merged_data)
|
|
86
|
-
logger.debug(f"Merged Data object created for input at index {idx}.")
|
|
87
|
-
|
|
88
|
-
except Exception:
|
|
89
|
-
logger.exception("An error occurred during the data merging process.")
|
|
90
|
-
raise
|
|
91
|
-
|
|
92
|
-
logger.info("Data merging process completed successfully.")
|
|
93
|
-
return merged_data_list
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
from langflow.custom.custom_component.custom_component import CustomComponent
|
|
2
|
-
from langflow.schema.message import Message
|
|
3
|
-
from langflow.utils.constants import MESSAGE_SENDER_AI, MESSAGE_SENDER_USER
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
class MessageComponent(CustomComponent):
|
|
7
|
-
display_name = "Message"
|
|
8
|
-
description = "Creates a Message object given a Session ID."
|
|
9
|
-
name = "Message"
|
|
10
|
-
|
|
11
|
-
def build_config(self):
|
|
12
|
-
return {
|
|
13
|
-
"sender": {
|
|
14
|
-
"options": [MESSAGE_SENDER_AI, MESSAGE_SENDER_USER],
|
|
15
|
-
"display_name": "Sender Type",
|
|
16
|
-
},
|
|
17
|
-
"sender_name": {"display_name": "Sender Name"},
|
|
18
|
-
"text": {"display_name": "Text"},
|
|
19
|
-
"session_id": {
|
|
20
|
-
"display_name": "Session ID",
|
|
21
|
-
"info": "Session ID of the chat history.",
|
|
22
|
-
"input_types": ["Message"],
|
|
23
|
-
},
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
def build(
|
|
27
|
-
self,
|
|
28
|
-
sender: str = MESSAGE_SENDER_USER,
|
|
29
|
-
sender_name: str | None = None,
|
|
30
|
-
session_id: str | None = None,
|
|
31
|
-
text: str = "",
|
|
32
|
-
) -> Message:
|
|
33
|
-
flow_id = self.graph.flow_id if hasattr(self, "graph") else None
|
|
34
|
-
message = Message(text=text, sender=sender, sender_name=sender_name, flow_id=flow_id, session_id=session_id)
|
|
35
|
-
|
|
36
|
-
self.status = message
|
|
37
|
-
return message
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
# mypy: disable-error-code="attr-defined"
|
|
2
|
-
from langchain_community.retrievers import MetalRetriever
|
|
3
|
-
|
|
4
|
-
from langflow.base.vectorstores.model import check_cached_vector_store
|
|
5
|
-
from langflow.custom.custom_component.custom_component import CustomComponent
|
|
6
|
-
from langflow.io import DictInput, SecretStrInput, StrInput
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
class MetalRetrieverComponent(CustomComponent):
|
|
10
|
-
display_name: str = "Metal Retriever"
|
|
11
|
-
description: str = "Retriever that uses the Metal API."
|
|
12
|
-
name = "MetalRetriever"
|
|
13
|
-
legacy = True
|
|
14
|
-
|
|
15
|
-
inputs = [
|
|
16
|
-
SecretStrInput(
|
|
17
|
-
name="api_key",
|
|
18
|
-
display_name="API Key",
|
|
19
|
-
required=True,
|
|
20
|
-
),
|
|
21
|
-
SecretStrInput(
|
|
22
|
-
name="client_id",
|
|
23
|
-
display_name="Client ID",
|
|
24
|
-
required=True,
|
|
25
|
-
),
|
|
26
|
-
StrInput(
|
|
27
|
-
name="index_id",
|
|
28
|
-
display_name="Index ID",
|
|
29
|
-
required=True,
|
|
30
|
-
),
|
|
31
|
-
DictInput(
|
|
32
|
-
name="params",
|
|
33
|
-
display_name="Parameters",
|
|
34
|
-
required=False,
|
|
35
|
-
),
|
|
36
|
-
]
|
|
37
|
-
|
|
38
|
-
@check_cached_vector_store
|
|
39
|
-
def build_vector_store(self) -> MetalRetriever:
|
|
40
|
-
"""Builds the Metal Retriever."""
|
|
41
|
-
try:
|
|
42
|
-
from langchain_community.retrievers import MetalRetriever
|
|
43
|
-
from metal_sdk.metal import Metal
|
|
44
|
-
except ImportError as e:
|
|
45
|
-
msg = "Could not import Metal. Please install it with `pip install metal-sdk langchain-community`."
|
|
46
|
-
raise ImportError(msg) from e
|
|
47
|
-
|
|
48
|
-
try:
|
|
49
|
-
metal = Metal(api_key=self.api_key, client_id=self.client_id, index_id=self.index_id)
|
|
50
|
-
except Exception as e:
|
|
51
|
-
msg = "Could not connect to Metal API."
|
|
52
|
-
raise ValueError(msg) from e
|
|
53
|
-
|
|
54
|
-
return MetalRetriever(client=metal, params=self.params or {})
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
from langchain.prompts import PromptTemplate
|
|
2
|
-
from langchain.retrievers import MultiQueryRetriever
|
|
3
|
-
|
|
4
|
-
from langflow.custom.custom_component.custom_component import CustomComponent
|
|
5
|
-
from langflow.field_typing import BaseRetriever, LanguageModel, Text
|
|
6
|
-
from langflow.inputs.inputs import HandleInput, StrInput
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
class MultiQueryRetrieverComponent(CustomComponent):
|
|
10
|
-
display_name = "MultiQueryRetriever"
|
|
11
|
-
description = "Initialize from llm using default template."
|
|
12
|
-
documentation = "https://python.langchain.com/docs/modules/data_connection/retrievers/how_to/MultiQueryRetriever"
|
|
13
|
-
name = "MultiQueryRetriever"
|
|
14
|
-
legacy = True
|
|
15
|
-
|
|
16
|
-
inputs = [
|
|
17
|
-
HandleInput(
|
|
18
|
-
name="llm",
|
|
19
|
-
display_name="LLM",
|
|
20
|
-
input_types=["LanguageModel"],
|
|
21
|
-
required=True,
|
|
22
|
-
),
|
|
23
|
-
HandleInput(
|
|
24
|
-
name="retriever",
|
|
25
|
-
display_name="Retriever",
|
|
26
|
-
input_types=["BaseRetriever"],
|
|
27
|
-
required=True,
|
|
28
|
-
),
|
|
29
|
-
StrInput(
|
|
30
|
-
name="prompt",
|
|
31
|
-
display_name="Prompt",
|
|
32
|
-
value="You are an AI language model assistant. Your task is \n"
|
|
33
|
-
"to generate 3 different versions of the given user \n"
|
|
34
|
-
"question to retrieve relevant documents from a vector database. \n"
|
|
35
|
-
"By generating multiple perspectives on the user question, \n"
|
|
36
|
-
"your goal is to help the user overcome some of the limitations \n"
|
|
37
|
-
"of distance-based similarity search. Provide these alternative \n"
|
|
38
|
-
"questions separated by newlines. Original question: {question}",
|
|
39
|
-
required=False,
|
|
40
|
-
),
|
|
41
|
-
StrInput(
|
|
42
|
-
name="parser_key",
|
|
43
|
-
display_name="Parser Key",
|
|
44
|
-
value="lines",
|
|
45
|
-
required=False,
|
|
46
|
-
),
|
|
47
|
-
]
|
|
48
|
-
|
|
49
|
-
def build(
|
|
50
|
-
self,
|
|
51
|
-
llm: LanguageModel,
|
|
52
|
-
retriever: BaseRetriever,
|
|
53
|
-
prompt: Text | None = None,
|
|
54
|
-
parser_key: str = "lines",
|
|
55
|
-
) -> MultiQueryRetriever:
|
|
56
|
-
if not prompt:
|
|
57
|
-
return MultiQueryRetriever.from_llm(llm=llm, retriever=retriever, parser_key=parser_key)
|
|
58
|
-
prompt_template = PromptTemplate.from_template(prompt)
|
|
59
|
-
return MultiQueryRetriever.from_llm(llm=llm, retriever=retriever, prompt=prompt_template, parser_key=parser_key)
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
from langchain_core.tools import create_retriever_tool
|
|
2
|
-
|
|
3
|
-
from langflow.custom.custom_component.custom_component import CustomComponent
|
|
4
|
-
from langflow.field_typing import BaseRetriever, Tool
|
|
5
|
-
from langflow.io import HandleInput, StrInput
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
class RetrieverToolComponent(CustomComponent):
|
|
9
|
-
display_name = "RetrieverTool"
|
|
10
|
-
description = "Tool for interacting with retriever"
|
|
11
|
-
name = "RetrieverTool"
|
|
12
|
-
icon = "LangChain"
|
|
13
|
-
legacy = True
|
|
14
|
-
|
|
15
|
-
inputs = [
|
|
16
|
-
HandleInput(
|
|
17
|
-
name="retriever",
|
|
18
|
-
display_name="Retriever",
|
|
19
|
-
info="Retriever to interact with",
|
|
20
|
-
input_types=["Retriever"],
|
|
21
|
-
required=True,
|
|
22
|
-
),
|
|
23
|
-
StrInput(
|
|
24
|
-
name="name",
|
|
25
|
-
display_name="Name",
|
|
26
|
-
info="Name of the tool",
|
|
27
|
-
required=True,
|
|
28
|
-
),
|
|
29
|
-
StrInput(
|
|
30
|
-
name="description",
|
|
31
|
-
display_name="Description",
|
|
32
|
-
info="Description of the tool",
|
|
33
|
-
required=True,
|
|
34
|
-
),
|
|
35
|
-
]
|
|
36
|
-
|
|
37
|
-
def build(self, retriever: BaseRetriever, name: str, description: str, **kwargs) -> Tool:
|
|
38
|
-
_ = kwargs
|
|
39
|
-
return create_retriever_tool(
|
|
40
|
-
retriever=retriever,
|
|
41
|
-
name=name,
|
|
42
|
-
description=description,
|
|
43
|
-
)
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
from langflow.custom.custom_component.component import Component
|
|
2
|
-
from langflow.field_typing import Text
|
|
3
|
-
from langflow.io import BoolInput, DropdownInput, MessageTextInput, Output
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
class SelectivePassThroughComponent(Component):
|
|
7
|
-
display_name = "Selective Pass Through"
|
|
8
|
-
description = "Passes the specified value if a specified condition is met."
|
|
9
|
-
icon = "filter"
|
|
10
|
-
name = "SelectivePassThrough"
|
|
11
|
-
|
|
12
|
-
inputs = [
|
|
13
|
-
MessageTextInput(
|
|
14
|
-
name="input_value",
|
|
15
|
-
display_name="Input Value",
|
|
16
|
-
info="The primary input value to evaluate.",
|
|
17
|
-
),
|
|
18
|
-
MessageTextInput(
|
|
19
|
-
name="comparison_value",
|
|
20
|
-
display_name="Comparison Value",
|
|
21
|
-
info="The value to compare against the input value.",
|
|
22
|
-
),
|
|
23
|
-
DropdownInput(
|
|
24
|
-
name="operator",
|
|
25
|
-
display_name="Operator",
|
|
26
|
-
options=["equals", "not equals", "contains", "starts with", "ends with"],
|
|
27
|
-
info="Condition to evaluate the input value.",
|
|
28
|
-
),
|
|
29
|
-
MessageTextInput(
|
|
30
|
-
name="value_to_pass",
|
|
31
|
-
display_name="Value to Pass",
|
|
32
|
-
info="The value to pass if the condition is met.",
|
|
33
|
-
),
|
|
34
|
-
BoolInput(
|
|
35
|
-
name="case_sensitive",
|
|
36
|
-
display_name="Case Sensitive",
|
|
37
|
-
info="If true, the comparison will be case sensitive.",
|
|
38
|
-
value=False,
|
|
39
|
-
advanced=True,
|
|
40
|
-
),
|
|
41
|
-
]
|
|
42
|
-
|
|
43
|
-
outputs = [
|
|
44
|
-
Output(display_name="Passed Output", name="passed_output", method="pass_through"),
|
|
45
|
-
]
|
|
46
|
-
|
|
47
|
-
def evaluate_condition(
|
|
48
|
-
self, input_value: str, comparison_value: str, operator: str, *, case_sensitive: bool
|
|
49
|
-
) -> bool:
|
|
50
|
-
if not case_sensitive:
|
|
51
|
-
input_value = input_value.lower()
|
|
52
|
-
comparison_value = comparison_value.lower()
|
|
53
|
-
|
|
54
|
-
if operator == "equals":
|
|
55
|
-
return input_value == comparison_value
|
|
56
|
-
if operator == "not equals":
|
|
57
|
-
return input_value != comparison_value
|
|
58
|
-
if operator == "contains":
|
|
59
|
-
return comparison_value in input_value
|
|
60
|
-
if operator == "starts with":
|
|
61
|
-
return input_value.startswith(comparison_value)
|
|
62
|
-
if operator == "ends with":
|
|
63
|
-
return input_value.endswith(comparison_value)
|
|
64
|
-
return False
|
|
65
|
-
|
|
66
|
-
def pass_through(self) -> Text:
|
|
67
|
-
input_value = self.input_value
|
|
68
|
-
comparison_value = self.comparison_value
|
|
69
|
-
operator = self.operator
|
|
70
|
-
value_to_pass = self.value_to_pass
|
|
71
|
-
case_sensitive = self.case_sensitive
|
|
72
|
-
|
|
73
|
-
if self.evaluate_condition(input_value, comparison_value, operator, case_sensitive=case_sensitive):
|
|
74
|
-
self.status = value_to_pass
|
|
75
|
-
return value_to_pass
|
|
76
|
-
self.status = ""
|
|
77
|
-
return ""
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
from langchain_core.messages import BaseMessage
|
|
2
|
-
from langchain_core.prompts import PromptTemplate
|
|
3
|
-
|
|
4
|
-
from langflow.custom.custom_component.custom_component import CustomComponent
|
|
5
|
-
from langflow.field_typing import LanguageModel, Text
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
class ShouldRunNextComponent(CustomComponent):
|
|
9
|
-
display_name = "Should Run Next"
|
|
10
|
-
description = "Determines if a vertex is runnable."
|
|
11
|
-
name = "ShouldRunNext"
|
|
12
|
-
|
|
13
|
-
def build(self, llm: LanguageModel, question: str, context: str, retries: int = 3) -> Text:
|
|
14
|
-
template = (
|
|
15
|
-
"Given the following question and the context below, answer with a yes or no.\n\n"
|
|
16
|
-
"{error_message}\n\n"
|
|
17
|
-
"Question: {question}\n\n" # noqa: RUF100, RUF027
|
|
18
|
-
"Context: {context}\n\n" # noqa: RUF100, RUF027
|
|
19
|
-
"Answer:"
|
|
20
|
-
)
|
|
21
|
-
|
|
22
|
-
prompt = PromptTemplate.from_template(template)
|
|
23
|
-
chain = prompt | llm
|
|
24
|
-
error_message = ""
|
|
25
|
-
for _i in range(retries):
|
|
26
|
-
result = chain.invoke(
|
|
27
|
-
{"question": question, "context": context, "error_message": error_message},
|
|
28
|
-
config={"callbacks": self.get_langchain_callbacks()},
|
|
29
|
-
)
|
|
30
|
-
if isinstance(result, BaseMessage):
|
|
31
|
-
content = result.content
|
|
32
|
-
elif isinstance(result, str):
|
|
33
|
-
content = result
|
|
34
|
-
if isinstance(content, str) and content.lower().strip() in {"yes", "no"}:
|
|
35
|
-
break
|
|
36
|
-
condition = str(content).lower().strip() == "yes"
|
|
37
|
-
self.status = f"Should Run Next: {condition}"
|
|
38
|
-
if condition is False:
|
|
39
|
-
self.stop()
|
|
40
|
-
return context
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
from langchain_text_splitters import CharacterTextSplitter
|
|
2
|
-
|
|
3
|
-
from langflow.custom.custom_component.component import Component
|
|
4
|
-
from langflow.io import HandleInput, IntInput, MessageTextInput, Output
|
|
5
|
-
from langflow.schema.data import Data
|
|
6
|
-
from langflow.utils.util import unescape_string
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
class SplitTextComponent(Component):
|
|
10
|
-
display_name: str = "Split Text"
|
|
11
|
-
description: str = "Split text into chunks based on specified criteria."
|
|
12
|
-
icon = "scissors-line-dashed"
|
|
13
|
-
name = "SplitText"
|
|
14
|
-
|
|
15
|
-
inputs = [
|
|
16
|
-
HandleInput(
|
|
17
|
-
name="data_inputs",
|
|
18
|
-
display_name="Data Inputs",
|
|
19
|
-
info="The data to split.",
|
|
20
|
-
input_types=["Data"],
|
|
21
|
-
is_list=True,
|
|
22
|
-
),
|
|
23
|
-
IntInput(
|
|
24
|
-
name="chunk_overlap",
|
|
25
|
-
display_name="Chunk Overlap",
|
|
26
|
-
info="Number of characters to overlap between chunks.",
|
|
27
|
-
value=200,
|
|
28
|
-
),
|
|
29
|
-
IntInput(
|
|
30
|
-
name="chunk_size",
|
|
31
|
-
display_name="Chunk Size",
|
|
32
|
-
info="The maximum number of characters in each chunk.",
|
|
33
|
-
value=1000,
|
|
34
|
-
),
|
|
35
|
-
MessageTextInput(
|
|
36
|
-
name="separator",
|
|
37
|
-
display_name="Separator",
|
|
38
|
-
info="The character to split on. Defaults to newline.",
|
|
39
|
-
value="\n",
|
|
40
|
-
),
|
|
41
|
-
]
|
|
42
|
-
|
|
43
|
-
outputs = [
|
|
44
|
-
Output(display_name="Chunks", name="chunks", method="split_text"),
|
|
45
|
-
]
|
|
46
|
-
|
|
47
|
-
def _docs_to_data(self, docs):
|
|
48
|
-
return [Data(text=doc.page_content, data=doc.metadata) for doc in docs]
|
|
49
|
-
|
|
50
|
-
def split_text(self) -> list[Data]:
|
|
51
|
-
separator = unescape_string(self.separator)
|
|
52
|
-
|
|
53
|
-
documents = [_input.to_lc_document() for _input in self.data_inputs if isinstance(_input, Data)]
|
|
54
|
-
|
|
55
|
-
splitter = CharacterTextSplitter(
|
|
56
|
-
chunk_overlap=self.chunk_overlap,
|
|
57
|
-
chunk_size=self.chunk_size,
|
|
58
|
-
separator=separator,
|
|
59
|
-
)
|
|
60
|
-
docs = splitter.split_documents(documents)
|
|
61
|
-
data = self._docs_to_data(docs)
|
|
62
|
-
self.status = data
|
|
63
|
-
return data
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
from langflow.custom.custom_component.custom_component import CustomComponent
|
|
2
|
-
from langflow.memory import aget_messages, astore_message
|
|
3
|
-
from langflow.schema.message import Message
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
class StoreMessageComponent(CustomComponent):
|
|
7
|
-
display_name = "Store Message"
|
|
8
|
-
description = "Stores a chat message."
|
|
9
|
-
name = "StoreMessage"
|
|
10
|
-
|
|
11
|
-
def build_config(self):
|
|
12
|
-
return {
|
|
13
|
-
"message": {"display_name": "Message"},
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
async def build(
|
|
17
|
-
self,
|
|
18
|
-
message: Message,
|
|
19
|
-
) -> Message:
|
|
20
|
-
flow_id = self.graph.flow_id if hasattr(self, "graph") else None
|
|
21
|
-
await astore_message(message, flow_id=flow_id)
|
|
22
|
-
self.status = await aget_messages()
|
|
23
|
-
|
|
24
|
-
return message
|
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
from typing import TYPE_CHECKING, Any
|
|
2
|
-
|
|
3
|
-
from langflow.base.flow_processing.utils import build_data_from_result_data
|
|
4
|
-
from langflow.custom.custom_component.custom_component import CustomComponent
|
|
5
|
-
from langflow.graph.graph.base import Graph
|
|
6
|
-
from langflow.graph.vertex.base import Vertex
|
|
7
|
-
from langflow.helpers.flow import get_flow_inputs
|
|
8
|
-
from langflow.logging.logger import logger
|
|
9
|
-
from langflow.schema.data import Data
|
|
10
|
-
from langflow.schema.dotdict import dotdict
|
|
11
|
-
from langflow.template.field.base import Input
|
|
12
|
-
|
|
13
|
-
if TYPE_CHECKING:
|
|
14
|
-
from langflow.graph.schema import RunOutputs
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
class SubFlowComponent(CustomComponent):
|
|
18
|
-
display_name = "Sub Flow"
|
|
19
|
-
description = (
|
|
20
|
-
"Dynamically Generates a Component from a Flow. The output is a list of data with keys 'result' and 'message'."
|
|
21
|
-
)
|
|
22
|
-
beta: bool = True
|
|
23
|
-
field_order = ["flow_name"]
|
|
24
|
-
name = "SubFlow"
|
|
25
|
-
|
|
26
|
-
async def get_flow_names(self) -> list[str]:
|
|
27
|
-
flow_datas = await self.alist_flows()
|
|
28
|
-
return [flow_data.data["name"] for flow_data in flow_datas]
|
|
29
|
-
|
|
30
|
-
async def get_flow(self, flow_name: str) -> Data | None:
|
|
31
|
-
flow_datas = await self.alist_flows()
|
|
32
|
-
for flow_data in flow_datas:
|
|
33
|
-
if flow_data.data["name"] == flow_name:
|
|
34
|
-
return flow_data
|
|
35
|
-
return None
|
|
36
|
-
|
|
37
|
-
async def update_build_config(self, build_config: dotdict, field_value: Any, field_name: str | None = None):
|
|
38
|
-
await logger.adebug(f"Updating build config with field value {field_value} and field name {field_name}")
|
|
39
|
-
if field_name == "flow_name":
|
|
40
|
-
build_config["flow_name"]["options"] = await self.get_flow_names()
|
|
41
|
-
# Clean up the build config
|
|
42
|
-
for key in list(build_config.keys()):
|
|
43
|
-
if key not in {*self.field_order, "code", "_type", "get_final_results_only"}:
|
|
44
|
-
del build_config[key]
|
|
45
|
-
if field_value is not None and field_name == "flow_name":
|
|
46
|
-
try:
|
|
47
|
-
flow_data = await self.get_flow(field_value)
|
|
48
|
-
except Exception: # noqa: BLE001
|
|
49
|
-
await logger.aexception(f"Error getting flow {field_value}")
|
|
50
|
-
else:
|
|
51
|
-
if not flow_data:
|
|
52
|
-
msg = f"Flow {field_value} not found."
|
|
53
|
-
await logger.aerror(msg)
|
|
54
|
-
else:
|
|
55
|
-
try:
|
|
56
|
-
graph = Graph.from_payload(flow_data.data["data"])
|
|
57
|
-
# Get all inputs from the graph
|
|
58
|
-
inputs = get_flow_inputs(graph)
|
|
59
|
-
# Add inputs to the build config
|
|
60
|
-
build_config = self.add_inputs_to_build_config(inputs, build_config)
|
|
61
|
-
except Exception: # noqa: BLE001
|
|
62
|
-
await logger.aexception(f"Error building graph for flow {field_value}")
|
|
63
|
-
|
|
64
|
-
return build_config
|
|
65
|
-
|
|
66
|
-
def add_inputs_to_build_config(self, inputs: list[Vertex], build_config: dotdict):
|
|
67
|
-
new_fields: list[Input] = []
|
|
68
|
-
for vertex in inputs:
|
|
69
|
-
field = Input(
|
|
70
|
-
display_name=vertex.display_name,
|
|
71
|
-
name=vertex.id,
|
|
72
|
-
info=vertex.description,
|
|
73
|
-
field_type="str",
|
|
74
|
-
value=None,
|
|
75
|
-
)
|
|
76
|
-
new_fields.append(field)
|
|
77
|
-
logger.debug(new_fields)
|
|
78
|
-
for field in new_fields:
|
|
79
|
-
build_config[field.name] = field.to_dict()
|
|
80
|
-
return build_config
|
|
81
|
-
|
|
82
|
-
def build_config(self):
|
|
83
|
-
return {
|
|
84
|
-
"input_value": {
|
|
85
|
-
"display_name": "Input Value",
|
|
86
|
-
"multiline": True,
|
|
87
|
-
},
|
|
88
|
-
"flow_name": {
|
|
89
|
-
"display_name": "Flow Name",
|
|
90
|
-
"info": "The name of the flow to run.",
|
|
91
|
-
"options": [],
|
|
92
|
-
"real_time_refresh": True,
|
|
93
|
-
"refresh_button": True,
|
|
94
|
-
},
|
|
95
|
-
"tweaks": {
|
|
96
|
-
"display_name": "Tweaks",
|
|
97
|
-
"info": "Tweaks to apply to the flow.",
|
|
98
|
-
},
|
|
99
|
-
"get_final_results_only": {
|
|
100
|
-
"display_name": "Get Final Results Only",
|
|
101
|
-
"info": "If False, the output will contain all outputs from the flow.",
|
|
102
|
-
"advanced": True,
|
|
103
|
-
},
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
async def build(self, flow_name: str, **kwargs) -> list[Data]:
|
|
107
|
-
tweaks = {key: {"input_value": value} for key, value in kwargs.items()}
|
|
108
|
-
run_outputs: list[RunOutputs | None] = await self.run_flow(
|
|
109
|
-
tweaks=tweaks,
|
|
110
|
-
flow_name=flow_name,
|
|
111
|
-
)
|
|
112
|
-
if not run_outputs:
|
|
113
|
-
return []
|
|
114
|
-
run_output = run_outputs[0]
|
|
115
|
-
|
|
116
|
-
data = []
|
|
117
|
-
if run_output is not None:
|
|
118
|
-
for output in run_output.outputs:
|
|
119
|
-
if output:
|
|
120
|
-
data.extend(build_data_from_result_data(output))
|
|
121
|
-
|
|
122
|
-
self.status = data
|
|
123
|
-
await logger.adebug(data)
|
|
124
|
-
return data
|