langflow-base-nightly 0.5.1.dev3__py3-none-any.whl → 0.5.1.dev4__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.dev4.dist-info}/METADATA +2 -1
- langflow_base_nightly-0.5.1.dev4.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.dev4.dist-info}/WHEEL +0 -0
- {langflow_base_nightly-0.5.1.dev3.dist-info → langflow_base_nightly-0.5.1.dev4.dist-info}/entry_points.txt +0 -0
|
@@ -1,261 +0,0 @@
|
|
|
1
|
-
from copy import deepcopy
|
|
2
|
-
from pathlib import Path
|
|
3
|
-
|
|
4
|
-
from langchain_chroma import Chroma
|
|
5
|
-
from typing_extensions import override
|
|
6
|
-
|
|
7
|
-
from langflow.base.vectorstores.model import LCVectorStoreComponent, check_cached_vector_store
|
|
8
|
-
from langflow.base.vectorstores.utils import chroma_collection_to_data
|
|
9
|
-
from langflow.inputs.inputs import MultilineInput
|
|
10
|
-
from langflow.io import BoolInput, DropdownInput, HandleInput, IntInput, MessageTextInput, TabInput
|
|
11
|
-
from langflow.logging.logger import logger
|
|
12
|
-
from langflow.schema.data import Data
|
|
13
|
-
from langflow.schema.dataframe import DataFrame
|
|
14
|
-
from langflow.template.field.base import Output
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
class LocalDBComponent(LCVectorStoreComponent):
|
|
18
|
-
"""Chroma Vector Store with search capabilities."""
|
|
19
|
-
|
|
20
|
-
display_name: str = "Local DB"
|
|
21
|
-
description: str = "Local Vector Store with search capabilities"
|
|
22
|
-
name = "LocalDB"
|
|
23
|
-
icon = "database"
|
|
24
|
-
legacy = True
|
|
25
|
-
|
|
26
|
-
inputs = [
|
|
27
|
-
TabInput(
|
|
28
|
-
name="mode",
|
|
29
|
-
display_name="Mode",
|
|
30
|
-
options=["Ingest", "Retrieve"],
|
|
31
|
-
info="Select the operation mode",
|
|
32
|
-
value="Ingest",
|
|
33
|
-
real_time_refresh=True,
|
|
34
|
-
show=True,
|
|
35
|
-
),
|
|
36
|
-
MessageTextInput(
|
|
37
|
-
name="collection_name",
|
|
38
|
-
display_name="Collection Name",
|
|
39
|
-
value="langflow",
|
|
40
|
-
required=True,
|
|
41
|
-
),
|
|
42
|
-
MessageTextInput(
|
|
43
|
-
name="persist_directory",
|
|
44
|
-
display_name="Persist Directory",
|
|
45
|
-
info=(
|
|
46
|
-
"Custom base directory to save the vector store. "
|
|
47
|
-
"Collections will be stored under '{directory}/vector_stores/{collection_name}'. "
|
|
48
|
-
"If not specified, it will use your system's cache folder."
|
|
49
|
-
),
|
|
50
|
-
advanced=True,
|
|
51
|
-
),
|
|
52
|
-
DropdownInput(
|
|
53
|
-
name="existing_collections",
|
|
54
|
-
display_name="Existing Collections",
|
|
55
|
-
options=[], # Will be populated dynamically
|
|
56
|
-
info="Select a previously created collection to search through its stored data.",
|
|
57
|
-
show=False,
|
|
58
|
-
combobox=True,
|
|
59
|
-
),
|
|
60
|
-
HandleInput(name="embedding", display_name="Embedding", required=True, input_types=["Embeddings"]),
|
|
61
|
-
BoolInput(
|
|
62
|
-
name="allow_duplicates",
|
|
63
|
-
display_name="Allow Duplicates",
|
|
64
|
-
advanced=True,
|
|
65
|
-
info="If false, will not add documents that are already in the Vector Store.",
|
|
66
|
-
),
|
|
67
|
-
DropdownInput(
|
|
68
|
-
name="search_type",
|
|
69
|
-
display_name="Search Type",
|
|
70
|
-
options=["Similarity", "MMR"],
|
|
71
|
-
value="Similarity",
|
|
72
|
-
advanced=True,
|
|
73
|
-
),
|
|
74
|
-
HandleInput(
|
|
75
|
-
name="ingest_data",
|
|
76
|
-
display_name="Ingest Data",
|
|
77
|
-
input_types=["Data", "DataFrame"],
|
|
78
|
-
is_list=True,
|
|
79
|
-
info="Data to store. It will be embedded and indexed for semantic search.",
|
|
80
|
-
show=True,
|
|
81
|
-
),
|
|
82
|
-
MultilineInput(
|
|
83
|
-
name="search_query",
|
|
84
|
-
display_name="Search Query",
|
|
85
|
-
tool_mode=True,
|
|
86
|
-
info="Enter text to search for similar content in the selected collection.",
|
|
87
|
-
show=False,
|
|
88
|
-
),
|
|
89
|
-
IntInput(
|
|
90
|
-
name="number_of_results",
|
|
91
|
-
display_name="Number of Results",
|
|
92
|
-
info="Number of results to return.",
|
|
93
|
-
advanced=True,
|
|
94
|
-
value=10,
|
|
95
|
-
),
|
|
96
|
-
IntInput(
|
|
97
|
-
name="limit",
|
|
98
|
-
display_name="Limit",
|
|
99
|
-
advanced=True,
|
|
100
|
-
info="Limit the number of records to compare when Allow Duplicates is False.",
|
|
101
|
-
),
|
|
102
|
-
]
|
|
103
|
-
outputs = [
|
|
104
|
-
Output(display_name="DataFrame", name="dataframe", method="perform_search"),
|
|
105
|
-
]
|
|
106
|
-
|
|
107
|
-
def get_vector_store_directory(self, base_dir: str | Path) -> Path:
|
|
108
|
-
"""Get the full directory path for a collection."""
|
|
109
|
-
# Ensure base_dir is a Path object
|
|
110
|
-
base_dir = Path(base_dir)
|
|
111
|
-
# Create the full path: base_dir/vector_stores/collection_name
|
|
112
|
-
full_path = base_dir / "vector_stores" / self.collection_name
|
|
113
|
-
# Create the directory if it doesn't exist
|
|
114
|
-
full_path.mkdir(parents=True, exist_ok=True)
|
|
115
|
-
return full_path
|
|
116
|
-
|
|
117
|
-
def get_default_persist_dir(self) -> str:
|
|
118
|
-
"""Get the default persist directory from cache."""
|
|
119
|
-
from langflow.services.cache.utils import CACHE_DIR
|
|
120
|
-
|
|
121
|
-
return str(self.get_vector_store_directory(CACHE_DIR))
|
|
122
|
-
|
|
123
|
-
def list_existing_collections(self) -> list[str]:
|
|
124
|
-
"""List existing vector store collections from the persist directory."""
|
|
125
|
-
from langflow.services.cache.utils import CACHE_DIR
|
|
126
|
-
|
|
127
|
-
# Get the base directory (either custom or cache)
|
|
128
|
-
base_dir = Path(self.persist_directory) if self.persist_directory else Path(CACHE_DIR)
|
|
129
|
-
# Get the vector_stores subdirectory
|
|
130
|
-
vector_stores_dir = base_dir / "vector_stores"
|
|
131
|
-
if not vector_stores_dir.exists():
|
|
132
|
-
return []
|
|
133
|
-
|
|
134
|
-
return [d.name for d in vector_stores_dir.iterdir() if d.is_dir()]
|
|
135
|
-
|
|
136
|
-
def update_build_config(self, build_config: dict, field_value: str, field_name: str | None = None) -> dict:
|
|
137
|
-
"""Update the build configuration when the mode changes."""
|
|
138
|
-
if field_name == "mode":
|
|
139
|
-
# Hide all dynamic fields by default
|
|
140
|
-
dynamic_fields = [
|
|
141
|
-
"ingest_data",
|
|
142
|
-
"search_query",
|
|
143
|
-
"search_type",
|
|
144
|
-
"number_of_results",
|
|
145
|
-
"existing_collections",
|
|
146
|
-
"collection_name",
|
|
147
|
-
"embedding",
|
|
148
|
-
"allow_duplicates",
|
|
149
|
-
"limit",
|
|
150
|
-
]
|
|
151
|
-
for field in dynamic_fields:
|
|
152
|
-
if field in build_config:
|
|
153
|
-
build_config[field]["show"] = False
|
|
154
|
-
|
|
155
|
-
# Show/hide fields based on selected mode
|
|
156
|
-
if field_value == "Ingest":
|
|
157
|
-
if "ingest_data" in build_config:
|
|
158
|
-
build_config["ingest_data"]["show"] = True
|
|
159
|
-
if "collection_name" in build_config:
|
|
160
|
-
build_config["collection_name"]["show"] = True
|
|
161
|
-
build_config["collection_name"]["display_name"] = "Name Your Collection"
|
|
162
|
-
if "persist" in build_config:
|
|
163
|
-
build_config["persist"]["show"] = True
|
|
164
|
-
if "persist_directory" in build_config:
|
|
165
|
-
build_config["persist_directory"]["show"] = True
|
|
166
|
-
if "embedding" in build_config:
|
|
167
|
-
build_config["embedding"]["show"] = True
|
|
168
|
-
if "allow_duplicates" in build_config:
|
|
169
|
-
build_config["allow_duplicates"]["show"] = True
|
|
170
|
-
if "limit" in build_config:
|
|
171
|
-
build_config["limit"]["show"] = True
|
|
172
|
-
elif field_value == "Retrieve":
|
|
173
|
-
if "persist" in build_config:
|
|
174
|
-
build_config["persist"]["show"] = False
|
|
175
|
-
build_config["search_query"]["show"] = True
|
|
176
|
-
build_config["search_type"]["show"] = True
|
|
177
|
-
build_config["number_of_results"]["show"] = True
|
|
178
|
-
build_config["embedding"]["show"] = True
|
|
179
|
-
build_config["collection_name"]["show"] = False
|
|
180
|
-
# Show existing collections dropdown and update its options
|
|
181
|
-
if "existing_collections" in build_config:
|
|
182
|
-
build_config["existing_collections"]["show"] = True
|
|
183
|
-
build_config["existing_collections"]["options"] = self.list_existing_collections()
|
|
184
|
-
# Hide collection_name in Retrieve mode since we use existing_collections
|
|
185
|
-
elif field_name == "existing_collections":
|
|
186
|
-
# Update collection_name when an existing collection is selected
|
|
187
|
-
if "collection_name" in build_config:
|
|
188
|
-
build_config["collection_name"]["value"] = field_value
|
|
189
|
-
|
|
190
|
-
return build_config
|
|
191
|
-
|
|
192
|
-
@override
|
|
193
|
-
@check_cached_vector_store
|
|
194
|
-
def build_vector_store(self) -> Chroma:
|
|
195
|
-
"""Builds the Chroma object."""
|
|
196
|
-
try:
|
|
197
|
-
from langchain_chroma import Chroma
|
|
198
|
-
except ImportError as e:
|
|
199
|
-
msg = "Could not import Chroma integration package. Please install it with `pip install langchain-chroma`."
|
|
200
|
-
raise ImportError(msg) from e
|
|
201
|
-
# Chroma settings
|
|
202
|
-
# chroma_settings = None
|
|
203
|
-
if self.existing_collections:
|
|
204
|
-
self.collection_name = self.existing_collections
|
|
205
|
-
|
|
206
|
-
# Use user-provided directory or default cache directory
|
|
207
|
-
if self.persist_directory:
|
|
208
|
-
base_dir = self.resolve_path(self.persist_directory)
|
|
209
|
-
persist_directory = str(self.get_vector_store_directory(base_dir))
|
|
210
|
-
logger.debug(f"Using custom persist directory: {persist_directory}")
|
|
211
|
-
else:
|
|
212
|
-
persist_directory = self.get_default_persist_dir()
|
|
213
|
-
logger.debug(f"Using default persist directory: {persist_directory}")
|
|
214
|
-
|
|
215
|
-
chroma = Chroma(
|
|
216
|
-
persist_directory=persist_directory,
|
|
217
|
-
client=None,
|
|
218
|
-
embedding_function=self.embedding,
|
|
219
|
-
collection_name=self.collection_name,
|
|
220
|
-
)
|
|
221
|
-
|
|
222
|
-
self._add_documents_to_vector_store(chroma)
|
|
223
|
-
self.status = chroma_collection_to_data(chroma.get(limit=self.limit))
|
|
224
|
-
return chroma
|
|
225
|
-
|
|
226
|
-
def _add_documents_to_vector_store(self, vector_store: "Chroma") -> None:
|
|
227
|
-
"""Adds documents to the Vector Store."""
|
|
228
|
-
ingest_data: list | Data | DataFrame = self.ingest_data
|
|
229
|
-
if not ingest_data:
|
|
230
|
-
self.status = ""
|
|
231
|
-
return
|
|
232
|
-
|
|
233
|
-
# Convert DataFrame to Data if needed using parent's method
|
|
234
|
-
ingest_data = self._prepare_ingest_data()
|
|
235
|
-
|
|
236
|
-
stored_documents_without_id = []
|
|
237
|
-
if self.allow_duplicates:
|
|
238
|
-
stored_data = []
|
|
239
|
-
else:
|
|
240
|
-
stored_data = chroma_collection_to_data(vector_store.get(limit=self.limit))
|
|
241
|
-
for value in deepcopy(stored_data):
|
|
242
|
-
del value.id
|
|
243
|
-
stored_documents_without_id.append(value)
|
|
244
|
-
|
|
245
|
-
documents = []
|
|
246
|
-
for _input in ingest_data or []:
|
|
247
|
-
if isinstance(_input, Data):
|
|
248
|
-
if _input not in stored_documents_without_id:
|
|
249
|
-
documents.append(_input.to_lc_document())
|
|
250
|
-
else:
|
|
251
|
-
msg = "Vector Store Inputs must be Data objects."
|
|
252
|
-
raise TypeError(msg)
|
|
253
|
-
|
|
254
|
-
if documents and self.embedding is not None:
|
|
255
|
-
self.log(f"Adding {len(documents)} documents to the Vector Store.")
|
|
256
|
-
vector_store.add_documents(documents)
|
|
257
|
-
else:
|
|
258
|
-
self.log("No documents to add to the Vector Store.")
|
|
259
|
-
|
|
260
|
-
def perform_search(self) -> DataFrame:
|
|
261
|
-
return DataFrame(self.search_documents())
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
|
|
3
|
-
from typing import TYPE_CHECKING, Any
|
|
4
|
-
|
|
5
|
-
from langflow.components._importing import import_mod
|
|
6
|
-
|
|
7
|
-
if TYPE_CHECKING:
|
|
8
|
-
from .vertexai import ChatVertexAIComponent
|
|
9
|
-
from .vertexai_embeddings import VertexAIEmbeddingsComponent
|
|
10
|
-
|
|
11
|
-
_dynamic_imports = {
|
|
12
|
-
"ChatVertexAIComponent": "vertexai",
|
|
13
|
-
"VertexAIEmbeddingsComponent": "vertexai_embeddings",
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
__all__ = [
|
|
17
|
-
"ChatVertexAIComponent",
|
|
18
|
-
"VertexAIEmbeddingsComponent",
|
|
19
|
-
]
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
def __getattr__(attr_name: str) -> Any:
|
|
23
|
-
"""Lazily import vertexai components on attribute access."""
|
|
24
|
-
if attr_name not in _dynamic_imports:
|
|
25
|
-
msg = f"module '{__name__}' has no attribute '{attr_name}'"
|
|
26
|
-
raise AttributeError(msg)
|
|
27
|
-
try:
|
|
28
|
-
result = import_mod(attr_name, _dynamic_imports[attr_name], __spec__.parent)
|
|
29
|
-
except (ModuleNotFoundError, ImportError, AttributeError) as e:
|
|
30
|
-
msg = f"Could not import '{attr_name}' from '{__name__}': {e}"
|
|
31
|
-
raise AttributeError(msg) from e
|
|
32
|
-
globals()[attr_name] = result
|
|
33
|
-
return result
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
def __dir__() -> list[str]:
|
|
37
|
-
return list(__all__)
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
from typing import cast
|
|
2
|
-
|
|
3
|
-
from langflow.base.models.model import LCModelComponent
|
|
4
|
-
from langflow.field_typing import LanguageModel
|
|
5
|
-
from langflow.inputs.inputs import MessageTextInput
|
|
6
|
-
from langflow.io import BoolInput, FileInput, FloatInput, IntInput, StrInput
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
class ChatVertexAIComponent(LCModelComponent):
|
|
10
|
-
display_name = "Vertex AI"
|
|
11
|
-
description = "Generate text using Vertex AI LLMs."
|
|
12
|
-
icon = "VertexAI"
|
|
13
|
-
name = "VertexAiModel"
|
|
14
|
-
|
|
15
|
-
inputs = [
|
|
16
|
-
*LCModelComponent._base_inputs,
|
|
17
|
-
FileInput(
|
|
18
|
-
name="credentials",
|
|
19
|
-
display_name="Credentials",
|
|
20
|
-
info="JSON credentials file. Leave empty to fallback to environment variables",
|
|
21
|
-
file_types=["json"],
|
|
22
|
-
),
|
|
23
|
-
MessageTextInput(name="model_name", display_name="Model Name", value="gemini-1.5-pro"),
|
|
24
|
-
StrInput(name="project", display_name="Project", info="The project ID.", advanced=True),
|
|
25
|
-
StrInput(name="location", display_name="Location", value="us-central1", advanced=True),
|
|
26
|
-
IntInput(name="max_output_tokens", display_name="Max Output Tokens", advanced=True),
|
|
27
|
-
IntInput(name="max_retries", display_name="Max Retries", value=1, advanced=True),
|
|
28
|
-
FloatInput(name="temperature", value=0.0, display_name="Temperature"),
|
|
29
|
-
IntInput(name="top_k", display_name="Top K", advanced=True),
|
|
30
|
-
FloatInput(name="top_p", display_name="Top P", value=0.95, advanced=True),
|
|
31
|
-
BoolInput(name="verbose", display_name="Verbose", value=False, advanced=True),
|
|
32
|
-
]
|
|
33
|
-
|
|
34
|
-
def build_model(self) -> LanguageModel:
|
|
35
|
-
try:
|
|
36
|
-
from langchain_google_vertexai import ChatVertexAI
|
|
37
|
-
except ImportError as e:
|
|
38
|
-
msg = "Please install the langchain-google-vertexai package to use the VertexAIEmbeddings component."
|
|
39
|
-
raise ImportError(msg) from e
|
|
40
|
-
location = self.location or None
|
|
41
|
-
if self.credentials:
|
|
42
|
-
from google.cloud import aiplatform
|
|
43
|
-
from google.oauth2 import service_account
|
|
44
|
-
|
|
45
|
-
credentials = service_account.Credentials.from_service_account_file(self.credentials)
|
|
46
|
-
project = self.project or credentials.project_id
|
|
47
|
-
# ChatVertexAI sometimes skip manual credentials initialization
|
|
48
|
-
aiplatform.init(
|
|
49
|
-
project=project,
|
|
50
|
-
location=location,
|
|
51
|
-
credentials=credentials,
|
|
52
|
-
)
|
|
53
|
-
else:
|
|
54
|
-
project = self.project or None
|
|
55
|
-
credentials = None
|
|
56
|
-
|
|
57
|
-
return cast(
|
|
58
|
-
"LanguageModel",
|
|
59
|
-
ChatVertexAI(
|
|
60
|
-
credentials=credentials,
|
|
61
|
-
location=location,
|
|
62
|
-
project=project,
|
|
63
|
-
max_output_tokens=self.max_output_tokens or None,
|
|
64
|
-
max_retries=self.max_retries,
|
|
65
|
-
model_name=self.model_name,
|
|
66
|
-
temperature=self.temperature,
|
|
67
|
-
top_k=self.top_k or None,
|
|
68
|
-
top_p=self.top_p,
|
|
69
|
-
verbose=self.verbose,
|
|
70
|
-
),
|
|
71
|
-
)
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
from langflow.base.models.model import LCModelComponent
|
|
2
|
-
from langflow.field_typing import Embeddings
|
|
3
|
-
from langflow.io import BoolInput, FileInput, FloatInput, IntInput, MessageTextInput, Output
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
class VertexAIEmbeddingsComponent(LCModelComponent):
|
|
7
|
-
display_name = "Vertex AI Embeddings"
|
|
8
|
-
description = "Generate embeddings using Google Cloud Vertex AI models."
|
|
9
|
-
icon = "VertexAI"
|
|
10
|
-
name = "VertexAIEmbeddings"
|
|
11
|
-
|
|
12
|
-
inputs = [
|
|
13
|
-
FileInput(
|
|
14
|
-
name="credentials",
|
|
15
|
-
display_name="Credentials",
|
|
16
|
-
info="JSON credentials file. Leave empty to fallback to environment variables",
|
|
17
|
-
value="",
|
|
18
|
-
file_types=["json"],
|
|
19
|
-
required=True,
|
|
20
|
-
),
|
|
21
|
-
MessageTextInput(name="location", display_name="Location", value="us-central1", advanced=True),
|
|
22
|
-
MessageTextInput(name="project", display_name="Project", info="The project ID.", advanced=True),
|
|
23
|
-
IntInput(name="max_output_tokens", display_name="Max Output Tokens", advanced=True),
|
|
24
|
-
IntInput(name="max_retries", display_name="Max Retries", value=1, advanced=True),
|
|
25
|
-
MessageTextInput(name="model_name", display_name="Model Name", value="textembedding-gecko", required=True),
|
|
26
|
-
IntInput(name="n", display_name="N", value=1, advanced=True),
|
|
27
|
-
IntInput(name="request_parallelism", value=5, display_name="Request Parallelism", advanced=True),
|
|
28
|
-
MessageTextInput(name="stop_sequences", display_name="Stop", advanced=True, is_list=True),
|
|
29
|
-
BoolInput(name="streaming", display_name="Streaming", value=False, advanced=True),
|
|
30
|
-
FloatInput(name="temperature", value=0.0, display_name="Temperature"),
|
|
31
|
-
IntInput(name="top_k", display_name="Top K", advanced=True),
|
|
32
|
-
FloatInput(name="top_p", display_name="Top P", value=0.95, advanced=True),
|
|
33
|
-
]
|
|
34
|
-
|
|
35
|
-
outputs = [
|
|
36
|
-
Output(display_name="Embeddings", name="embeddings", method="build_embeddings"),
|
|
37
|
-
]
|
|
38
|
-
|
|
39
|
-
def build_embeddings(self) -> Embeddings:
|
|
40
|
-
try:
|
|
41
|
-
from langchain_google_vertexai import VertexAIEmbeddings
|
|
42
|
-
except ImportError as e:
|
|
43
|
-
msg = "Please install the langchain-google-vertexai package to use the VertexAIEmbeddings component."
|
|
44
|
-
raise ImportError(msg) from e
|
|
45
|
-
|
|
46
|
-
from google.oauth2 import service_account
|
|
47
|
-
|
|
48
|
-
if self.credentials:
|
|
49
|
-
gcloud_credentials = service_account.Credentials.from_service_account_file(self.credentials)
|
|
50
|
-
else:
|
|
51
|
-
# will fallback to environment variable or inferred from gcloud CLI
|
|
52
|
-
gcloud_credentials = None
|
|
53
|
-
return VertexAIEmbeddings(
|
|
54
|
-
credentials=gcloud_credentials,
|
|
55
|
-
location=self.location,
|
|
56
|
-
max_output_tokens=self.max_output_tokens or None,
|
|
57
|
-
max_retries=self.max_retries,
|
|
58
|
-
model_name=self.model_name,
|
|
59
|
-
n=self.n,
|
|
60
|
-
project=self.project,
|
|
61
|
-
request_parallelism=self.request_parallelism,
|
|
62
|
-
stop=self.stop_sequences or None,
|
|
63
|
-
streaming=self.streaming,
|
|
64
|
-
temperature=self.temperature,
|
|
65
|
-
top_k=self.top_k or None,
|
|
66
|
-
top_p=self.top_p,
|
|
67
|
-
)
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
|
|
3
|
-
from typing import TYPE_CHECKING, Any
|
|
4
|
-
|
|
5
|
-
from langflow.components._importing import import_mod
|
|
6
|
-
|
|
7
|
-
if TYPE_CHECKING:
|
|
8
|
-
from .weaviate import WeaviateVectorStoreComponent
|
|
9
|
-
|
|
10
|
-
_dynamic_imports = {
|
|
11
|
-
"WeaviateVectorStoreComponent": "weaviate",
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
__all__ = [
|
|
15
|
-
"WeaviateVectorStoreComponent",
|
|
16
|
-
]
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
def __getattr__(attr_name: str) -> Any:
|
|
20
|
-
"""Lazily import Weaviate components on attribute access."""
|
|
21
|
-
if attr_name not in _dynamic_imports:
|
|
22
|
-
msg = f"module '{__name__}' has no attribute '{attr_name}'"
|
|
23
|
-
raise AttributeError(msg)
|
|
24
|
-
try:
|
|
25
|
-
result = import_mod(attr_name, _dynamic_imports[attr_name], __spec__.parent)
|
|
26
|
-
except (ModuleNotFoundError, ImportError, AttributeError) as e:
|
|
27
|
-
msg = f"Could not import '{attr_name}' from '{__name__}': {e}"
|
|
28
|
-
raise AttributeError(msg) from e
|
|
29
|
-
globals()[attr_name] = result
|
|
30
|
-
return result
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
def __dir__() -> list[str]:
|
|
34
|
-
return list(__all__)
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
import weaviate
|
|
2
|
-
from langchain_community.vectorstores import Weaviate
|
|
3
|
-
|
|
4
|
-
from langflow.base.vectorstores.model import LCVectorStoreComponent, check_cached_vector_store
|
|
5
|
-
from langflow.helpers.data import docs_to_data
|
|
6
|
-
from langflow.io import BoolInput, HandleInput, IntInput, SecretStrInput, StrInput
|
|
7
|
-
from langflow.schema.data import Data
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
class WeaviateVectorStoreComponent(LCVectorStoreComponent):
|
|
11
|
-
display_name = "Weaviate"
|
|
12
|
-
description = "Weaviate Vector Store with search capabilities"
|
|
13
|
-
name = "Weaviate"
|
|
14
|
-
icon = "Weaviate"
|
|
15
|
-
|
|
16
|
-
inputs = [
|
|
17
|
-
StrInput(name="url", display_name="Weaviate URL", value="http://localhost:8080", required=True),
|
|
18
|
-
SecretStrInput(name="api_key", display_name="API Key", required=False),
|
|
19
|
-
StrInput(
|
|
20
|
-
name="index_name",
|
|
21
|
-
display_name="Index Name",
|
|
22
|
-
required=True,
|
|
23
|
-
info="Requires capitalized index name.",
|
|
24
|
-
),
|
|
25
|
-
StrInput(name="text_key", display_name="Text Key", value="text", advanced=True),
|
|
26
|
-
*LCVectorStoreComponent.inputs,
|
|
27
|
-
HandleInput(name="embedding", display_name="Embedding", input_types=["Embeddings"]),
|
|
28
|
-
IntInput(
|
|
29
|
-
name="number_of_results",
|
|
30
|
-
display_name="Number of Results",
|
|
31
|
-
info="Number of results to return.",
|
|
32
|
-
value=4,
|
|
33
|
-
advanced=True,
|
|
34
|
-
),
|
|
35
|
-
BoolInput(name="search_by_text", display_name="Search By Text", advanced=True),
|
|
36
|
-
]
|
|
37
|
-
|
|
38
|
-
@check_cached_vector_store
|
|
39
|
-
def build_vector_store(self) -> Weaviate:
|
|
40
|
-
if self.api_key:
|
|
41
|
-
auth_config = weaviate.AuthApiKey(api_key=self.api_key)
|
|
42
|
-
client = weaviate.Client(url=self.url, auth_client_secret=auth_config)
|
|
43
|
-
else:
|
|
44
|
-
client = weaviate.Client(url=self.url)
|
|
45
|
-
|
|
46
|
-
if self.index_name != self.index_name.capitalize():
|
|
47
|
-
msg = f"Weaviate requires the index name to be capitalized. Use: {self.index_name.capitalize()}"
|
|
48
|
-
raise ValueError(msg)
|
|
49
|
-
|
|
50
|
-
# Convert DataFrame to Data if needed using parent's method
|
|
51
|
-
self.ingest_data = self._prepare_ingest_data()
|
|
52
|
-
|
|
53
|
-
documents = []
|
|
54
|
-
for _input in self.ingest_data or []:
|
|
55
|
-
if isinstance(_input, Data):
|
|
56
|
-
documents.append(_input.to_lc_document())
|
|
57
|
-
else:
|
|
58
|
-
documents.append(_input)
|
|
59
|
-
|
|
60
|
-
if documents and self.embedding:
|
|
61
|
-
return Weaviate.from_documents(
|
|
62
|
-
client=client,
|
|
63
|
-
index_name=self.index_name,
|
|
64
|
-
documents=documents,
|
|
65
|
-
embedding=self.embedding,
|
|
66
|
-
by_text=self.search_by_text,
|
|
67
|
-
)
|
|
68
|
-
|
|
69
|
-
return Weaviate(
|
|
70
|
-
client=client,
|
|
71
|
-
index_name=self.index_name,
|
|
72
|
-
text_key=self.text_key,
|
|
73
|
-
embedding=self.embedding,
|
|
74
|
-
by_text=self.search_by_text,
|
|
75
|
-
)
|
|
76
|
-
|
|
77
|
-
def search_documents(self) -> list[Data]:
|
|
78
|
-
vector_store = self.build_vector_store()
|
|
79
|
-
|
|
80
|
-
if self.search_query and isinstance(self.search_query, str) and self.search_query.strip():
|
|
81
|
-
docs = vector_store.similarity_search(
|
|
82
|
-
query=self.search_query,
|
|
83
|
-
k=self.number_of_results,
|
|
84
|
-
)
|
|
85
|
-
|
|
86
|
-
data = docs_to_data(docs)
|
|
87
|
-
self.status = data
|
|
88
|
-
return data
|
|
89
|
-
return []
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
import httpx
|
|
2
|
-
from httpx import HTTPError
|
|
3
|
-
from langchain_core.tools import ToolException
|
|
4
|
-
|
|
5
|
-
from langflow.custom.custom_component.component import Component
|
|
6
|
-
from langflow.inputs.inputs import MultilineInput
|
|
7
|
-
from langflow.schema.data import Data
|
|
8
|
-
from langflow.schema.dataframe import DataFrame
|
|
9
|
-
from langflow.template.field.base import Output
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
class WikidataComponent(Component):
|
|
13
|
-
display_name = "Wikidata"
|
|
14
|
-
description = "Performs a search using the Wikidata API."
|
|
15
|
-
icon = "Wikipedia"
|
|
16
|
-
|
|
17
|
-
inputs = [
|
|
18
|
-
MultilineInput(
|
|
19
|
-
name="query",
|
|
20
|
-
display_name="Query",
|
|
21
|
-
info="The text query for similarity search on Wikidata.",
|
|
22
|
-
required=True,
|
|
23
|
-
tool_mode=True,
|
|
24
|
-
),
|
|
25
|
-
]
|
|
26
|
-
|
|
27
|
-
outputs = [
|
|
28
|
-
Output(display_name="DataFrame", name="dataframe", method="fetch_content_dataframe"),
|
|
29
|
-
]
|
|
30
|
-
|
|
31
|
-
def run_model(self) -> DataFrame:
|
|
32
|
-
return self.fetch_content_dataframe()
|
|
33
|
-
|
|
34
|
-
def fetch_content(self) -> list[Data]:
|
|
35
|
-
try:
|
|
36
|
-
# Define request parameters for Wikidata API
|
|
37
|
-
params = {
|
|
38
|
-
"action": "wbsearchentities",
|
|
39
|
-
"format": "json",
|
|
40
|
-
"search": self.query,
|
|
41
|
-
"language": "en",
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
# Send request to Wikidata API
|
|
45
|
-
wikidata_api_url = "https://www.wikidata.org/w/api.php"
|
|
46
|
-
response = httpx.get(wikidata_api_url, params=params)
|
|
47
|
-
response.raise_for_status()
|
|
48
|
-
response_json = response.json()
|
|
49
|
-
|
|
50
|
-
# Extract search results
|
|
51
|
-
results = response_json.get("search", [])
|
|
52
|
-
|
|
53
|
-
if not results:
|
|
54
|
-
return [Data(data={"error": "No search results found for the given query."})]
|
|
55
|
-
|
|
56
|
-
# Transform the API response into Data objects
|
|
57
|
-
data = [
|
|
58
|
-
Data(
|
|
59
|
-
text=f"{result['label']}: {result.get('description', '')}",
|
|
60
|
-
data={
|
|
61
|
-
"label": result["label"],
|
|
62
|
-
"id": result.get("id"),
|
|
63
|
-
"url": result.get("url"),
|
|
64
|
-
"description": result.get("description", ""),
|
|
65
|
-
"concepturi": result.get("concepturi"),
|
|
66
|
-
},
|
|
67
|
-
)
|
|
68
|
-
for result in results
|
|
69
|
-
]
|
|
70
|
-
|
|
71
|
-
self.status = data
|
|
72
|
-
except HTTPError as e:
|
|
73
|
-
error_message = f"HTTP Error in Wikidata Search API: {e!s}"
|
|
74
|
-
raise ToolException(error_message) from None
|
|
75
|
-
except KeyError as e:
|
|
76
|
-
error_message = f"Data parsing error in Wikidata API response: {e!s}"
|
|
77
|
-
raise ToolException(error_message) from None
|
|
78
|
-
except ValueError as e:
|
|
79
|
-
error_message = f"Value error in Wikidata API: {e!s}"
|
|
80
|
-
raise ToolException(error_message) from None
|
|
81
|
-
else:
|
|
82
|
-
return data
|
|
83
|
-
|
|
84
|
-
def fetch_content_dataframe(self) -> DataFrame:
|
|
85
|
-
data = self.fetch_content()
|
|
86
|
-
return DataFrame(data)
|