langflow-base-nightly 0.5.1.dev2__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.dev2.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.dev2.dist-info/RECORD +0 -1159
- {langflow_base_nightly-0.5.1.dev2.dist-info → langflow_base_nightly-0.5.1.dev4.dist-info}/WHEEL +0 -0
- {langflow_base_nightly-0.5.1.dev2.dist-info → langflow_base_nightly-0.5.1.dev4.dist-info}/entry_points.txt +0 -0
|
@@ -1,245 +0,0 @@
|
|
|
1
|
-
import signal
|
|
2
|
-
import sys
|
|
3
|
-
import traceback
|
|
4
|
-
from contextlib import suppress
|
|
5
|
-
|
|
6
|
-
from docling_core.types.doc import DoclingDocument
|
|
7
|
-
from loguru import logger
|
|
8
|
-
|
|
9
|
-
from langflow.schema.data import Data
|
|
10
|
-
from langflow.schema.dataframe import DataFrame
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
def extract_docling_documents(data_inputs: Data | list[Data] | DataFrame, doc_key: str) -> list[DoclingDocument]:
|
|
14
|
-
documents: list[DoclingDocument] = []
|
|
15
|
-
if isinstance(data_inputs, DataFrame):
|
|
16
|
-
if not len(data_inputs):
|
|
17
|
-
msg = "DataFrame is empty"
|
|
18
|
-
raise TypeError(msg)
|
|
19
|
-
|
|
20
|
-
if doc_key not in data_inputs.columns:
|
|
21
|
-
msg = f"Column '{doc_key}' not found in DataFrame"
|
|
22
|
-
raise TypeError(msg)
|
|
23
|
-
try:
|
|
24
|
-
documents = data_inputs[doc_key].tolist()
|
|
25
|
-
except Exception as e:
|
|
26
|
-
msg = f"Error extracting DoclingDocument from DataFrame: {e}"
|
|
27
|
-
raise TypeError(msg) from e
|
|
28
|
-
else:
|
|
29
|
-
if not data_inputs:
|
|
30
|
-
msg = "No data inputs provided"
|
|
31
|
-
raise TypeError(msg)
|
|
32
|
-
|
|
33
|
-
if isinstance(data_inputs, Data):
|
|
34
|
-
if doc_key not in data_inputs.data:
|
|
35
|
-
msg = (
|
|
36
|
-
f"'{doc_key}' field not available in the input Data. "
|
|
37
|
-
"Check that your input is a DoclingDocument. "
|
|
38
|
-
"You can use the Docling component to convert your input to a DoclingDocument."
|
|
39
|
-
)
|
|
40
|
-
raise TypeError(msg)
|
|
41
|
-
documents = [data_inputs.data[doc_key]]
|
|
42
|
-
else:
|
|
43
|
-
try:
|
|
44
|
-
documents = [
|
|
45
|
-
input_.data[doc_key]
|
|
46
|
-
for input_ in data_inputs
|
|
47
|
-
if isinstance(input_, Data)
|
|
48
|
-
and doc_key in input_.data
|
|
49
|
-
and isinstance(input_.data[doc_key], DoclingDocument)
|
|
50
|
-
]
|
|
51
|
-
if not documents:
|
|
52
|
-
msg = f"No valid Data inputs found in {type(data_inputs)}"
|
|
53
|
-
raise TypeError(msg)
|
|
54
|
-
except AttributeError as e:
|
|
55
|
-
msg = f"Invalid input type in collection: {e}"
|
|
56
|
-
raise TypeError(msg) from e
|
|
57
|
-
return documents
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
def docling_worker(file_paths: list[str], queue, pipeline: str, ocr_engine: str):
|
|
61
|
-
"""Worker function for processing files with Docling in a separate process."""
|
|
62
|
-
# Signal handling for graceful shutdown
|
|
63
|
-
shutdown_requested = False
|
|
64
|
-
|
|
65
|
-
def signal_handler(signum: int, frame) -> None: # noqa: ARG001
|
|
66
|
-
"""Handle shutdown signals gracefully."""
|
|
67
|
-
nonlocal shutdown_requested
|
|
68
|
-
signal_names: dict[int, str] = {signal.SIGTERM: "SIGTERM", signal.SIGINT: "SIGINT"}
|
|
69
|
-
signal_name = signal_names.get(signum, f"signal {signum}")
|
|
70
|
-
|
|
71
|
-
logger.debug(f"Docling worker received {signal_name}, initiating graceful shutdown...")
|
|
72
|
-
shutdown_requested = True
|
|
73
|
-
|
|
74
|
-
# Send shutdown notification to parent process
|
|
75
|
-
with suppress(Exception):
|
|
76
|
-
queue.put({"error": f"Worker interrupted by {signal_name}", "shutdown": True})
|
|
77
|
-
|
|
78
|
-
# Exit gracefully
|
|
79
|
-
sys.exit(0)
|
|
80
|
-
|
|
81
|
-
def check_shutdown() -> None:
|
|
82
|
-
"""Check if shutdown was requested and exit if so."""
|
|
83
|
-
if shutdown_requested:
|
|
84
|
-
logger.info("Shutdown requested, exiting worker...")
|
|
85
|
-
|
|
86
|
-
with suppress(Exception):
|
|
87
|
-
queue.put({"error": "Worker shutdown requested", "shutdown": True})
|
|
88
|
-
|
|
89
|
-
sys.exit(0)
|
|
90
|
-
|
|
91
|
-
# Register signal handlers early
|
|
92
|
-
try:
|
|
93
|
-
signal.signal(signal.SIGTERM, signal_handler)
|
|
94
|
-
signal.signal(signal.SIGINT, signal_handler)
|
|
95
|
-
logger.debug("Signal handlers registered for graceful shutdown")
|
|
96
|
-
except (OSError, ValueError) as e:
|
|
97
|
-
# Some signals might not be available on all platforms
|
|
98
|
-
logger.warning(f"Warning: Could not register signal handlers: {e}")
|
|
99
|
-
|
|
100
|
-
# Check for shutdown before heavy imports
|
|
101
|
-
check_shutdown()
|
|
102
|
-
|
|
103
|
-
try:
|
|
104
|
-
from docling.datamodel.base_models import ConversionStatus, InputFormat
|
|
105
|
-
from docling.datamodel.pipeline_options import OcrOptions, PdfPipelineOptions, VlmPipelineOptions
|
|
106
|
-
from docling.document_converter import DocumentConverter, FormatOption, PdfFormatOption
|
|
107
|
-
from docling.models.factories import get_ocr_factory
|
|
108
|
-
from docling.pipeline.vlm_pipeline import VlmPipeline
|
|
109
|
-
|
|
110
|
-
# Check for shutdown after imports
|
|
111
|
-
check_shutdown()
|
|
112
|
-
logger.debug("Docling dependencies loaded successfully")
|
|
113
|
-
|
|
114
|
-
except ModuleNotFoundError:
|
|
115
|
-
msg = (
|
|
116
|
-
"Docling is an optional dependency of Langflow. "
|
|
117
|
-
"Install with `uv pip install 'langflow[docling]'` "
|
|
118
|
-
"or refer to the documentation"
|
|
119
|
-
)
|
|
120
|
-
queue.put({"error": msg})
|
|
121
|
-
return
|
|
122
|
-
except ImportError as e:
|
|
123
|
-
# A different import failed (e.g., a transitive dependency); preserve details.
|
|
124
|
-
queue.put({"error": f"Failed to import a Docling dependency: {e}"})
|
|
125
|
-
return
|
|
126
|
-
except KeyboardInterrupt:
|
|
127
|
-
logger.warning("KeyboardInterrupt during imports, exiting...")
|
|
128
|
-
queue.put({"error": "Worker interrupted during imports", "shutdown": True})
|
|
129
|
-
return
|
|
130
|
-
|
|
131
|
-
# Configure the standard PDF pipeline
|
|
132
|
-
def _get_standard_opts() -> PdfPipelineOptions:
|
|
133
|
-
check_shutdown() # Check before heavy operations
|
|
134
|
-
|
|
135
|
-
pipeline_options = PdfPipelineOptions()
|
|
136
|
-
pipeline_options.do_ocr = ocr_engine != ""
|
|
137
|
-
if pipeline_options.do_ocr:
|
|
138
|
-
ocr_factory = get_ocr_factory(
|
|
139
|
-
allow_external_plugins=False,
|
|
140
|
-
)
|
|
141
|
-
|
|
142
|
-
ocr_options: OcrOptions = ocr_factory.create_options(
|
|
143
|
-
kind=ocr_engine,
|
|
144
|
-
)
|
|
145
|
-
pipeline_options.ocr_options = ocr_options
|
|
146
|
-
return pipeline_options
|
|
147
|
-
|
|
148
|
-
# Configure the VLM pipeline
|
|
149
|
-
def _get_vlm_opts() -> VlmPipelineOptions:
|
|
150
|
-
check_shutdown() # Check before heavy operations
|
|
151
|
-
return VlmPipelineOptions()
|
|
152
|
-
|
|
153
|
-
# Configure the main format options and create the DocumentConverter()
|
|
154
|
-
def _get_converter() -> DocumentConverter:
|
|
155
|
-
check_shutdown() # Check before heavy operations
|
|
156
|
-
|
|
157
|
-
if pipeline == "standard":
|
|
158
|
-
pdf_format_option = PdfFormatOption(
|
|
159
|
-
pipeline_options=_get_standard_opts(),
|
|
160
|
-
)
|
|
161
|
-
elif pipeline == "vlm":
|
|
162
|
-
pdf_format_option = PdfFormatOption(pipeline_cls=VlmPipeline, pipeline_options=_get_vlm_opts())
|
|
163
|
-
else:
|
|
164
|
-
msg = f"Unknown pipeline: {pipeline!r}"
|
|
165
|
-
raise ValueError(msg)
|
|
166
|
-
|
|
167
|
-
format_options: dict[InputFormat, FormatOption] = {
|
|
168
|
-
InputFormat.PDF: pdf_format_option,
|
|
169
|
-
InputFormat.IMAGE: pdf_format_option,
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
return DocumentConverter(format_options=format_options)
|
|
173
|
-
|
|
174
|
-
try:
|
|
175
|
-
# Check for shutdown before creating converter (can be slow)
|
|
176
|
-
check_shutdown()
|
|
177
|
-
logger.info(f"Initializing {pipeline} pipeline with OCR: {ocr_engine or 'disabled'}")
|
|
178
|
-
|
|
179
|
-
converter = _get_converter()
|
|
180
|
-
|
|
181
|
-
# Check for shutdown before processing files
|
|
182
|
-
check_shutdown()
|
|
183
|
-
logger.info(f"Starting to process {len(file_paths)} files...")
|
|
184
|
-
|
|
185
|
-
# Process files with periodic shutdown checks
|
|
186
|
-
results = []
|
|
187
|
-
for i, file_path in enumerate(file_paths):
|
|
188
|
-
# Check for shutdown before processing each file
|
|
189
|
-
check_shutdown()
|
|
190
|
-
|
|
191
|
-
logger.debug(f"Processing file {i + 1}/{len(file_paths)}: {file_path}")
|
|
192
|
-
|
|
193
|
-
try:
|
|
194
|
-
# Process single file (we can't easily interrupt convert_all)
|
|
195
|
-
single_result = converter.convert_all([file_path])
|
|
196
|
-
results.extend(single_result)
|
|
197
|
-
|
|
198
|
-
# Check for shutdown after each file
|
|
199
|
-
check_shutdown()
|
|
200
|
-
|
|
201
|
-
except (OSError, ValueError, RuntimeError, ImportError) as file_error:
|
|
202
|
-
# Handle specific file processing errors
|
|
203
|
-
logger.error(f"Error processing file {file_path}: {file_error}")
|
|
204
|
-
# Continue with other files, but check for shutdown
|
|
205
|
-
check_shutdown()
|
|
206
|
-
except Exception as file_error: # noqa: BLE001
|
|
207
|
-
# Catch any other unexpected errors to prevent worker crash
|
|
208
|
-
logger.error(f"Unexpected error processing file {file_path}: {file_error}")
|
|
209
|
-
# Continue with other files, but check for shutdown
|
|
210
|
-
check_shutdown()
|
|
211
|
-
|
|
212
|
-
# Final shutdown check before sending results
|
|
213
|
-
check_shutdown()
|
|
214
|
-
|
|
215
|
-
# Process the results while maintaining the original structure
|
|
216
|
-
processed_data = [
|
|
217
|
-
{"document": res.document, "file_path": str(res.input.file), "status": res.status.name}
|
|
218
|
-
if res.status == ConversionStatus.SUCCESS
|
|
219
|
-
else None
|
|
220
|
-
for res in results
|
|
221
|
-
]
|
|
222
|
-
|
|
223
|
-
logger.info(f"Successfully processed {len([d for d in processed_data if d])} files")
|
|
224
|
-
queue.put(processed_data)
|
|
225
|
-
|
|
226
|
-
except KeyboardInterrupt:
|
|
227
|
-
logger.warning("KeyboardInterrupt during processing, exiting gracefully...")
|
|
228
|
-
queue.put({"error": "Worker interrupted during processing", "shutdown": True})
|
|
229
|
-
return
|
|
230
|
-
except Exception as e: # noqa: BLE001
|
|
231
|
-
if shutdown_requested:
|
|
232
|
-
logger.exception("Exception occurred during shutdown, exiting...")
|
|
233
|
-
return
|
|
234
|
-
|
|
235
|
-
# Send any processing error to the main process with traceback
|
|
236
|
-
error_info = {"error": str(e), "traceback": traceback.format_exc()}
|
|
237
|
-
logger.error(f"Error in worker: {error_info}")
|
|
238
|
-
queue.put(error_info)
|
|
239
|
-
finally:
|
|
240
|
-
logger.info("Docling worker finishing...")
|
|
241
|
-
# Ensure we don't leave any hanging processes
|
|
242
|
-
if shutdown_requested:
|
|
243
|
-
logger.debug("Worker shutdown completed")
|
|
244
|
-
else:
|
|
245
|
-
logger.debug("Worker completed normally")
|
|
File without changes
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
from abc import abstractmethod
|
|
2
|
-
from typing import Any
|
|
3
|
-
|
|
4
|
-
from langchain_core.documents import BaseDocumentTransformer
|
|
5
|
-
|
|
6
|
-
from langflow.custom.custom_component.component import Component
|
|
7
|
-
from langflow.io import Output
|
|
8
|
-
from langflow.schema.data import Data
|
|
9
|
-
from langflow.utils.util import build_loader_repr_from_data
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
class LCDocumentTransformerComponent(Component):
|
|
13
|
-
trace_type = "document_transformer"
|
|
14
|
-
outputs = [
|
|
15
|
-
Output(display_name="Data", name="data", method="transform_data"),
|
|
16
|
-
]
|
|
17
|
-
|
|
18
|
-
def transform_data(self) -> list[Data]:
|
|
19
|
-
data_input = self.get_data_input()
|
|
20
|
-
documents = []
|
|
21
|
-
|
|
22
|
-
if not isinstance(data_input, list):
|
|
23
|
-
data_input = [data_input]
|
|
24
|
-
|
|
25
|
-
for _input in data_input:
|
|
26
|
-
if isinstance(_input, Data):
|
|
27
|
-
documents.append(_input.to_lc_document())
|
|
28
|
-
else:
|
|
29
|
-
documents.append(_input)
|
|
30
|
-
|
|
31
|
-
transformer = self.build_document_transformer()
|
|
32
|
-
docs = transformer.transform_documents(documents)
|
|
33
|
-
data = self.to_data(docs)
|
|
34
|
-
self.repr_value = build_loader_repr_from_data(data)
|
|
35
|
-
return data
|
|
36
|
-
|
|
37
|
-
@abstractmethod
|
|
38
|
-
def get_data_input(self) -> Any:
|
|
39
|
-
"""Get the data input."""
|
|
40
|
-
|
|
41
|
-
@abstractmethod
|
|
42
|
-
def build_document_transformer(self) -> BaseDocumentTransformer:
|
|
43
|
-
"""Build the text splitter."""
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import concurrent.futures
|
|
2
|
-
import json
|
|
3
|
-
|
|
4
|
-
import httpx
|
|
5
|
-
from pydantic import BaseModel, SecretStr
|
|
6
|
-
|
|
7
|
-
from langflow.field_typing import Embeddings
|
|
8
|
-
from langflow.logging.logger import logger
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
class AIMLEmbeddingsImpl(BaseModel, Embeddings):
|
|
12
|
-
embeddings_completion_url: str = "https://api.aimlapi.com/v1/embeddings"
|
|
13
|
-
|
|
14
|
-
api_key: SecretStr
|
|
15
|
-
model: str
|
|
16
|
-
|
|
17
|
-
def embed_documents(self, texts: list[str]) -> list[list[float]]:
|
|
18
|
-
embeddings = [None] * len(texts)
|
|
19
|
-
headers = {
|
|
20
|
-
"Content-Type": "application/json",
|
|
21
|
-
"Authorization": f"Bearer {self.api_key.get_secret_value()}",
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
with httpx.Client() as client, concurrent.futures.ThreadPoolExecutor() as executor:
|
|
25
|
-
futures = []
|
|
26
|
-
for i, text in enumerate(texts):
|
|
27
|
-
futures.append((i, executor.submit(self._embed_text, client, headers, text)))
|
|
28
|
-
|
|
29
|
-
for index, future in futures:
|
|
30
|
-
try:
|
|
31
|
-
result_data = future.result()
|
|
32
|
-
if len(result_data["data"]) != 1:
|
|
33
|
-
msg = f"Expected one embedding, got {len(result_data['data'])}"
|
|
34
|
-
raise ValueError(msg)
|
|
35
|
-
embeddings[index] = result_data["data"][0]["embedding"]
|
|
36
|
-
except (
|
|
37
|
-
httpx.HTTPStatusError,
|
|
38
|
-
httpx.RequestError,
|
|
39
|
-
json.JSONDecodeError,
|
|
40
|
-
KeyError,
|
|
41
|
-
ValueError,
|
|
42
|
-
):
|
|
43
|
-
logger.exception("Error occurred")
|
|
44
|
-
raise
|
|
45
|
-
|
|
46
|
-
return embeddings # type: ignore[return-value]
|
|
47
|
-
|
|
48
|
-
def _embed_text(self, client: httpx.Client, headers: dict, text: str) -> dict:
|
|
49
|
-
payload = {
|
|
50
|
-
"model": self.model,
|
|
51
|
-
"input": text,
|
|
52
|
-
}
|
|
53
|
-
response = client.post(
|
|
54
|
-
self.embeddings_completion_url,
|
|
55
|
-
headers=headers,
|
|
56
|
-
json=payload,
|
|
57
|
-
)
|
|
58
|
-
response.raise_for_status()
|
|
59
|
-
return response.json()
|
|
60
|
-
|
|
61
|
-
def embed_query(self, text: str) -> list[float]:
|
|
62
|
-
return self.embed_documents([text])[0]
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
from langflow.custom.custom_component.component import Component
|
|
2
|
-
from langflow.field_typing import Embeddings
|
|
3
|
-
from langflow.io import Output
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
class LCEmbeddingsModel(Component):
|
|
7
|
-
trace_type = "embedding"
|
|
8
|
-
|
|
9
|
-
outputs = [
|
|
10
|
-
Output(display_name="Embedding Model", name="embeddings", method="build_embeddings"),
|
|
11
|
-
]
|
|
12
|
-
|
|
13
|
-
def _validate_outputs(self) -> None:
|
|
14
|
-
required_output_methods = ["build_embeddings"]
|
|
15
|
-
output_names = [output.name for output in self.outputs]
|
|
16
|
-
for method_name in required_output_methods:
|
|
17
|
-
if method_name not in output_names:
|
|
18
|
-
msg = f"Output with name '{method_name}' must be defined."
|
|
19
|
-
raise ValueError(msg)
|
|
20
|
-
if not hasattr(self, method_name):
|
|
21
|
-
msg = f"Method '{method_name}' must be defined."
|
|
22
|
-
raise ValueError(msg)
|
|
23
|
-
|
|
24
|
-
def build_embeddings(self) -> Embeddings:
|
|
25
|
-
msg = "You must implement the build_embeddings method in your class."
|
|
26
|
-
raise NotImplementedError(msg)
|
|
File without changes
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
from langflow.graph.schema import ResultData, RunOutputs
|
|
2
|
-
from langflow.logging.logger import logger
|
|
3
|
-
from langflow.schema.data import Data
|
|
4
|
-
from langflow.schema.message import Message
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
def build_data_from_run_outputs(run_outputs: RunOutputs) -> list[Data]:
|
|
8
|
-
"""Build a list of data from the given RunOutputs.
|
|
9
|
-
|
|
10
|
-
Args:
|
|
11
|
-
run_outputs (RunOutputs): The RunOutputs object containing the output data.
|
|
12
|
-
|
|
13
|
-
Returns:
|
|
14
|
-
List[Data]: A list of data built from the RunOutputs.
|
|
15
|
-
|
|
16
|
-
"""
|
|
17
|
-
if not run_outputs:
|
|
18
|
-
return []
|
|
19
|
-
data = []
|
|
20
|
-
for result_data in run_outputs.outputs:
|
|
21
|
-
if result_data:
|
|
22
|
-
data.extend(build_data_from_result_data(result_data))
|
|
23
|
-
return data
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
def build_data_from_result_data(result_data: ResultData) -> list[Data]:
|
|
27
|
-
"""Build a list of data from the given ResultData.
|
|
28
|
-
|
|
29
|
-
Args:
|
|
30
|
-
result_data (ResultData): The ResultData object containing the result data.
|
|
31
|
-
|
|
32
|
-
Returns:
|
|
33
|
-
List[Data]: A list of data built from the ResultData.
|
|
34
|
-
|
|
35
|
-
"""
|
|
36
|
-
messages = result_data.messages
|
|
37
|
-
|
|
38
|
-
if not messages:
|
|
39
|
-
return []
|
|
40
|
-
data = []
|
|
41
|
-
|
|
42
|
-
# Handle results without chat messages (calling flow)
|
|
43
|
-
if not messages:
|
|
44
|
-
# Result with a single record
|
|
45
|
-
if isinstance(result_data.artifacts, dict):
|
|
46
|
-
data.append(Data(data=result_data.artifacts))
|
|
47
|
-
# List of artifacts
|
|
48
|
-
elif isinstance(result_data.artifacts, list):
|
|
49
|
-
for artifact in result_data.artifacts:
|
|
50
|
-
# If multiple records are found as artifacts, return as-is
|
|
51
|
-
if isinstance(artifact, Data):
|
|
52
|
-
data.append(artifact)
|
|
53
|
-
else:
|
|
54
|
-
# Warn about unknown output type
|
|
55
|
-
logger.warning(f"Unable to build record output from unknown ResultData.artifact: {artifact}")
|
|
56
|
-
# Chat or text output
|
|
57
|
-
elif result_data.results:
|
|
58
|
-
data.append(Data(data={"result": result_data.results}, text_key="result"))
|
|
59
|
-
return data
|
|
60
|
-
else:
|
|
61
|
-
return []
|
|
62
|
-
|
|
63
|
-
if isinstance(result_data.results, dict):
|
|
64
|
-
for name, result in result_data.results.items():
|
|
65
|
-
dataobj: Data | Message | None
|
|
66
|
-
dataobj = result if isinstance(result, Message) else Data(data=result, text_key=name)
|
|
67
|
-
|
|
68
|
-
data.append(dataobj)
|
|
69
|
-
else:
|
|
70
|
-
data.append(Data(data=result_data.results))
|
|
71
|
-
return data
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
def format_flow_output_data(data: list[Data]) -> str:
|
|
75
|
-
"""Format the flow output data into a string.
|
|
76
|
-
|
|
77
|
-
Args:
|
|
78
|
-
data (List[Data]): The list of data to format.
|
|
79
|
-
|
|
80
|
-
Returns:
|
|
81
|
-
str: The formatted flow output data.
|
|
82
|
-
|
|
83
|
-
"""
|
|
84
|
-
result = "Flow run output:\n"
|
|
85
|
-
results = "\n".join([value.get_text() if hasattr(value, "get_text") else str(value) for value in data])
|
|
86
|
-
return result + results
|
|
File without changes
|
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
# Import LangChain base
|
|
2
|
-
from langchain_core.language_models.chat_models import BaseChatModel
|
|
3
|
-
from langchain_core.messages import AIMessage, HumanMessage, SystemMessage, ToolCall
|
|
4
|
-
from langchain_core.tools import BaseTool
|
|
5
|
-
|
|
6
|
-
# Import Hugging Face Model base
|
|
7
|
-
from smolagents import Model, Tool
|
|
8
|
-
from smolagents.models import ChatMessage, ChatMessageToolCall, ChatMessageToolCallDefinition
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
def _lc_tool_call_to_hf_tool_call(tool_call: ToolCall) -> ChatMessageToolCall:
|
|
12
|
-
"""Convert a LangChain ToolCall to a Hugging Face ChatMessageToolCall.
|
|
13
|
-
|
|
14
|
-
Args:
|
|
15
|
-
tool_call (ToolCall): LangChain tool call to convert
|
|
16
|
-
|
|
17
|
-
Returns:
|
|
18
|
-
ChatMessageToolCall: Equivalent Hugging Face tool call
|
|
19
|
-
"""
|
|
20
|
-
return ChatMessageToolCall(
|
|
21
|
-
function=ChatMessageToolCallDefinition(name=tool_call.name, arguments=tool_call.args),
|
|
22
|
-
id=tool_call.id,
|
|
23
|
-
)
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
def _hf_tool_to_lc_tool(tool) -> BaseTool:
|
|
27
|
-
"""Convert a Hugging Face Tool to a LangChain BaseTool.
|
|
28
|
-
|
|
29
|
-
Args:
|
|
30
|
-
tool (Tool): Hugging Face tool to convert
|
|
31
|
-
|
|
32
|
-
Returns:
|
|
33
|
-
BaseTool: Equivalent LangChain tool
|
|
34
|
-
"""
|
|
35
|
-
if not hasattr(tool, "langchain_tool"):
|
|
36
|
-
msg = "Hugging Face Tool does not have a langchain_tool attribute"
|
|
37
|
-
raise ValueError(msg)
|
|
38
|
-
return tool.langchain_tool
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
class LangChainHFModel(Model):
|
|
42
|
-
"""A class bridging Hugging Face's `Model` interface with a LangChain `BaseChatModel`.
|
|
43
|
-
|
|
44
|
-
This adapter allows using any LangChain chat model with the Hugging Face interface.
|
|
45
|
-
It handles conversion of message formats and tool calls between the two frameworks.
|
|
46
|
-
|
|
47
|
-
Usage:
|
|
48
|
-
>>> lc_model = LangChainChatModel(...) # any BaseChatModel
|
|
49
|
-
>>> hf_model = LangChainHFModel(lc_model)
|
|
50
|
-
>>> hf_model(messages=[{"role": "user", "content": "Hello!"}])
|
|
51
|
-
"""
|
|
52
|
-
|
|
53
|
-
def __init__(self, chat_model: BaseChatModel, **kwargs):
|
|
54
|
-
"""Initialize the bridge model.
|
|
55
|
-
|
|
56
|
-
Args:
|
|
57
|
-
chat_model (BaseChatModel): LangChain chat model to wrap
|
|
58
|
-
**kwargs: Additional arguments passed to Model.__init__
|
|
59
|
-
"""
|
|
60
|
-
super().__init__(**kwargs)
|
|
61
|
-
self.chat_model = chat_model
|
|
62
|
-
|
|
63
|
-
def __call__(
|
|
64
|
-
self,
|
|
65
|
-
messages: list[dict[str, str]],
|
|
66
|
-
stop_sequences: list[str] | None = None,
|
|
67
|
-
grammar: str | None = None,
|
|
68
|
-
tools_to_call_from: list[Tool] | None = None,
|
|
69
|
-
**kwargs,
|
|
70
|
-
) -> ChatMessage:
|
|
71
|
-
"""Process messages through the LangChain model and return Hugging Face format.
|
|
72
|
-
|
|
73
|
-
Args:
|
|
74
|
-
messages: List of message dictionaries with 'role' and 'content' keys
|
|
75
|
-
stop_sequences: Optional list of strings to stop generation
|
|
76
|
-
grammar: Optional grammar specification (not used)
|
|
77
|
-
tools_to_call_from: Optional list of available tools (not used)
|
|
78
|
-
**kwargs: Additional arguments passed to the LangChain model
|
|
79
|
-
|
|
80
|
-
Returns:
|
|
81
|
-
ChatMessage: Response in Hugging Face format
|
|
82
|
-
"""
|
|
83
|
-
if grammar:
|
|
84
|
-
msg = "Grammar is not yet supported."
|
|
85
|
-
raise ValueError(msg)
|
|
86
|
-
|
|
87
|
-
# Convert HF messages to LangChain messages
|
|
88
|
-
lc_messages = []
|
|
89
|
-
for m in messages:
|
|
90
|
-
role = m["role"]
|
|
91
|
-
content = m["content"]
|
|
92
|
-
if role == "system":
|
|
93
|
-
lc_messages.append(SystemMessage(content=content))
|
|
94
|
-
elif role == "assistant":
|
|
95
|
-
lc_messages.append(AIMessage(content=content))
|
|
96
|
-
else:
|
|
97
|
-
# Default any unknown role to "user"
|
|
98
|
-
lc_messages.append(HumanMessage(content=content))
|
|
99
|
-
|
|
100
|
-
# Convert tools to LangChain tools
|
|
101
|
-
if tools_to_call_from:
|
|
102
|
-
tools_to_call_from = [_hf_tool_to_lc_tool(tool) for tool in tools_to_call_from]
|
|
103
|
-
|
|
104
|
-
model = self.chat_model.bind_tools(tools_to_call_from) if tools_to_call_from else self.chat_model
|
|
105
|
-
|
|
106
|
-
# Call the LangChain model
|
|
107
|
-
result_msg: AIMessage = model.invoke(lc_messages, stop=stop_sequences, **kwargs)
|
|
108
|
-
|
|
109
|
-
# Convert the AIMessage into an HF ChatMessage
|
|
110
|
-
return ChatMessage(
|
|
111
|
-
role="assistant",
|
|
112
|
-
content=result_msg.content or "",
|
|
113
|
-
tool_calls=[_lc_tool_call_to_hf_tool_call(tool_call) for tool_call in result_msg.tool_calls],
|
|
114
|
-
)
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
# How to use
|
|
118
|
-
# if __name__ == "__main__":
|
|
119
|
-
# from langchain_community.tools import DuckDuckGoSearchRun
|
|
120
|
-
# from langchain_openai import ChatOpenAI
|
|
121
|
-
# from rich import rprint
|
|
122
|
-
# from smolagents import CodeAgent
|
|
123
|
-
|
|
124
|
-
# # Example usage
|
|
125
|
-
# model = LangChainHFModel(chat_model=ChatOpenAI(model="gpt-4o-mini"))
|
|
126
|
-
# search_tool = DuckDuckGoSearchRun()
|
|
127
|
-
# hf_tool = Tool.from_langchain(search_tool)
|
|
128
|
-
|
|
129
|
-
# code_agent = CodeAgent(
|
|
130
|
-
# model=model,
|
|
131
|
-
# tools=[hf_tool],
|
|
132
|
-
# )
|
|
133
|
-
# rprint(code_agent.run("Search for Langflow on DuckDuckGo and return the first result"))
|
|
File without changes
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
from abc import abstractmethod
|
|
2
|
-
from collections.abc import Sequence
|
|
3
|
-
|
|
4
|
-
from langflow.custom.custom_component.component import Component
|
|
5
|
-
from langflow.field_typing import Tool
|
|
6
|
-
from langflow.io import Output
|
|
7
|
-
from langflow.schema.data import Data
|
|
8
|
-
from langflow.schema.dataframe import DataFrame
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
class LCToolComponent(Component):
|
|
12
|
-
trace_type = "tool"
|
|
13
|
-
outputs = [
|
|
14
|
-
Output(name="api_run_model", display_name="Data", method="run_model"),
|
|
15
|
-
Output(name="api_build_tool", display_name="Tool", method="build_tool"),
|
|
16
|
-
]
|
|
17
|
-
|
|
18
|
-
def _validate_outputs(self) -> None:
|
|
19
|
-
required_output_methods = ["run_model", "build_tool"]
|
|
20
|
-
output_names = [output.name for output in self.outputs]
|
|
21
|
-
for method_name in required_output_methods:
|
|
22
|
-
if method_name not in output_names:
|
|
23
|
-
msg = f"Output with name '{method_name}' must be defined."
|
|
24
|
-
raise ValueError(msg)
|
|
25
|
-
if not hasattr(self, method_name):
|
|
26
|
-
msg = f"Method '{method_name}' must be defined."
|
|
27
|
-
raise ValueError(msg)
|
|
28
|
-
|
|
29
|
-
@abstractmethod
|
|
30
|
-
def run_model(self) -> Data | list[Data] | DataFrame:
|
|
31
|
-
"""Run model and return the output."""
|
|
32
|
-
|
|
33
|
-
@abstractmethod
|
|
34
|
-
def build_tool(self) -> Tool | Sequence[Tool]:
|
|
35
|
-
"""Build the tool."""
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
MODES = ["scrape", "crawl"]
|
|
File without changes
|
langflow/base/langwatch/utils.py
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
from functools import lru_cache
|
|
2
|
-
from typing import Any
|
|
3
|
-
|
|
4
|
-
import httpx
|
|
5
|
-
|
|
6
|
-
from langflow.logging.logger import logger
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
@lru_cache(maxsize=1)
|
|
10
|
-
def get_cached_evaluators(url: str) -> dict[str, Any]:
|
|
11
|
-
try:
|
|
12
|
-
response = httpx.get(url, timeout=10)
|
|
13
|
-
response.raise_for_status()
|
|
14
|
-
data = response.json()
|
|
15
|
-
return data.get("evaluators", {})
|
|
16
|
-
except httpx.RequestError as e:
|
|
17
|
-
logger.error(f"Error fetching evaluators: {e}")
|
|
18
|
-
return {}
|
langflow/base/mcp/__init__.py
DELETED
|
File without changes
|
langflow/base/mcp/constants.py
DELETED