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
langflow/graph/schema.py
DELETED
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
from enum import Enum
|
|
2
|
-
from typing import Any
|
|
3
|
-
|
|
4
|
-
from pydantic import BaseModel, Field, field_serializer, model_validator
|
|
5
|
-
|
|
6
|
-
from langflow.schema.schema import OutputValue, StreamURL
|
|
7
|
-
from langflow.serialization.serialization import serialize
|
|
8
|
-
from langflow.utils.schemas import ChatOutputResponse, ContainsEnumMeta
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
class ResultData(BaseModel):
|
|
12
|
-
results: Any | None = Field(default_factory=dict)
|
|
13
|
-
artifacts: Any | None = Field(default_factory=dict)
|
|
14
|
-
outputs: dict | None = Field(default_factory=dict)
|
|
15
|
-
logs: dict | None = Field(default_factory=dict)
|
|
16
|
-
messages: list[ChatOutputResponse] | None = Field(default_factory=list)
|
|
17
|
-
timedelta: float | None = None
|
|
18
|
-
duration: str | None = None
|
|
19
|
-
component_display_name: str | None = None
|
|
20
|
-
component_id: str | None = None
|
|
21
|
-
used_frozen_result: bool | None = False
|
|
22
|
-
|
|
23
|
-
@field_serializer("results")
|
|
24
|
-
def serialize_results(self, value):
|
|
25
|
-
if isinstance(value, dict):
|
|
26
|
-
return {key: serialize(val) for key, val in value.items()}
|
|
27
|
-
return serialize(value)
|
|
28
|
-
|
|
29
|
-
@model_validator(mode="before")
|
|
30
|
-
@classmethod
|
|
31
|
-
def validate_model(cls, values):
|
|
32
|
-
if not values.get("outputs") and values.get("artifacts"):
|
|
33
|
-
# Build the log from the artifacts
|
|
34
|
-
|
|
35
|
-
for key in values["artifacts"]:
|
|
36
|
-
message = values["artifacts"][key]
|
|
37
|
-
|
|
38
|
-
# ! Temporary fix
|
|
39
|
-
if message is None:
|
|
40
|
-
continue
|
|
41
|
-
|
|
42
|
-
if "stream_url" in message and "type" in message:
|
|
43
|
-
stream_url = StreamURL(location=message["stream_url"])
|
|
44
|
-
values["outputs"].update({key: OutputValue(message=stream_url, type=message["type"])})
|
|
45
|
-
elif "type" in message:
|
|
46
|
-
values["outputs"].update({key: OutputValue(message=message, type=message["type"])})
|
|
47
|
-
return values
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
class InterfaceComponentTypes(str, Enum, metaclass=ContainsEnumMeta):
|
|
51
|
-
ChatInput = "ChatInput"
|
|
52
|
-
ChatOutput = "ChatOutput"
|
|
53
|
-
TextInput = "TextInput"
|
|
54
|
-
TextOutput = "TextOutput"
|
|
55
|
-
DataOutput = "DataOutput"
|
|
56
|
-
WebhookInput = "Webhook"
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
CHAT_COMPONENTS = [InterfaceComponentTypes.ChatInput, InterfaceComponentTypes.ChatOutput]
|
|
60
|
-
RECORDS_COMPONENTS = [InterfaceComponentTypes.DataOutput]
|
|
61
|
-
INPUT_COMPONENTS = [
|
|
62
|
-
InterfaceComponentTypes.ChatInput,
|
|
63
|
-
InterfaceComponentTypes.WebhookInput,
|
|
64
|
-
InterfaceComponentTypes.TextInput,
|
|
65
|
-
]
|
|
66
|
-
OUTPUT_COMPONENTS = [
|
|
67
|
-
InterfaceComponentTypes.ChatOutput,
|
|
68
|
-
InterfaceComponentTypes.DataOutput,
|
|
69
|
-
InterfaceComponentTypes.TextOutput,
|
|
70
|
-
]
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
class RunOutputs(BaseModel):
|
|
74
|
-
inputs: dict = Field(default_factory=dict)
|
|
75
|
-
outputs: list[ResultData | None] = Field(default_factory=list)
|
langflow/graph/state/__init__.py
DELETED
|
File without changes
|
langflow/graph/state/model.py
DELETED
|
@@ -1,237 +0,0 @@
|
|
|
1
|
-
from collections.abc import Callable
|
|
2
|
-
from typing import Any, get_type_hints
|
|
3
|
-
|
|
4
|
-
from pydantic import ConfigDict, computed_field, create_model
|
|
5
|
-
from pydantic.fields import FieldInfo
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
def __validate_method(method: Callable) -> None:
|
|
9
|
-
"""Validates a method by checking if it has the required attributes.
|
|
10
|
-
|
|
11
|
-
This function ensures that the given method belongs to a class with the necessary
|
|
12
|
-
structure for output handling. It checks for the presence of a __self__ attribute
|
|
13
|
-
on the method and a get_output_by_method attribute on the method's class.
|
|
14
|
-
|
|
15
|
-
Args:
|
|
16
|
-
method (Callable): The method to be validated.
|
|
17
|
-
|
|
18
|
-
Raises:
|
|
19
|
-
ValueError: If the method does not have a __self__ attribute or if the method's
|
|
20
|
-
class does not have a get_output_by_method attribute.
|
|
21
|
-
|
|
22
|
-
Example:
|
|
23
|
-
>>> class ValidClass:
|
|
24
|
-
... def get_output_by_method(self):
|
|
25
|
-
... pass
|
|
26
|
-
... def valid_method(self):
|
|
27
|
-
... pass
|
|
28
|
-
>>> __validate_method(ValidClass().valid_method) # This will pass
|
|
29
|
-
>>> __validate_method(lambda x: x) # This will raise a ValueError
|
|
30
|
-
"""
|
|
31
|
-
if not hasattr(method, "__self__"):
|
|
32
|
-
msg = f"Method {method} does not have a __self__ attribute."
|
|
33
|
-
raise ValueError(msg)
|
|
34
|
-
if not hasattr(method.__self__, "get_output_by_method"):
|
|
35
|
-
msg = f"Method's class {method.__self__} must have a get_output_by_method attribute."
|
|
36
|
-
raise ValueError(msg)
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
def build_output_getter(method: Callable, *, validate: bool = True) -> Callable:
|
|
40
|
-
"""Builds an output getter function for a given method in a graph component.
|
|
41
|
-
|
|
42
|
-
This function creates a new callable that, when invoked, retrieves the output
|
|
43
|
-
of the specified method using the get_output_by_method of the method's class.
|
|
44
|
-
It's used in creating dynamic state models for graph components.
|
|
45
|
-
|
|
46
|
-
Args:
|
|
47
|
-
method (Callable): The method for which to build the output getter.
|
|
48
|
-
validate (bool, optional): Whether to validate the method before building
|
|
49
|
-
the getter. Defaults to True.
|
|
50
|
-
|
|
51
|
-
Returns:
|
|
52
|
-
Callable: The output getter function. When called, this function returns
|
|
53
|
-
the value of the output associated with the original method.
|
|
54
|
-
|
|
55
|
-
Raises:
|
|
56
|
-
ValueError: If the method has no return type annotation or if validation fails.
|
|
57
|
-
|
|
58
|
-
Notes:
|
|
59
|
-
- The getter function returns UNDEFINED if the output has not been set.
|
|
60
|
-
- When validate is True, the method must belong to a class with a
|
|
61
|
-
'get_output_by_method' attribute.
|
|
62
|
-
- This function is typically used internally by create_state_model.
|
|
63
|
-
|
|
64
|
-
Example:
|
|
65
|
-
>>> class ChatComponent:
|
|
66
|
-
... def get_output_by_method(self, method):
|
|
67
|
-
... return type('Output', (), {'value': "Hello, World!"})()
|
|
68
|
-
... def get_message(self) -> str:
|
|
69
|
-
... pass
|
|
70
|
-
>>> component = ChatComponent()
|
|
71
|
-
>>> getter = build_output_getter(component.get_message)
|
|
72
|
-
>>> print(getter(None)) # This will print "Hello, World!"
|
|
73
|
-
"""
|
|
74
|
-
|
|
75
|
-
def output_getter(_):
|
|
76
|
-
if validate:
|
|
77
|
-
__validate_method(method)
|
|
78
|
-
methods_class = method.__self__
|
|
79
|
-
output = methods_class.get_output_by_method(method)
|
|
80
|
-
return output.value
|
|
81
|
-
|
|
82
|
-
return_type = get_type_hints(method).get("return", None)
|
|
83
|
-
|
|
84
|
-
if return_type is None:
|
|
85
|
-
msg = f"Method {method.__name__} has no return type annotation."
|
|
86
|
-
raise ValueError(msg)
|
|
87
|
-
output_getter.__annotations__["return"] = return_type
|
|
88
|
-
return output_getter
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
def build_output_setter(method: Callable, *, validate: bool = True) -> Callable:
|
|
92
|
-
"""Build an output setter function for a given method in a graph component.
|
|
93
|
-
|
|
94
|
-
This function creates a new callable that, when invoked, sets the output
|
|
95
|
-
of the specified method using the get_output_by_method of the method's class.
|
|
96
|
-
It's used in creating dynamic state models for graph components, allowing
|
|
97
|
-
for the modification of component states.
|
|
98
|
-
|
|
99
|
-
Args:
|
|
100
|
-
method (Callable): The method for which the output setter is being built.
|
|
101
|
-
validate (bool, optional): Flag indicating whether to validate the method
|
|
102
|
-
before building the setter. Defaults to True.
|
|
103
|
-
|
|
104
|
-
Returns:
|
|
105
|
-
Callable: The output setter function. When called with a value, this function
|
|
106
|
-
sets the output associated with the original method to that value.
|
|
107
|
-
|
|
108
|
-
Raises:
|
|
109
|
-
ValueError: If validation fails when validate is True.
|
|
110
|
-
|
|
111
|
-
Notes:
|
|
112
|
-
- When validate is True, the method must belong to a class with a
|
|
113
|
-
'get_output_by_method' attribute.
|
|
114
|
-
- This function is typically used internally by create_state_model.
|
|
115
|
-
- The setter allows for dynamic updating of component states in a graph.
|
|
116
|
-
|
|
117
|
-
Example:
|
|
118
|
-
>>> class ChatComponent:
|
|
119
|
-
... def get_output_by_method(self, method):
|
|
120
|
-
... return type('Output', (), {'value': None})()
|
|
121
|
-
... def set_message(self):
|
|
122
|
-
... pass
|
|
123
|
-
>>> component = ChatComponent()
|
|
124
|
-
>>> setter = build_output_setter(component.set_message)
|
|
125
|
-
>>> setter(component, "New message")
|
|
126
|
-
>>> print(component.get_output_by_method(component.set_message).value) # Prints "New message"
|
|
127
|
-
"""
|
|
128
|
-
|
|
129
|
-
def output_setter(self, value) -> None: # noqa: ARG001
|
|
130
|
-
if validate:
|
|
131
|
-
__validate_method(method)
|
|
132
|
-
methods_class = method.__self__ # type: ignore[attr-defined]
|
|
133
|
-
output = methods_class.get_output_by_method(method)
|
|
134
|
-
output.value = value
|
|
135
|
-
|
|
136
|
-
return output_setter
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
def create_state_model(model_name: str = "State", *, validate: bool = True, **kwargs) -> type:
|
|
140
|
-
"""Create a dynamic Pydantic state model based on the provided keyword arguments.
|
|
141
|
-
|
|
142
|
-
This function generates a Pydantic model class with fields corresponding to the
|
|
143
|
-
provided keyword arguments. It can handle various types of field definitions,
|
|
144
|
-
including callable methods (which are converted to properties), FieldInfo objects,
|
|
145
|
-
and type-default value tuples.
|
|
146
|
-
|
|
147
|
-
Args:
|
|
148
|
-
model_name (str, optional): The name of the model. Defaults to "State".
|
|
149
|
-
validate (bool, optional): Whether to validate the methods when converting
|
|
150
|
-
them to properties. Defaults to True.
|
|
151
|
-
**kwargs: Keyword arguments representing the fields of the model. Each argument
|
|
152
|
-
can be a callable method, a FieldInfo object, or a tuple of (type, default).
|
|
153
|
-
|
|
154
|
-
Returns:
|
|
155
|
-
type: The dynamically created Pydantic state model class.
|
|
156
|
-
|
|
157
|
-
Raises:
|
|
158
|
-
ValueError: If the provided field value is invalid or cannot be processed.
|
|
159
|
-
|
|
160
|
-
Examples:
|
|
161
|
-
>>> from langflow.components.io import ChatInput
|
|
162
|
-
>>> from langflow.components.io.ChatOutput import ChatOutput
|
|
163
|
-
>>> from pydantic import Field
|
|
164
|
-
>>>
|
|
165
|
-
>>> chat_input = ChatInput()
|
|
166
|
-
>>> chat_output = ChatOutput()
|
|
167
|
-
>>>
|
|
168
|
-
>>> # Create a model with a method from a component
|
|
169
|
-
>>> StateModel = create_state_model(method_one=chat_input.message_response)
|
|
170
|
-
>>> state = StateModel()
|
|
171
|
-
>>> assert state.method_one is UNDEFINED
|
|
172
|
-
>>> chat_input.set_output_value("message", "test")
|
|
173
|
-
>>> assert state.method_one == "test"
|
|
174
|
-
>>>
|
|
175
|
-
>>> # Create a model with multiple components and a Pydantic Field
|
|
176
|
-
>>> NewStateModel = create_state_model(
|
|
177
|
-
... model_name="NewStateModel",
|
|
178
|
-
... first_method=chat_input.message_response,
|
|
179
|
-
... second_method=chat_output.message_response,
|
|
180
|
-
... my_attribute=Field(None)
|
|
181
|
-
... )
|
|
182
|
-
>>> new_state = NewStateModel()
|
|
183
|
-
>>> new_state.first_method = "test"
|
|
184
|
-
>>> new_state.my_attribute = 123
|
|
185
|
-
>>> assert new_state.first_method == "test"
|
|
186
|
-
>>> assert new_state.my_attribute == 123
|
|
187
|
-
>>>
|
|
188
|
-
>>> # Create a model with tuple-based field definitions
|
|
189
|
-
>>> TupleStateModel = create_state_model(field_one=(str, "default"), field_two=(int, 123))
|
|
190
|
-
>>> tuple_state = TupleStateModel()
|
|
191
|
-
>>> assert tuple_state.field_one == "default"
|
|
192
|
-
>>> assert tuple_state.field_two == 123
|
|
193
|
-
|
|
194
|
-
Notes:
|
|
195
|
-
- The function handles empty keyword arguments gracefully.
|
|
196
|
-
- For tuple-based field definitions, the first element must be a valid Python type.
|
|
197
|
-
- Unsupported value types in keyword arguments will raise a ValueError.
|
|
198
|
-
- Callable methods must have proper return type annotations and belong to a class
|
|
199
|
-
with a 'get_output_by_method' attribute when validate is True.
|
|
200
|
-
"""
|
|
201
|
-
fields = {}
|
|
202
|
-
|
|
203
|
-
for name, value in kwargs.items():
|
|
204
|
-
# Extract the return type from the method's type annotations
|
|
205
|
-
if callable(value):
|
|
206
|
-
# Define the field with the return type
|
|
207
|
-
try:
|
|
208
|
-
__validate_method(value)
|
|
209
|
-
getter = build_output_getter(value, validate=validate)
|
|
210
|
-
setter = build_output_setter(value, validate=validate)
|
|
211
|
-
property_method = property(getter, setter)
|
|
212
|
-
except ValueError as e:
|
|
213
|
-
# If the method is not valid,assume it is already a getter
|
|
214
|
-
if ("get_output_by_method" not in str(e) and "__self__" not in str(e)) or validate:
|
|
215
|
-
raise
|
|
216
|
-
property_method = value
|
|
217
|
-
fields[name] = computed_field(property_method)
|
|
218
|
-
elif isinstance(value, FieldInfo):
|
|
219
|
-
field_tuple = (value.annotation or Any, value)
|
|
220
|
-
fields[name] = field_tuple
|
|
221
|
-
elif isinstance(value, tuple) and len(value) == 2: # noqa: PLR2004
|
|
222
|
-
# Fields are defined by one of the following tuple forms:
|
|
223
|
-
|
|
224
|
-
# (<type>, <default value>)
|
|
225
|
-
# (<type>, Field(...))
|
|
226
|
-
# typing.Annotated[<type>, Field(...)]
|
|
227
|
-
if not isinstance(value[0], type):
|
|
228
|
-
msg = f"Invalid type for field {name}: {type(value[0])}"
|
|
229
|
-
raise TypeError(msg)
|
|
230
|
-
fields[name] = (value[0], value[1])
|
|
231
|
-
else:
|
|
232
|
-
msg = f"Invalid value type {type(value)} for field {name}"
|
|
233
|
-
raise ValueError(msg)
|
|
234
|
-
|
|
235
|
-
# Create the model dynamically
|
|
236
|
-
config_dict = ConfigDict(arbitrary_types_allowed=True, validate_assignment=True)
|
|
237
|
-
return create_model(model_name, __config__=config_dict, **fields)
|
langflow/graph/utils.py
DELETED
|
@@ -1,229 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
|
|
3
|
-
from collections.abc import Generator
|
|
4
|
-
from enum import Enum
|
|
5
|
-
from typing import TYPE_CHECKING, Any
|
|
6
|
-
from uuid import UUID
|
|
7
|
-
|
|
8
|
-
import pandas as pd
|
|
9
|
-
|
|
10
|
-
from langflow.interface.utils import extract_input_variables_from_prompt
|
|
11
|
-
from langflow.logging.logger import logger
|
|
12
|
-
from langflow.schema.data import Data
|
|
13
|
-
from langflow.schema.message import Message
|
|
14
|
-
from langflow.serialization.serialization import get_max_items_length, get_max_text_length, serialize
|
|
15
|
-
from langflow.services.database.models.transactions.crud import log_transaction as crud_log_transaction
|
|
16
|
-
from langflow.services.database.models.transactions.model import TransactionBase
|
|
17
|
-
from langflow.services.database.models.vertex_builds.crud import log_vertex_build as crud_log_vertex_build
|
|
18
|
-
from langflow.services.database.models.vertex_builds.model import VertexBuildBase
|
|
19
|
-
from langflow.services.database.utils import session_getter
|
|
20
|
-
from langflow.services.deps import get_db_service, get_settings_service
|
|
21
|
-
|
|
22
|
-
if TYPE_CHECKING:
|
|
23
|
-
from langflow.api.v1.schemas import ResultDataResponse
|
|
24
|
-
from langflow.graph.vertex.base import Vertex
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
class UnbuiltObject:
|
|
28
|
-
pass
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
class UnbuiltResult:
|
|
32
|
-
pass
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
class ArtifactType(str, Enum):
|
|
36
|
-
TEXT = "text"
|
|
37
|
-
RECORD = "record"
|
|
38
|
-
OBJECT = "object"
|
|
39
|
-
ARRAY = "array"
|
|
40
|
-
STREAM = "stream"
|
|
41
|
-
UNKNOWN = "unknown"
|
|
42
|
-
MESSAGE = "message"
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
def validate_prompt(prompt: str):
|
|
46
|
-
"""Validate prompt."""
|
|
47
|
-
if extract_input_variables_from_prompt(prompt):
|
|
48
|
-
return prompt
|
|
49
|
-
|
|
50
|
-
return fix_prompt(prompt)
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
def fix_prompt(prompt: str):
|
|
54
|
-
"""Fix prompt."""
|
|
55
|
-
return prompt + " {input}"
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
def flatten_list(list_of_lists: list[list | Any]) -> list:
|
|
59
|
-
"""Flatten list of lists."""
|
|
60
|
-
new_list = []
|
|
61
|
-
for item in list_of_lists:
|
|
62
|
-
if isinstance(item, list):
|
|
63
|
-
new_list.extend(item)
|
|
64
|
-
else:
|
|
65
|
-
new_list.append(item)
|
|
66
|
-
return new_list
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
def get_artifact_type(value, build_result) -> str:
|
|
70
|
-
result = ArtifactType.UNKNOWN
|
|
71
|
-
match value:
|
|
72
|
-
case Data():
|
|
73
|
-
result = ArtifactType.RECORD
|
|
74
|
-
|
|
75
|
-
case str():
|
|
76
|
-
result = ArtifactType.TEXT
|
|
77
|
-
|
|
78
|
-
case dict():
|
|
79
|
-
result = ArtifactType.OBJECT
|
|
80
|
-
|
|
81
|
-
case list():
|
|
82
|
-
result = ArtifactType.ARRAY
|
|
83
|
-
|
|
84
|
-
case Message():
|
|
85
|
-
result = ArtifactType.MESSAGE
|
|
86
|
-
|
|
87
|
-
if result == ArtifactType.UNKNOWN and (
|
|
88
|
-
isinstance(build_result, Generator) or (isinstance(value, Message) and isinstance(value.text, Generator))
|
|
89
|
-
):
|
|
90
|
-
result = ArtifactType.STREAM
|
|
91
|
-
|
|
92
|
-
return result.value
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
def post_process_raw(raw, artifact_type: str):
|
|
96
|
-
if artifact_type == ArtifactType.STREAM.value:
|
|
97
|
-
raw = ""
|
|
98
|
-
|
|
99
|
-
return raw
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
def _vertex_to_primitive_dict(target: Vertex) -> dict:
|
|
103
|
-
"""Cleans the parameters of the target vertex."""
|
|
104
|
-
# Removes all keys that the values aren't python types like str, int, bool, etc.
|
|
105
|
-
params = {
|
|
106
|
-
key: value for key, value in target.params.items() if isinstance(value, str | int | bool | float | list | dict)
|
|
107
|
-
}
|
|
108
|
-
# if it is a list we need to check if the contents are python types
|
|
109
|
-
for key, value in params.items():
|
|
110
|
-
if isinstance(value, list):
|
|
111
|
-
params[key] = [item for item in value if isinstance(item, str | int | bool | float | list | dict)]
|
|
112
|
-
return params
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
async def log_transaction(
|
|
116
|
-
flow_id: str | UUID, source: Vertex, status, target: Vertex | None = None, error=None
|
|
117
|
-
) -> None:
|
|
118
|
-
"""Asynchronously logs a transaction record for a vertex in a flow if transaction storage is enabled.
|
|
119
|
-
|
|
120
|
-
Serializes the source vertex's primitive parameters and result, handling pandas DataFrames as needed,
|
|
121
|
-
and records transaction details including inputs, outputs, status, error, and flow ID in the database.
|
|
122
|
-
If the flow ID is not provided, attempts to retrieve it from the source vertex's graph.
|
|
123
|
-
Logs warnings and errors on serialization or database failures.
|
|
124
|
-
"""
|
|
125
|
-
try:
|
|
126
|
-
if not get_settings_service().settings.transactions_storage_enabled:
|
|
127
|
-
return
|
|
128
|
-
if not flow_id:
|
|
129
|
-
if source.graph.flow_id:
|
|
130
|
-
flow_id = source.graph.flow_id
|
|
131
|
-
else:
|
|
132
|
-
return
|
|
133
|
-
inputs = _vertex_to_primitive_dict(source)
|
|
134
|
-
|
|
135
|
-
# Convert the result to a serializable format
|
|
136
|
-
if source.result:
|
|
137
|
-
try:
|
|
138
|
-
result_dict = source.result.model_dump()
|
|
139
|
-
for key, value in result_dict.items():
|
|
140
|
-
if isinstance(value, pd.DataFrame):
|
|
141
|
-
result_dict[key] = value.to_dict()
|
|
142
|
-
outputs = result_dict
|
|
143
|
-
except Exception as e: # noqa: BLE001
|
|
144
|
-
await logger.awarning(f"Error serializing result: {e!s}")
|
|
145
|
-
outputs = None
|
|
146
|
-
else:
|
|
147
|
-
outputs = None
|
|
148
|
-
|
|
149
|
-
transaction = TransactionBase(
|
|
150
|
-
vertex_id=source.id,
|
|
151
|
-
target_id=target.id if target else None,
|
|
152
|
-
inputs=serialize(inputs, max_length=get_max_text_length(), max_items=get_max_items_length()),
|
|
153
|
-
outputs=serialize(outputs, max_length=get_max_text_length(), max_items=get_max_items_length()),
|
|
154
|
-
status=status,
|
|
155
|
-
error=error,
|
|
156
|
-
flow_id=flow_id if isinstance(flow_id, UUID) else UUID(flow_id),
|
|
157
|
-
)
|
|
158
|
-
async with session_getter(get_db_service()) as session:
|
|
159
|
-
with session.no_autoflush:
|
|
160
|
-
inserted = await crud_log_transaction(session, transaction)
|
|
161
|
-
if inserted:
|
|
162
|
-
await logger.adebug(f"Logged transaction: {inserted.id}")
|
|
163
|
-
except Exception as exc: # noqa: BLE001
|
|
164
|
-
await logger.aerror(f"Error logging transaction: {exc!s}")
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
async def log_vertex_build(
|
|
168
|
-
*,
|
|
169
|
-
flow_id: str | UUID,
|
|
170
|
-
vertex_id: str,
|
|
171
|
-
valid: bool,
|
|
172
|
-
params: Any,
|
|
173
|
-
data: ResultDataResponse | dict,
|
|
174
|
-
artifacts: dict | None = None,
|
|
175
|
-
) -> None:
|
|
176
|
-
"""Asynchronously logs a vertex build record to the database if vertex build storage is enabled.
|
|
177
|
-
|
|
178
|
-
Serializes the provided data and artifacts with configurable length and item limits before storing.
|
|
179
|
-
Converts parameters to string if present. Handles exceptions by logging errors.
|
|
180
|
-
"""
|
|
181
|
-
try:
|
|
182
|
-
if not get_settings_service().settings.vertex_builds_storage_enabled:
|
|
183
|
-
return
|
|
184
|
-
try:
|
|
185
|
-
if isinstance(flow_id, str):
|
|
186
|
-
flow_id = UUID(flow_id)
|
|
187
|
-
except ValueError:
|
|
188
|
-
msg = f"Invalid flow_id passed to log_vertex_build: {flow_id!r}(type: {type(flow_id)})"
|
|
189
|
-
raise ValueError(msg) from None
|
|
190
|
-
|
|
191
|
-
vertex_build = VertexBuildBase(
|
|
192
|
-
flow_id=flow_id,
|
|
193
|
-
id=vertex_id,
|
|
194
|
-
valid=valid,
|
|
195
|
-
params=str(params) if params else None,
|
|
196
|
-
data=serialize(data, max_length=get_max_text_length(), max_items=get_max_items_length()),
|
|
197
|
-
artifacts=serialize(artifacts, max_length=get_max_text_length(), max_items=get_max_items_length()),
|
|
198
|
-
)
|
|
199
|
-
async with session_getter(get_db_service()) as session:
|
|
200
|
-
inserted = await crud_log_vertex_build(session, vertex_build)
|
|
201
|
-
await logger.adebug(f"Logged vertex build: {inserted.build_id}")
|
|
202
|
-
except Exception: # noqa: BLE001
|
|
203
|
-
await logger.aexception("Error logging vertex build")
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
def rewrite_file_path(file_path: str):
|
|
207
|
-
file_path = file_path.replace("\\", "/")
|
|
208
|
-
|
|
209
|
-
if ":" in file_path:
|
|
210
|
-
file_path = file_path.split(":", 1)[-1]
|
|
211
|
-
|
|
212
|
-
file_path_split = [part for part in file_path.split("/") if part]
|
|
213
|
-
|
|
214
|
-
if len(file_path_split) > 1:
|
|
215
|
-
consistent_file_path = f"{file_path_split[-2]}/{file_path_split[-1]}"
|
|
216
|
-
else:
|
|
217
|
-
consistent_file_path = "/".join(file_path_split)
|
|
218
|
-
|
|
219
|
-
return [consistent_file_path]
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
def has_output_vertex(vertices: dict[Vertex, int]):
|
|
223
|
-
return any(vertex.is_output for vertex in vertices)
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
def has_chat_output(vertices: dict[Vertex, int]):
|
|
227
|
-
from langflow.graph.schema import InterfaceComponentTypes
|
|
228
|
-
|
|
229
|
-
return any(InterfaceComponentTypes.ChatOutput in vertex.id for vertex in vertices)
|
|
File without changes
|