langflow-base-nightly 0.5.1.dev3__py3-none-any.whl → 0.5.1.dev4__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- langflow/__init__.py +215 -0
- langflow/__main__.py +16 -2
- langflow/alembic/versions/006b3990db50_add_unique_constraints.py +4 -7
- langflow/alembic/versions/012fb73ac359_add_folder_table.py +4 -5
- langflow/alembic/versions/0ae3a2674f32_update_the_columns_that_need_to_change_.py +11 -20
- langflow/alembic/versions/0b8757876a7c_.py +4 -7
- langflow/alembic/versions/0d60fcbd4e8e_create_vertex_builds_table.py +4 -6
- langflow/alembic/versions/1a110b568907_replace_credential_table_with_variable.py +4 -5
- langflow/alembic/versions/1b8b740a6fa3_remove_fk_constraint_in_message_.py +32 -27
- langflow/alembic/versions/1c79524817ed_add_unique_constraints_per_user_in_.py +4 -5
- langflow/alembic/versions/1d90f8a0efe1_update_description_columns_type.py +4 -5
- langflow/alembic/versions/1eab2c3eb45e_event_error.py +14 -15
- langflow/alembic/versions/1ef9c4f3765d_.py +5 -10
- langflow/alembic/versions/1f4d6df60295_add_default_fields_column.py +4 -5
- langflow/alembic/versions/260dbcc8b680_adds_tables.py +4 -5
- langflow/alembic/versions/29fe8f1f806b_add_missing_index.py +4 -5
- langflow/alembic/versions/2ac71eb9c3ae_adds_credential_table.py +4 -7
- langflow/alembic/versions/3bb0ddf32dfb_add_unique_constraints_per_user_in_flow_.py +4 -5
- langflow/alembic/versions/4e5980a44eaa_fix_date_times_again.py +1 -2
- langflow/alembic/versions/58b28437a398_modify_nullable.py +1 -2
- langflow/alembic/versions/5ace73a7f223_new_remove_table_upgrade_op.py +6 -12
- langflow/alembic/versions/631faacf5da2_add_webhook_columns.py +4 -5
- langflow/alembic/versions/63b9c451fd30_add_icon_and_icon_bg_color_to_flow.py +4 -5
- langflow/alembic/versions/66f72f04a1de_add_mcp_support_with_project_settings_.py +21 -23
- langflow/alembic/versions/67cc006d50bf_add_profile_image_column.py +4 -5
- langflow/alembic/versions/6e7b581b5648_fix_nullable.py +4 -5
- langflow/alembic/versions/7843803a87b5_store_updates.py +4 -6
- langflow/alembic/versions/79e675cb6752_change_datetime_type.py +1 -2
- langflow/alembic/versions/7d2162acc8b2_adds_updated_at_and_folder_cols.py +4 -10
- langflow/alembic/versions/90be8e2ed91e_create_transactions_table.py +4 -6
- langflow/alembic/versions/93e2705fa8d6_add_column_save_path_to_flow.py +7 -9
- langflow/alembic/versions/a72f5cf9c2f9_add_endpoint_name_col.py +4 -5
- langflow/alembic/versions/b2fa308044b5_add_unique_constraints.py +1 -2
- langflow/alembic/versions/bc2f01c40e4a_new_fixes.py +4 -5
- langflow/alembic/versions/c153816fd85f_set_name_and_value_to_not_nullable.py +4 -5
- langflow/alembic/versions/d066bfd22890_add_message_table.py +4 -4
- langflow/alembic/versions/d2d475a1f7c0_add_tags_column_to_flow.py +12 -13
- langflow/alembic/versions/d3dbf656a499_add_gradient_column_in_flow.py +12 -12
- langflow/alembic/versions/d9a6ea21edcd_rename_default_folder.py +7 -10
- langflow/alembic/versions/dd9e0804ebd1_add_v2_file_table.py +8 -7
- langflow/alembic/versions/e3162c1804e6_add_persistent_locked_state.py +10 -10
- langflow/alembic/versions/e3bc869fa272_fix_nullable.py +4 -5
- langflow/alembic/versions/e56d87f8994a_add_optins_column_to_user.py +13 -14
- langflow/alembic/versions/e5a65ecff2cd_nullable_in_vertex_build.py +4 -5
- langflow/alembic/versions/eb5866d51fd2_change_columns_to_be_nullable.py +4 -5
- langflow/alembic/versions/eb5e72293a8e_add_error_and_edit_flags_to_message.py +4 -5
- langflow/alembic/versions/f3b2d1f1002d_add_column_access_type_to_flow.py +19 -15
- langflow/alembic/versions/f5ee9749d1a6_user_id_can_be_null_in_flow.py +4 -6
- langflow/alembic/versions/fd531f8868b1_fix_credential_table.py +5 -8
- langflow/api/build.py +5 -4
- langflow/api/health_check_router.py +1 -1
- langflow/api/limited_background_tasks.py +1 -1
- langflow/api/log_router.py +1 -2
- langflow/api/utils.py +2 -2
- langflow/api/v1/base.py +1 -2
- langflow/api/v1/callback.py +4 -9
- langflow/api/v1/chat.py +6 -7
- langflow/api/v1/endpoints.py +15 -15
- langflow/api/v1/files.py +1 -1
- langflow/api/v1/flows.py +1 -1
- langflow/api/v1/knowledge_bases.py +1 -1
- langflow/api/v1/mcp.py +1 -1
- langflow/api/v1/mcp_projects.py +14 -5
- langflow/api/v1/mcp_utils.py +3 -3
- langflow/api/v1/openai_responses.py +4 -4
- langflow/api/v1/schemas.py +3 -38
- langflow/api/v1/starter_projects.py +61 -3
- langflow/api/v1/store.py +1 -1
- langflow/api/v1/validate.py +3 -3
- langflow/api/v1/voice_mode.py +2 -2
- langflow/api/v2/files.py +1 -1
- langflow/api/v2/mcp.py +2 -2
- langflow/base/__init__.py +11 -0
- langflow/base/agents/__init__.py +3 -0
- langflow/base/data/__init__.py +2 -4
- langflow/base/data/utils.py +2 -197
- langflow/base/embeddings/__init__.py +3 -0
- langflow/base/io/__init__.py +7 -0
- langflow/base/io/chat.py +5 -18
- langflow/base/io/text.py +2 -21
- langflow/base/knowledge_bases/__init__.py +3 -0
- langflow/base/memory/__init__.py +3 -0
- langflow/base/models/__init__.py +2 -2
- langflow/base/models/openai_constants.py +6 -120
- langflow/base/prompts/__init__.py +3 -0
- langflow/base/prompts/api_utils.py +2 -223
- langflow/base/textsplitters/__init__.py +3 -0
- langflow/base/tools/__init__.py +3 -0
- langflow/base/vectorstores/__init__.py +3 -0
- langflow/components/__init__.py +7 -259
- langflow/components/agents.py +6 -0
- langflow/components/anthropic.py +6 -0
- langflow/components/data.py +6 -0
- langflow/components/helpers.py +6 -0
- langflow/components/knowledge_bases/ingestion.py +13 -14
- langflow/components/knowledge_bases/retrieval.py +8 -7
- langflow/components/openai.py +6 -0
- langflow/components/processing/__init__.py +1 -117
- langflow/components/processing/converter.py +3 -149
- langflow/custom/__init__.py +26 -3
- langflow/custom/custom_component/__init__.py +4 -0
- langflow/custom/custom_component/component.py +20 -1738
- langflow/custom/custom_component/component_with_cache.py +1 -8
- langflow/custom/custom_component/custom_component.py +1 -552
- langflow/custom/utils.py +1 -872
- langflow/custom/validate.py +1 -0
- langflow/events/event_manager.py +18 -108
- langflow/field_typing/__init__.py +6 -6
- langflow/field_typing/constants.py +87 -122
- langflow/field_typing/range_spec.py +2 -32
- langflow/frontend/assets/{SlackIcon-Cc7Qnzki.js → SlackIcon-v88osOTA.js} +1 -1
- langflow/frontend/assets/{Wikipedia-7ulMZY46.js → Wikipedia-DD_S2k00.js} +1 -1
- langflow/frontend/assets/{Wolfram-By9PGsHS.js → Wolfram-EO2C5noN.js} +1 -1
- langflow/frontend/assets/{index-DVLIDc2_.js → index-1Gv1mfvk.js} +1 -1
- langflow/frontend/assets/{index-MVW4HTEk.js → index-7v-bzlzf.js} +1 -1
- langflow/frontend/assets/{index-CUzlcce2.js → index-9CbMazbV.js} +1 -1
- langflow/frontend/assets/{index-CU16NJD7.js → index-B8ZHP8g2.js} +1 -1
- langflow/frontend/assets/{index-v8eXbWlM.js → index-B8y2e6vN.js} +1 -1
- langflow/frontend/assets/{index-BX_asvRB.js → index-BBRUGsyr.js} +1 -1
- langflow/frontend/assets/{index-9FL5xjkL.js → index-BGwqQwlh.js} +1 -1
- langflow/frontend/assets/{index-BAn-AzCS.js → index-BIq-k-FG.js} +1 -1
- langflow/frontend/assets/{index-D5c2nNvp.js → index-BSN73YP8.js} +1 -1
- langflow/frontend/assets/{index-DMCerPJM.js → index-BU8R8jRn.js} +1 -1
- langflow/frontend/assets/{index-CvSoff-8.js → index-BV6yx8ey.js} +1 -1
- langflow/frontend/assets/{index-BISPW-f6.js → index-BYIsg-Eh.js} +1 -1
- langflow/frontend/assets/{index-GzOGB_fo.js → index-B_ksDBSQ.js} +1 -1
- langflow/frontend/assets/{index-BIqEYjNT.js → index-Ba1UOZ9A.js} +1 -1
- langflow/frontend/assets/{index-ByxGmq5p.js → index-Ba9tKRQg.js} +1 -1
- langflow/frontend/assets/{index-BLEWsL1U.js → index-Bbfaw8ca.js} +1 -1
- langflow/frontend/assets/{index-C_MhBX6R.js → index-BbuGqvAx.js} +1 -1
- langflow/frontend/assets/{index-RH_I78z_.js → index-BeoXu1YX.js} +1 -1
- langflow/frontend/assets/{index-cYFKmtmg.js → index-BfjZmOnH.js} +1 -1
- langflow/frontend/assets/{index-Bm9i8F4W.js → index-Bjzy_HZB.js} +1 -1
- langflow/frontend/assets/{index-_szO7sta.js → index-BofEkpYB.js} +1 -1
- langflow/frontend/assets/{index-DP1oE6QB.js → index-Bp7Mty2H.js} +1 -1
- langflow/frontend/assets/{index-CeswGUz3.js → index-BqX1H6yK.js} +1 -1
- langflow/frontend/assets/{index-C8pI0lzi.js → index-BqtBAJAN.js} +1 -1
- langflow/frontend/assets/{index-BusCv3bR.js → index-Bsfraj7A.js} +1 -1
- langflow/frontend/assets/{index-BWnKMRFJ.js → index-BtFl7fER.js} +1 -1
- langflow/frontend/assets/{index-DnlVWWU8.js → index-BvX993Sv.js} +1 -1
- langflow/frontend/assets/{index-C676MS3I.js → index-BvgQ2vzM.js} +1 -1
- langflow/frontend/assets/{index-DJ6HD14g.js → index-BwY98u8n.js} +1 -1
- langflow/frontend/assets/{index-C51yNvIL.js → index-C-RIJAOS.js} +1 -1
- langflow/frontend/assets/{index-DiblXWmk.js → index-C1K6A38P.js} +1 -1
- langflow/frontend/assets/{index-Co__gFM1.js → index-C3Vwhx0t.js} +1 -1
- langflow/frontend/assets/{index-Coi86oqP.js → index-C5XUG_gr.js} +1 -1
- langflow/frontend/assets/{index-jwzN3Jd_.js → index-C6ouLG9o.js} +1 -1
- langflow/frontend/assets/{index-CQQ-4XMS.js → index-C7ZJ_Z6f.js} +1 -1
- langflow/frontend/assets/{index-Bl7RpmrB.js → index-CCOGIwGY.js} +1 -1
- langflow/frontend/assets/{index-CVkIdc6y.js → index-CCcye2rt.js} +1 -1
- langflow/frontend/assets/{index-bMhyLtgS.js → index-CFR4yJQB.js} +1 -1
- langflow/frontend/assets/{index-aAgSKWb3.js → index-CIGmPP0H.js} +1 -1
- langflow/frontend/assets/{index-BGt6jQ4x.js → index-CJmMEa6d.js} +1 -1
- langflow/frontend/assets/{index-DX7JcSMz.js → index-CJxD7lyU.js} +1 -1
- langflow/frontend/assets/{index-BZ-A4K98.js → index-CL_vu6ut.js} +1 -1
- langflow/frontend/assets/{index-BMpKFGhI.js → index-COf3UnBn.js} +1 -1
- langflow/frontend/assets/{index-xN8ogFdo.js → index-CV9650h_.js} +1 -1
- langflow/frontend/assets/{index-OsUvqIUr.js → index-CVDzych0.js} +1 -1
- langflow/frontend/assets/{index-BH7AyHxp.js → index-CWIHsC4D.js} +1 -1
- langflow/frontend/assets/{index-mjwtJmkP.js → index-CXCnFZ0L.js} +1 -1
- langflow/frontend/assets/{index-3jlSQi5Y.js → index-Ca_Pw_Dn.js} +1 -1
- langflow/frontend/assets/{index-D-SnFlhU.js → index-Cbb3bX9e.js} +1 -1
- langflow/frontend/assets/{index--e0oQqZh.js → index-CcJtOz-Z.js} +1 -1
- langflow/frontend/assets/{index-S-sc0Cm9.js → index-CfTbTHEv.js} +1 -1
- langflow/frontend/assets/{index-Deu8rlaZ.js → index-ChoxDAgX.js} +1 -1
- langflow/frontend/assets/{index-lnF9Eqr2.js → index-Cn4gw8aE.js} +1 -1
- langflow/frontend/assets/{index-C_NwzK6j.js → index-CnpLg4zX.js} +1 -1
- langflow/frontend/assets/{index-DznH7Jbq.js → index-Cpao2omG.js} +1 -1
- langflow/frontend/assets/{index-DpWrk8mA.js → index-CqoxM01j.js} +1 -1
- langflow/frontend/assets/{index-Bw-TIIC6.js → index-CrHf2Ic1.js} +1 -1
- langflow/frontend/assets/{index-DmYLDQag.js → index-CrV0uIjp.js} +1 -1
- langflow/frontend/assets/{index-Dp7ZQyL3.js → index-CssADaak.js} +1 -1
- langflow/frontend/assets/{index-CNh0rwur.js → index-CtJdNLy9.js} +1 -1
- langflow/frontend/assets/{index-Ca1b7Iag.js → index-CyeWD2dh.js} +1 -1
- langflow/frontend/assets/{index-DcApTyZ7.js → index-D1xzD7uc.js} +1 -1
- langflow/frontend/assets/{index-B3GvPjhD.js → index-D6MuXC4L.js} +1 -1
- langflow/frontend/assets/{index-Cw0UComa.js → index-D8w9zvIF.js} +1 -1
- langflow/frontend/assets/{index-C-2MRYoJ.js → index-D98Gn0A6.js} +1 -1
- langflow/frontend/assets/{index-aWnZIwHd.js → index-DBhjpWkf.js} +1 -1
- langflow/frontend/assets/{index-nw3WF9lY.js → index-DCCRJzcY.js} +1 -1
- langflow/frontend/assets/{index-RjeC0kaX.js → index-DCTRSkEW.js} +1 -1
- langflow/frontend/assets/{index-B_kBTgxV.js → index-DCUfitVj.js} +1 -1
- langflow/frontend/assets/{index-ChsGhZn3.js → index-DDdz-Xcl.js} +1 -1
- langflow/frontend/assets/{index-7yAHPRxv.js → index-DGdMwZjG.js} +1 -1
- langflow/frontend/assets/{index-DjQElpEg.js → index-DGtl2vMw.js} +1 -1
- langflow/frontend/assets/{index-BCXhKCOK.js → index-DHVdkrni.js} +1 -1
- langflow/frontend/assets/{index-S8uJXTOq.js → index-DJBWwjgl.js} +1 -1
- langflow/frontend/assets/{index-qiVTWUuf.js → index-DMAkJ_qX.js} +1 -1
- langflow/frontend/assets/{index-D-WStJI6.js → index-DMEvEQI5.js} +1 -1
- langflow/frontend/assets/{index-BhqVw9WQ.js → index-DNGRoOsp.js} +1 -1
- langflow/frontend/assets/{index-Cu7vC48Y.js → index-DNT_TUTa.js} +1 -1
- langflow/frontend/assets/{index-Bhcv5M0n.js → index-DQKOH_9K.js} +1 -1
- langflow/frontend/assets/{index-CLcaktde.js → index-DQhqqtqQ.js} +1 -1
- langflow/frontend/assets/{index-DZVgPCio.js → index-DRM7KKnG.js} +1 -1
- langflow/frontend/assets/{index-uybez8MR.js → index-DSCtl3a5.js} +1 -1
- langflow/frontend/assets/{index-CJ5A6STv.js → index-DSLNlm0Z.js} +1 -1
- langflow/frontend/assets/{index-Drg8me2a.js → index-DT-PspE-.js} +1 -1
- langflow/frontend/assets/{index-DsEZjOcp.js → index-DTpbH-p8.js} +1 -1
- langflow/frontend/assets/{index-DrXXKzpD.js → index-DWV6MsIq.js} +1 -1
- langflow/frontend/assets/{index-4JIEdyIM.js → index-DWeL4US_.js} +1 -1
- langflow/frontend/assets/{index-BlDsBQ_1.js → index-DYKZHhpU.js} +1 -1
- langflow/frontend/assets/{index-DFY8YFbC.js → index-DZyQHiMR.js} +1 -1
- langflow/frontend/assets/{index-CKPZpkQk.js → index-Dc6qVuSa.js} +1 -1
- langflow/frontend/assets/{index-yyAaYjLR.js → index-DkYuicnC.js} +1 -1
- langflow/frontend/assets/{index-DmVt5Jlx.js → index-Dlj_2mMs.js} +1 -1
- langflow/frontend/assets/{index-BvRIG6P5.js → index-DmGJUrEp.js} +1 -1
- langflow/frontend/assets/{index-BWFIrwW1.js → index-Dn6hpCAZ.js} +1 -1
- langflow/frontend/assets/{index-Cb5G9Ifd.js → index-DrJU8Fgb.js} +1 -1
- langflow/frontend/assets/{index-COoTCxvs.js → index-DsWfdCzp.js} +1 -1
- langflow/frontend/assets/{index-ZjeocHyu.js → index-DvCPWs2_.js} +1 -1
- langflow/frontend/assets/{index-B5LHnuQR.js → index-DvPVq7OP.js} +1 -1
- langflow/frontend/assets/{index-BnCnYnao.js → index-Dw71ufW4.js} +1 -1
- langflow/frontend/assets/{index-AALDfCyt.js → index-DxkJactf.js} +1 -1
- langflow/frontend/assets/{index-k9jP5chN.js → index-Dz2GTphU.js} +1 -1
- langflow/frontend/assets/{index-BdjfHsrf.js → index-Fvd524_c.js} +1 -1
- langflow/frontend/assets/{index-AKVkmT4S.js → index-GAQ0Mk2M.js} +1 -1
- langflow/frontend/assets/{index-BZSa2qz7.js → index-Hm5-4ItD.js} +1 -1
- langflow/frontend/assets/{index-DbfS_UH-.js → index-IT67FzsK.js} +1 -1
- langflow/frontend/assets/{index-BLXN681C.js → index-ItYiij1i.js} +1 -1
- langflow/frontend/assets/{index-CiklyQU3.js → index-IuR_FEdB.js} +1 -1
- langflow/frontend/assets/{index-xV6ystWy.js → index-Jj60FQkv.js} +1 -1
- langflow/frontend/assets/{index-C_157Mb-.js → index-LlvshmVz.js} +1 -1
- langflow/frontend/assets/{index-CDphUsa3.js → index-LwKh3I_W.js} +1 -1
- langflow/frontend/assets/{index-BrDz-PxE.js → index-N-xxmKKH.js} +1 -1
- langflow/frontend/assets/{index-BsdLyYMY.js → index-RwpaHIAH.js} +1 -1
- langflow/frontend/assets/{index-Cu2Xr6_j.js → index-TVvsp-xh.js} +1 -1
- langflow/frontend/assets/{index-CPiM2oyj.js → index-TdE2u9zP.js} +1 -1
- langflow/frontend/assets/{index-DOj_QWqG.js → index-_x-NkYeW.js} +1 -1
- langflow/frontend/assets/{index-YJsAl7vm.js → index-a-YclEbW.js} +1 -1
- langflow/frontend/assets/{index-5-CSw2-z.js → index-e9MFKUCo.js} +1 -1
- langflow/frontend/assets/{index-BSwBVwyF.js → index-krPr8f2F.js} +1 -1
- langflow/frontend/assets/{index-Df6psZEj.js → index-kveiUWuL.js} +1 -1
- langflow/frontend/assets/{index-CF4_Og1m.js → index-lE3oSjJi.js} +1 -1
- langflow/frontend/assets/{index-C6nzdeYx.js → index-lM3UYg7F.js} +1 -1
- langflow/frontend/assets/{index-C-wnbBBY.js → index-nsRk3qgA.js} +1 -1
- langflow/frontend/assets/{index-D234yKNJ.js → index-pBO0SZLD.js} +4 -4
- langflow/frontend/assets/{index-BMvp94tO.js → index-pbZHsbuE.js} +1 -1
- langflow/frontend/assets/{index-hg2y9OAt.js → index-sfX3aWyp.js} +1 -1
- langflow/frontend/assets/{index-DTCrijba.js → index-xQz-VJ0-.js} +1 -1
- langflow/frontend/assets/{index-SB4rw8D5.js → index-yfcsaHS6.js} +1 -1
- langflow/frontend/assets/{index-C-bjC2sz.js → index-zcGjo9fx.js} +1 -1
- langflow/frontend/assets/lazyIconImports-BjqDmNYG.js +2 -0
- langflow/frontend/assets/{use-post-add-user-JUeLDErC.js → use-post-add-user-w3vpKSOB.js} +1 -1
- langflow/frontend/index.html +1 -1
- langflow/graph/__init__.py +4 -4
- langflow/helpers/data.py +2 -2
- langflow/helpers/flow.py +9 -7
- langflow/helpers/user.py +2 -2
- langflow/initial_setup/setup.py +9 -9
- langflow/initial_setup/starter_projects/Basic Prompt Chaining.json +119 -41
- langflow/initial_setup/starter_projects/Basic Prompting.json +45 -19
- langflow/initial_setup/starter_projects/Blog Writer.json +53 -21
- langflow/initial_setup/starter_projects/Custom Component Generator.json +121 -97
- langflow/initial_setup/starter_projects/Document Q&A.json +46 -18
- langflow/initial_setup/starter_projects/Financial Report Parser.json +49 -17
- langflow/initial_setup/starter_projects/Hybrid Search RAG.json +89 -50
- langflow/initial_setup/starter_projects/Image Sentiment Analysis.json +86 -22
- langflow/initial_setup/starter_projects/Instagram Copywriter.json +210 -57
- langflow/initial_setup/starter_projects/Invoice Summarizer.json +132 -35
- langflow/initial_setup/starter_projects/Knowledge Ingestion.json +8 -8
- langflow/initial_setup/starter_projects/Knowledge Retrieval.json +8 -8
- langflow/initial_setup/starter_projects/Market Research.json +174 -48
- langflow/initial_setup/starter_projects/Meeting Summary.json +102 -38
- langflow/initial_setup/starter_projects/Memory Chatbot.json +49 -21
- langflow/initial_setup/starter_projects/News Aggregator.json +140 -39
- langflow/initial_setup/starter_projects/Nvidia Remix.json +153 -181
- langflow/initial_setup/starter_projects/Pok/303/251dex Agent.json" +132 -35
- langflow/initial_setup/starter_projects/Portfolio Website Code Generator.json +106 -43
- langflow/initial_setup/starter_projects/Price Deal Finder.json +136 -39
- langflow/initial_setup/starter_projects/Research Agent.json +206 -53
- langflow/initial_setup/starter_projects/Research Translation Loop.json +66 -34
- langflow/initial_setup/starter_projects/SEO Keyword Generator.json +41 -15
- langflow/initial_setup/starter_projects/SaaS Pricing.json +128 -31
- langflow/initial_setup/starter_projects/Search agent.json +132 -35
- langflow/initial_setup/starter_projects/Sequential Tasks Agents.json +422 -98
- langflow/initial_setup/starter_projects/Simple Agent.json +150 -42
- langflow/initial_setup/starter_projects/Social Media Agent.json +150 -42
- langflow/initial_setup/starter_projects/Text Sentiment Analysis.json +120 -24
- langflow/initial_setup/starter_projects/Travel Planning Agents.json +418 -94
- langflow/initial_setup/starter_projects/Twitter Thread Generator.json +69 -37
- langflow/initial_setup/starter_projects/Vector Store RAG.json +66 -38
- langflow/initial_setup/starter_projects/Youtube Analysis.json +191 -51
- langflow/initial_setup/starter_projects/basic_prompting.py +4 -4
- langflow/initial_setup/starter_projects/blog_writer.py +5 -5
- langflow/initial_setup/starter_projects/complex_agent.py +8 -8
- langflow/initial_setup/starter_projects/document_qa.py +5 -5
- langflow/initial_setup/starter_projects/hierarchical_tasks_agent.py +8 -8
- langflow/initial_setup/starter_projects/memory_chatbot.py +6 -6
- langflow/initial_setup/starter_projects/sequential_tasks_agent.py +7 -7
- langflow/initial_setup/starter_projects/vector_store_rag.py +8 -8
- langflow/inputs/__init__.py +3 -2
- langflow/inputs/constants.py +3 -2
- langflow/inputs/input_mixin.py +49 -310
- langflow/inputs/inputs.py +72 -703
- langflow/inputs/validators.py +2 -18
- langflow/interface/__init__.py +4 -0
- langflow/interface/components.py +3 -491
- langflow/interface/initialize/loading.py +7 -6
- langflow/interface/listing.py +3 -25
- langflow/interface/run.py +1 -1
- langflow/interface/utils.py +3 -111
- langflow/io/__init__.py +2 -2
- langflow/io/schema.py +11 -302
- langflow/load/__init__.py +4 -2
- langflow/load/utils.py +2 -96
- langflow/logging/__init__.py +2 -1
- langflow/logging/setup.py +1 -1
- langflow/main.py +8 -5
- langflow/memory.py +12 -6
- langflow/middleware.py +1 -1
- langflow/processing/process.py +7 -7
- langflow/schema/__init__.py +22 -5
- langflow/schema/artifact.py +1 -1
- langflow/schema/data.py +5 -303
- langflow/schema/dataframe.py +2 -205
- langflow/schema/graph.py +4 -45
- langflow/schema/image.py +2 -67
- langflow/schema/message.py +6 -470
- langflow/schema/playground_events.py +5 -6
- langflow/schema/schema.py +24 -117
- langflow/serialization/constants.py +3 -2
- langflow/serialization/serialization.py +1 -1
- langflow/server.py +1 -2
- langflow/services/__init__.py +1 -2
- langflow/services/auth/mcp_encryption.py +1 -1
- langflow/services/auth/service.py +1 -1
- langflow/services/auth/utils.py +5 -5
- langflow/services/cache/disk.py +2 -2
- langflow/services/cache/factory.py +2 -2
- langflow/services/cache/service.py +2 -2
- langflow/services/cache/utils.py +0 -11
- langflow/services/database/factory.py +1 -1
- langflow/services/database/models/flow/model.py +1 -1
- langflow/services/database/models/message/crud.py +2 -1
- langflow/services/database/models/transactions/crud.py +1 -1
- langflow/services/database/models/user/crud.py +1 -1
- langflow/services/database/service.py +2 -2
- langflow/services/database/utils.py +1 -2
- langflow/services/deps.py +12 -17
- langflow/services/enhanced_manager.py +71 -0
- langflow/services/factory.py +14 -7
- langflow/services/flow/flow_runner.py +4 -4
- langflow/services/job_queue/service.py +2 -1
- langflow/services/manager.py +14 -130
- langflow/services/schema.py +0 -1
- langflow/services/session/service.py +3 -2
- langflow/services/settings/__init__.py +0 -3
- langflow/services/settings/base.py +16 -549
- langflow/services/settings/factory.py +2 -21
- langflow/services/settings/feature_flags.py +2 -11
- langflow/services/settings/service.py +2 -31
- langflow/services/shared_component_cache/factory.py +1 -1
- langflow/services/socket/service.py +1 -1
- langflow/services/socket/utils.py +1 -8
- langflow/services/state/factory.py +1 -1
- langflow/services/state/service.py +3 -2
- langflow/services/storage/factory.py +2 -2
- langflow/services/storage/local.py +1 -2
- langflow/services/storage/s3.py +1 -2
- langflow/services/storage/service.py +2 -1
- langflow/services/store/factory.py +1 -1
- langflow/services/store/service.py +2 -2
- langflow/services/store/utils.py +1 -2
- langflow/services/task/service.py +2 -1
- langflow/services/task/temp_flow_cleanup.py +1 -1
- langflow/services/telemetry/factory.py +1 -1
- langflow/services/telemetry/service.py +2 -3
- langflow/services/tracing/arize_phoenix.py +3 -3
- langflow/services/tracing/base.py +1 -1
- langflow/services/tracing/factory.py +1 -1
- langflow/services/tracing/langfuse.py +2 -2
- langflow/services/tracing/langsmith.py +2 -2
- langflow/services/tracing/langwatch.py +4 -4
- langflow/services/tracing/opik.py +2 -2
- langflow/services/tracing/service.py +17 -11
- langflow/services/tracing/traceloop.py +2 -2
- langflow/services/tracing/utils.py +1 -1
- langflow/services/utils.py +54 -9
- langflow/services/variable/factory.py +1 -1
- langflow/services/variable/kubernetes.py +2 -3
- langflow/services/variable/kubernetes_secrets.py +1 -2
- langflow/services/variable/service.py +2 -3
- langflow/template/__init__.py +2 -9
- langflow/template/field/__init__.py +3 -0
- langflow/template/field/base.py +2 -256
- langflow/template/frontend_node.py +3 -0
- langflow/template/utils.py +2 -216
- langflow/utils/constants.py +28 -204
- langflow/utils/lazy_load.py +3 -14
- langflow/utils/schemas.py +2 -3
- langflow/utils/template_validation.py +2 -2
- langflow/utils/util.py +59 -479
- langflow/utils/validate.py +2 -488
- langflow/utils/voice_utils.py +1 -2
- langflow/worker.py +1 -1
- {langflow_base_nightly-0.5.1.dev3.dist-info → langflow_base_nightly-0.5.1.dev4.dist-info}/METADATA +2 -1
- langflow_base_nightly-0.5.1.dev4.dist-info/RECORD +633 -0
- langflow/base/agents/agent.py +0 -267
- langflow/base/agents/callback.py +0 -130
- langflow/base/agents/context.py +0 -109
- langflow/base/agents/crewai/__init__.py +0 -0
- langflow/base/agents/crewai/crew.py +0 -231
- langflow/base/agents/crewai/tasks.py +0 -12
- langflow/base/agents/default_prompts.py +0 -23
- langflow/base/agents/errors.py +0 -15
- langflow/base/agents/events.py +0 -346
- langflow/base/agents/utils.py +0 -205
- langflow/base/astra_assistants/__init__.py +0 -0
- langflow/base/astra_assistants/util.py +0 -171
- langflow/base/chains/__init__.py +0 -0
- langflow/base/chains/model.py +0 -19
- langflow/base/composio/__init__.py +0 -0
- langflow/base/composio/composio_base.py +0 -1297
- langflow/base/compressors/__init__.py +0 -0
- langflow/base/compressors/model.py +0 -60
- langflow/base/constants.py +0 -46
- langflow/base/curl/__init__.py +0 -0
- langflow/base/curl/parse.py +0 -188
- langflow/base/data/base_file.py +0 -685
- langflow/base/data/docling_utils.py +0 -245
- langflow/base/document_transformers/__init__.py +0 -0
- langflow/base/document_transformers/model.py +0 -43
- langflow/base/embeddings/aiml_embeddings.py +0 -62
- langflow/base/embeddings/model.py +0 -26
- langflow/base/flow_processing/__init__.py +0 -0
- langflow/base/flow_processing/utils.py +0 -86
- langflow/base/huggingface/__init__.py +0 -0
- langflow/base/huggingface/model_bridge.py +0 -133
- langflow/base/langchain_utilities/__init__.py +0 -0
- langflow/base/langchain_utilities/model.py +0 -35
- langflow/base/langchain_utilities/spider_constants.py +0 -1
- langflow/base/langwatch/__init__.py +0 -0
- langflow/base/langwatch/utils.py +0 -18
- langflow/base/mcp/__init__.py +0 -0
- langflow/base/mcp/constants.py +0 -2
- langflow/base/mcp/util.py +0 -1524
- langflow/base/memory/memory.py +0 -49
- langflow/base/memory/model.py +0 -38
- langflow/base/models/aiml_constants.py +0 -51
- langflow/base/models/anthropic_constants.py +0 -47
- langflow/base/models/aws_constants.py +0 -151
- langflow/base/models/chat_result.py +0 -76
- langflow/base/models/google_generative_ai_constants.py +0 -70
- langflow/base/models/groq_constants.py +0 -134
- langflow/base/models/model.py +0 -375
- langflow/base/models/model_input_constants.py +0 -299
- langflow/base/models/model_metadata.py +0 -41
- langflow/base/models/model_utils.py +0 -8
- langflow/base/models/novita_constants.py +0 -35
- langflow/base/models/ollama_constants.py +0 -49
- langflow/base/models/sambanova_constants.py +0 -18
- langflow/base/processing/__init__.py +0 -0
- langflow/base/prompts/utils.py +0 -61
- langflow/base/textsplitters/model.py +0 -28
- langflow/base/tools/base.py +0 -26
- langflow/base/tools/component_tool.py +0 -324
- langflow/base/tools/constants.py +0 -49
- langflow/base/tools/flow_tool.py +0 -131
- langflow/base/tools/run_flow.py +0 -227
- langflow/base/vectorstores/model.py +0 -193
- langflow/base/vectorstores/utils.py +0 -22
- langflow/base/vectorstores/vector_store_connection_decorator.py +0 -52
- langflow/components/FAISS/__init__.py +0 -34
- langflow/components/FAISS/faiss.py +0 -111
- langflow/components/Notion/__init__.py +0 -19
- langflow/components/Notion/add_content_to_page.py +0 -269
- langflow/components/Notion/create_page.py +0 -94
- langflow/components/Notion/list_database_properties.py +0 -68
- langflow/components/Notion/list_pages.py +0 -122
- langflow/components/Notion/list_users.py +0 -77
- langflow/components/Notion/page_content_viewer.py +0 -93
- langflow/components/Notion/search.py +0 -111
- langflow/components/Notion/update_page_property.py +0 -114
- langflow/components/_importing.py +0 -37
- langflow/components/agentql/__init__.py +0 -3
- langflow/components/agentql/agentql_api.py +0 -151
- langflow/components/agents/__init__.py +0 -4
- langflow/components/agents/agent.py +0 -554
- langflow/components/agents/mcp_component.py +0 -501
- langflow/components/aiml/__init__.py +0 -37
- langflow/components/aiml/aiml.py +0 -112
- langflow/components/aiml/aiml_embeddings.py +0 -37
- langflow/components/amazon/__init__.py +0 -36
- langflow/components/amazon/amazon_bedrock_embedding.py +0 -109
- langflow/components/amazon/amazon_bedrock_model.py +0 -124
- langflow/components/amazon/s3_bucket_uploader.py +0 -211
- langflow/components/anthropic/__init__.py +0 -34
- langflow/components/anthropic/anthropic.py +0 -187
- langflow/components/apify/__init__.py +0 -5
- langflow/components/apify/apify_actor.py +0 -325
- langflow/components/arxiv/__init__.py +0 -3
- langflow/components/arxiv/arxiv.py +0 -163
- langflow/components/assemblyai/__init__.py +0 -46
- langflow/components/assemblyai/assemblyai_get_subtitles.py +0 -83
- langflow/components/assemblyai/assemblyai_lemur.py +0 -183
- langflow/components/assemblyai/assemblyai_list_transcripts.py +0 -95
- langflow/components/assemblyai/assemblyai_poll_transcript.py +0 -72
- langflow/components/assemblyai/assemblyai_start_transcript.py +0 -188
- langflow/components/azure/__init__.py +0 -37
- langflow/components/azure/azure_openai.py +0 -95
- langflow/components/azure/azure_openai_embeddings.py +0 -83
- langflow/components/baidu/__init__.py +0 -32
- langflow/components/baidu/baidu_qianfan_chat.py +0 -113
- langflow/components/bing/__init__.py +0 -3
- langflow/components/bing/bing_search_api.py +0 -61
- langflow/components/cassandra/__init__.py +0 -40
- langflow/components/cassandra/cassandra.py +0 -264
- langflow/components/cassandra/cassandra_chat.py +0 -92
- langflow/components/cassandra/cassandra_graph.py +0 -238
- langflow/components/chains/__init__.py +0 -0
- langflow/components/chroma/__init__.py +0 -34
- langflow/components/chroma/chroma.py +0 -167
- langflow/components/cleanlab/__init__.py +0 -40
- langflow/components/cleanlab/cleanlab_evaluator.py +0 -157
- langflow/components/cleanlab/cleanlab_rag_evaluator.py +0 -254
- langflow/components/cleanlab/cleanlab_remediator.py +0 -131
- langflow/components/clickhouse/__init__.py +0 -34
- langflow/components/clickhouse/clickhouse.py +0 -135
- langflow/components/cloudflare/__init__.py +0 -32
- langflow/components/cloudflare/cloudflare.py +0 -81
- langflow/components/cohere/__init__.py +0 -40
- langflow/components/cohere/cohere_embeddings.py +0 -81
- langflow/components/cohere/cohere_models.py +0 -46
- langflow/components/cohere/cohere_rerank.py +0 -51
- langflow/components/composio/__init__.py +0 -73
- langflow/components/composio/composio_api.py +0 -268
- langflow/components/composio/dropbox_compnent.py +0 -11
- langflow/components/composio/github_composio.py +0 -11
- langflow/components/composio/gmail_composio.py +0 -38
- langflow/components/composio/googlecalendar_composio.py +0 -11
- langflow/components/composio/googlemeet_composio.py +0 -11
- langflow/components/composio/googletasks_composio.py +0 -8
- langflow/components/composio/linear_composio.py +0 -11
- langflow/components/composio/outlook_composio.py +0 -11
- langflow/components/composio/reddit_composio.py +0 -11
- langflow/components/composio/slack_composio.py +0 -11
- langflow/components/composio/slackbot_composio.py +0 -11
- langflow/components/composio/supabase_composio.py +0 -11
- langflow/components/composio/todoist_composio.py +0 -11
- langflow/components/composio/youtube_composio.py +0 -11
- langflow/components/confluence/__init__.py +0 -3
- langflow/components/confluence/confluence.py +0 -84
- langflow/components/couchbase/__init__.py +0 -34
- langflow/components/couchbase/couchbase.py +0 -102
- langflow/components/crewai/__init__.py +0 -49
- langflow/components/crewai/crewai.py +0 -107
- langflow/components/crewai/hierarchical_crew.py +0 -46
- langflow/components/crewai/hierarchical_task.py +0 -44
- langflow/components/crewai/sequential_crew.py +0 -52
- langflow/components/crewai/sequential_task.py +0 -73
- langflow/components/crewai/sequential_task_agent.py +0 -143
- langflow/components/custom_component/__init__.py +0 -34
- langflow/components/custom_component/custom_component.py +0 -31
- langflow/components/data/__init__.py +0 -25
- langflow/components/data/api_request.py +0 -545
- langflow/components/data/csv_to_data.py +0 -95
- langflow/components/data/directory.py +0 -113
- langflow/components/data/file.py +0 -586
- langflow/components/data/json_to_data.py +0 -98
- langflow/components/data/news_search.py +0 -164
- langflow/components/data/rss.py +0 -69
- langflow/components/data/sql_executor.py +0 -99
- langflow/components/data/url.py +0 -299
- langflow/components/data/web_search.py +0 -112
- langflow/components/data/webhook.py +0 -56
- langflow/components/datastax/__init__.py +0 -70
- langflow/components/datastax/astra_assistant_manager.py +0 -306
- langflow/components/datastax/astra_db.py +0 -69
- langflow/components/datastax/astra_vectorize.py +0 -124
- langflow/components/datastax/astradb_cql.py +0 -314
- langflow/components/datastax/astradb_graph.py +0 -319
- langflow/components/datastax/astradb_tool.py +0 -414
- langflow/components/datastax/astradb_vectorstore.py +0 -1285
- langflow/components/datastax/create_assistant.py +0 -58
- langflow/components/datastax/create_thread.py +0 -32
- langflow/components/datastax/dotenv.py +0 -35
- langflow/components/datastax/get_assistant.py +0 -37
- langflow/components/datastax/getenvvar.py +0 -30
- langflow/components/datastax/graph_rag.py +0 -141
- langflow/components/datastax/hcd.py +0 -314
- langflow/components/datastax/list_assistants.py +0 -25
- langflow/components/datastax/run.py +0 -89
- langflow/components/deactivated/__init__.py +0 -19
- langflow/components/deactivated/amazon_kendra.py +0 -66
- langflow/components/deactivated/chat_litellm_model.py +0 -158
- langflow/components/deactivated/code_block_extractor.py +0 -26
- langflow/components/deactivated/documents_to_data.py +0 -22
- langflow/components/deactivated/embed.py +0 -16
- langflow/components/deactivated/extract_key_from_data.py +0 -46
- langflow/components/deactivated/json_document_builder.py +0 -59
- langflow/components/deactivated/list_flows.py +0 -20
- langflow/components/deactivated/mcp_sse.py +0 -61
- langflow/components/deactivated/mcp_stdio.py +0 -62
- langflow/components/deactivated/merge_data.py +0 -93
- langflow/components/deactivated/message.py +0 -37
- langflow/components/deactivated/metal.py +0 -54
- langflow/components/deactivated/multi_query.py +0 -59
- langflow/components/deactivated/retriever.py +0 -43
- langflow/components/deactivated/selective_passthrough.py +0 -77
- langflow/components/deactivated/should_run_next.py +0 -40
- langflow/components/deactivated/split_text.py +0 -63
- langflow/components/deactivated/store_message.py +0 -24
- langflow/components/deactivated/sub_flow.py +0 -124
- langflow/components/deactivated/vectara_self_query.py +0 -76
- langflow/components/deactivated/vector_store.py +0 -24
- langflow/components/deepseek/__init__.py +0 -34
- langflow/components/deepseek/deepseek.py +0 -136
- langflow/components/docling/__init__.py +0 -43
- langflow/components/docling/chunk_docling_document.py +0 -186
- langflow/components/docling/docling_inline.py +0 -235
- langflow/components/docling/docling_remote.py +0 -193
- langflow/components/docling/export_docling_document.py +0 -117
- langflow/components/documentloaders/__init__.py +0 -0
- langflow/components/duckduckgo/__init__.py +0 -3
- langflow/components/duckduckgo/duck_duck_go_search_run.py +0 -92
- langflow/components/elastic/__init__.py +0 -37
- langflow/components/elastic/elasticsearch.py +0 -267
- langflow/components/elastic/opensearch.py +0 -243
- langflow/components/embeddings/__init__.py +0 -37
- langflow/components/embeddings/similarity.py +0 -76
- langflow/components/embeddings/text_embedder.py +0 -64
- langflow/components/exa/__init__.py +0 -3
- langflow/components/exa/exa_search.py +0 -68
- langflow/components/firecrawl/__init__.py +0 -43
- langflow/components/firecrawl/firecrawl_crawl_api.py +0 -88
- langflow/components/firecrawl/firecrawl_extract_api.py +0 -136
- langflow/components/firecrawl/firecrawl_map_api.py +0 -89
- langflow/components/firecrawl/firecrawl_scrape_api.py +0 -73
- langflow/components/git/__init__.py +0 -4
- langflow/components/git/git.py +0 -262
- langflow/components/git/gitextractor.py +0 -196
- langflow/components/glean/__init__.py +0 -3
- langflow/components/glean/glean_search_api.py +0 -173
- langflow/components/google/__init__.py +0 -17
- langflow/components/google/gmail.py +0 -192
- langflow/components/google/google_bq_sql_executor.py +0 -157
- langflow/components/google/google_drive.py +0 -92
- langflow/components/google/google_drive_search.py +0 -152
- langflow/components/google/google_generative_ai.py +0 -147
- langflow/components/google/google_generative_ai_embeddings.py +0 -141
- langflow/components/google/google_oauth_token.py +0 -89
- langflow/components/google/google_search_api_core.py +0 -68
- langflow/components/google/google_serper_api_core.py +0 -74
- langflow/components/groq/__init__.py +0 -34
- langflow/components/groq/groq.py +0 -140
- langflow/components/helpers/__init__.py +0 -52
- langflow/components/helpers/calculator_core.py +0 -89
- langflow/components/helpers/create_list.py +0 -40
- langflow/components/helpers/current_date.py +0 -42
- langflow/components/helpers/id_generator.py +0 -42
- langflow/components/helpers/memory.py +0 -251
- langflow/components/helpers/output_parser.py +0 -45
- langflow/components/helpers/store_message.py +0 -90
- langflow/components/homeassistant/__init__.py +0 -7
- langflow/components/homeassistant/home_assistant_control.py +0 -152
- langflow/components/homeassistant/list_home_assistant_states.py +0 -137
- langflow/components/huggingface/__init__.py +0 -37
- langflow/components/huggingface/huggingface.py +0 -197
- langflow/components/huggingface/huggingface_inference_api.py +0 -106
- langflow/components/ibm/__init__.py +0 -34
- langflow/components/ibm/watsonx.py +0 -203
- langflow/components/ibm/watsonx_embeddings.py +0 -135
- langflow/components/icosacomputing/__init__.py +0 -5
- langflow/components/icosacomputing/combinatorial_reasoner.py +0 -84
- langflow/components/input_output/__init__.py +0 -38
- langflow/components/input_output/chat.py +0 -120
- langflow/components/input_output/chat_output.py +0 -200
- langflow/components/input_output/text.py +0 -27
- langflow/components/input_output/text_output.py +0 -29
- langflow/components/jigsawstack/__init__.py +0 -23
- langflow/components/jigsawstack/ai_scrape.py +0 -126
- langflow/components/jigsawstack/ai_web_search.py +0 -136
- langflow/components/jigsawstack/file_read.py +0 -115
- langflow/components/jigsawstack/file_upload.py +0 -94
- langflow/components/jigsawstack/image_generation.py +0 -205
- langflow/components/jigsawstack/nsfw.py +0 -60
- langflow/components/jigsawstack/object_detection.py +0 -124
- langflow/components/jigsawstack/sentiment.py +0 -112
- langflow/components/jigsawstack/text_to_sql.py +0 -90
- langflow/components/jigsawstack/text_translate.py +0 -77
- langflow/components/jigsawstack/vocr.py +0 -107
- langflow/components/langchain_utilities/__init__.py +0 -109
- langflow/components/langchain_utilities/character.py +0 -53
- langflow/components/langchain_utilities/conversation.py +0 -52
- langflow/components/langchain_utilities/csv_agent.py +0 -107
- langflow/components/langchain_utilities/fake_embeddings.py +0 -26
- langflow/components/langchain_utilities/html_link_extractor.py +0 -35
- langflow/components/langchain_utilities/json_agent.py +0 -45
- langflow/components/langchain_utilities/langchain_hub.py +0 -126
- langflow/components/langchain_utilities/language_recursive.py +0 -49
- langflow/components/langchain_utilities/language_semantic.py +0 -138
- langflow/components/langchain_utilities/llm_checker.py +0 -39
- langflow/components/langchain_utilities/llm_math.py +0 -42
- langflow/components/langchain_utilities/natural_language.py +0 -61
- langflow/components/langchain_utilities/openai_tools.py +0 -53
- langflow/components/langchain_utilities/openapi.py +0 -48
- langflow/components/langchain_utilities/recursive_character.py +0 -60
- langflow/components/langchain_utilities/retrieval_qa.py +0 -83
- langflow/components/langchain_utilities/runnable_executor.py +0 -137
- langflow/components/langchain_utilities/self_query.py +0 -80
- langflow/components/langchain_utilities/spider.py +0 -142
- langflow/components/langchain_utilities/sql.py +0 -40
- langflow/components/langchain_utilities/sql_database.py +0 -35
- langflow/components/langchain_utilities/sql_generator.py +0 -78
- langflow/components/langchain_utilities/tool_calling.py +0 -59
- langflow/components/langchain_utilities/vector_store_info.py +0 -49
- langflow/components/langchain_utilities/vector_store_router.py +0 -33
- langflow/components/langchain_utilities/xml_agent.py +0 -71
- langflow/components/langwatch/__init__.py +0 -3
- langflow/components/langwatch/langwatch.py +0 -278
- langflow/components/link_extractors/__init__.py +0 -0
- langflow/components/lmstudio/__init__.py +0 -34
- langflow/components/lmstudio/lmstudioembeddings.py +0 -89
- langflow/components/lmstudio/lmstudiomodel.py +0 -129
- langflow/components/logic/__init__.py +0 -52
- langflow/components/logic/conditional_router.py +0 -171
- langflow/components/logic/data_conditional_router.py +0 -125
- langflow/components/logic/flow_tool.py +0 -110
- langflow/components/logic/listen.py +0 -29
- langflow/components/logic/loop.py +0 -125
- langflow/components/logic/notify.py +0 -88
- langflow/components/logic/pass_message.py +0 -35
- langflow/components/logic/run_flow.py +0 -71
- langflow/components/logic/sub_flow.py +0 -114
- langflow/components/maritalk/__init__.py +0 -32
- langflow/components/maritalk/maritalk.py +0 -52
- langflow/components/mem0/__init__.py +0 -3
- langflow/components/mem0/mem0_chat_memory.py +0 -136
- langflow/components/milvus/__init__.py +0 -34
- langflow/components/milvus/milvus.py +0 -115
- langflow/components/mistral/__init__.py +0 -37
- langflow/components/mistral/mistral.py +0 -114
- langflow/components/mistral/mistral_embeddings.py +0 -58
- langflow/components/models/__init__.py +0 -34
- langflow/components/models/embedding_model.py +0 -114
- langflow/components/models/language_model.py +0 -144
- langflow/components/mongodb/__init__.py +0 -34
- langflow/components/mongodb/mongodb_atlas.py +0 -213
- langflow/components/needle/__init__.py +0 -3
- langflow/components/needle/needle.py +0 -104
- langflow/components/notdiamond/__init__.py +0 -36
- langflow/components/notdiamond/notdiamond.py +0 -228
- langflow/components/novita/__init__.py +0 -32
- langflow/components/novita/novita.py +0 -130
- langflow/components/nvidia/__init__.py +0 -57
- langflow/components/nvidia/nvidia.py +0 -157
- langflow/components/nvidia/nvidia_embedding.py +0 -77
- langflow/components/nvidia/nvidia_ingest.py +0 -317
- langflow/components/nvidia/nvidia_rerank.py +0 -63
- langflow/components/nvidia/system_assist.py +0 -65
- langflow/components/olivya/__init__.py +0 -3
- langflow/components/olivya/olivya.py +0 -116
- langflow/components/ollama/__init__.py +0 -37
- langflow/components/ollama/ollama.py +0 -330
- langflow/components/ollama/ollama_embeddings.py +0 -106
- langflow/components/openai/__init__.py +0 -37
- langflow/components/openai/openai.py +0 -100
- langflow/components/openai/openai_chat_model.py +0 -158
- langflow/components/openrouter/__init__.py +0 -32
- langflow/components/openrouter/openrouter.py +0 -202
- langflow/components/output_parsers/__init__.py +0 -0
- langflow/components/perplexity/__init__.py +0 -34
- langflow/components/perplexity/perplexity.py +0 -75
- langflow/components/pgvector/__init__.py +0 -34
- langflow/components/pgvector/pgvector.py +0 -72
- langflow/components/pinecone/__init__.py +0 -34
- langflow/components/pinecone/pinecone.py +0 -134
- langflow/components/processing/alter_metadata.py +0 -108
- langflow/components/processing/batch_run.py +0 -205
- langflow/components/processing/combine_text.py +0 -39
- langflow/components/processing/create_data.py +0 -110
- langflow/components/processing/data_operations.py +0 -438
- langflow/components/processing/data_to_dataframe.py +0 -70
- langflow/components/processing/dataframe_operations.py +0 -321
- langflow/components/processing/extract_key.py +0 -53
- langflow/components/processing/filter_data.py +0 -42
- langflow/components/processing/filter_data_values.py +0 -88
- langflow/components/processing/json_cleaner.py +0 -103
- langflow/components/processing/lambda_filter.py +0 -154
- langflow/components/processing/llm_router.py +0 -499
- langflow/components/processing/merge_data.py +0 -90
- langflow/components/processing/message_to_data.py +0 -36
- langflow/components/processing/parse_data.py +0 -70
- langflow/components/processing/parse_dataframe.py +0 -68
- langflow/components/processing/parse_json_data.py +0 -90
- langflow/components/processing/parser.py +0 -143
- langflow/components/processing/prompt.py +0 -67
- langflow/components/processing/python_repl_core.py +0 -98
- langflow/components/processing/regex.py +0 -82
- langflow/components/processing/save_file.py +0 -208
- langflow/components/processing/select_data.py +0 -48
- langflow/components/processing/split_text.py +0 -141
- langflow/components/processing/structured_output.py +0 -202
- langflow/components/processing/update_data.py +0 -160
- langflow/components/prototypes/__init__.py +0 -34
- langflow/components/prototypes/python_function.py +0 -73
- langflow/components/qdrant/__init__.py +0 -34
- langflow/components/qdrant/qdrant.py +0 -109
- langflow/components/redis/__init__.py +0 -37
- langflow/components/redis/redis.py +0 -89
- langflow/components/redis/redis_chat.py +0 -43
- langflow/components/sambanova/__init__.py +0 -32
- langflow/components/sambanova/sambanova.py +0 -84
- langflow/components/scrapegraph/__init__.py +0 -40
- langflow/components/scrapegraph/scrapegraph_markdownify_api.py +0 -64
- langflow/components/scrapegraph/scrapegraph_search_api.py +0 -64
- langflow/components/scrapegraph/scrapegraph_smart_scraper_api.py +0 -71
- langflow/components/searchapi/__init__.py +0 -36
- langflow/components/searchapi/search.py +0 -79
- langflow/components/serpapi/__init__.py +0 -3
- langflow/components/serpapi/serp.py +0 -115
- langflow/components/serper/__init__.py +0 -3
- langflow/components/serper/google_serper_api_core.py +0 -74
- langflow/components/supabase/__init__.py +0 -37
- langflow/components/supabase/supabase.py +0 -76
- langflow/components/tavily/__init__.py +0 -4
- langflow/components/tavily/tavily_extract.py +0 -117
- langflow/components/tavily/tavily_search.py +0 -212
- langflow/components/textsplitters/__init__.py +0 -0
- langflow/components/toolkits/__init__.py +0 -0
- langflow/components/tools/__init__.py +0 -72
- langflow/components/tools/calculator.py +0 -103
- langflow/components/tools/google_search_api.py +0 -45
- langflow/components/tools/google_serper_api.py +0 -115
- langflow/components/tools/python_code_structured_tool.py +0 -327
- langflow/components/tools/python_repl.py +0 -97
- langflow/components/tools/search_api.py +0 -87
- langflow/components/tools/searxng.py +0 -145
- langflow/components/tools/serp_api.py +0 -119
- langflow/components/tools/tavily_search_tool.py +0 -344
- langflow/components/tools/wikidata_api.py +0 -102
- langflow/components/tools/wikipedia_api.py +0 -49
- langflow/components/tools/yahoo_finance.py +0 -124
- langflow/components/twelvelabs/__init__.py +0 -52
- langflow/components/twelvelabs/convert_astra_results.py +0 -84
- langflow/components/twelvelabs/pegasus_index.py +0 -311
- langflow/components/twelvelabs/split_video.py +0 -291
- langflow/components/twelvelabs/text_embeddings.py +0 -57
- langflow/components/twelvelabs/twelvelabs_pegasus.py +0 -408
- langflow/components/twelvelabs/video_embeddings.py +0 -100
- langflow/components/twelvelabs/video_file.py +0 -179
- langflow/components/unstructured/__init__.py +0 -3
- langflow/components/unstructured/unstructured.py +0 -121
- langflow/components/upstash/__init__.py +0 -34
- langflow/components/upstash/upstash.py +0 -124
- langflow/components/vectara/__init__.py +0 -37
- langflow/components/vectara/vectara.py +0 -97
- langflow/components/vectara/vectara_rag.py +0 -164
- langflow/components/vectorstores/__init__.py +0 -34
- langflow/components/vectorstores/local_db.py +0 -261
- langflow/components/vertexai/__init__.py +0 -37
- langflow/components/vertexai/vertexai.py +0 -71
- langflow/components/vertexai/vertexai_embeddings.py +0 -67
- langflow/components/weaviate/__init__.py +0 -34
- langflow/components/weaviate/weaviate.py +0 -89
- langflow/components/wikipedia/__init__.py +0 -4
- langflow/components/wikipedia/wikidata.py +0 -86
- langflow/components/wikipedia/wikipedia.py +0 -53
- langflow/components/wolframalpha/__init__.py +0 -3
- langflow/components/wolframalpha/wolfram_alpha_api.py +0 -54
- langflow/components/xai/__init__.py +0 -32
- langflow/components/xai/xai.py +0 -167
- langflow/components/yahoosearch/__init__.py +0 -3
- langflow/components/yahoosearch/yahoo.py +0 -137
- langflow/components/youtube/__init__.py +0 -52
- langflow/components/youtube/channel.py +0 -227
- langflow/components/youtube/comments.py +0 -231
- langflow/components/youtube/playlist.py +0 -33
- langflow/components/youtube/search.py +0 -120
- langflow/components/youtube/trending.py +0 -285
- langflow/components/youtube/video_details.py +0 -263
- langflow/components/youtube/youtube_transcripts.py +0 -118
- langflow/components/zep/__init__.py +0 -3
- langflow/components/zep/zep.py +0 -44
- langflow/custom/attributes.py +0 -86
- langflow/custom/code_parser/__init__.py +0 -3
- langflow/custom/code_parser/code_parser.py +0 -361
- langflow/custom/custom_component/base_component.py +0 -118
- langflow/custom/dependency_analyzer.py +0 -165
- langflow/custom/directory_reader/__init__.py +0 -3
- langflow/custom/directory_reader/directory_reader.py +0 -359
- langflow/custom/directory_reader/utils.py +0 -171
- langflow/custom/eval.py +0 -12
- langflow/custom/schema.py +0 -32
- langflow/custom/tree_visitor.py +0 -21
- langflow/frontend/assets/lazyIconImports-Ci-S9xBA.js +0 -2
- langflow/graph/edge/__init__.py +0 -0
- langflow/graph/edge/base.py +0 -277
- langflow/graph/edge/schema.py +0 -119
- langflow/graph/edge/utils.py +0 -0
- langflow/graph/graph/__init__.py +0 -0
- langflow/graph/graph/ascii.py +0 -202
- langflow/graph/graph/base.py +0 -2185
- langflow/graph/graph/constants.py +0 -58
- langflow/graph/graph/runnable_vertices_manager.py +0 -133
- langflow/graph/graph/schema.py +0 -53
- langflow/graph/graph/state_model.py +0 -66
- langflow/graph/graph/utils.py +0 -1024
- langflow/graph/schema.py +0 -75
- langflow/graph/state/__init__.py +0 -0
- langflow/graph/state/model.py +0 -237
- langflow/graph/utils.py +0 -229
- langflow/graph/vertex/__init__.py +0 -0
- langflow/graph/vertex/base.py +0 -811
- langflow/graph/vertex/constants.py +0 -0
- langflow/graph/vertex/exceptions.py +0 -4
- langflow/graph/vertex/param_handler.py +0 -255
- langflow/graph/vertex/schema.py +0 -26
- langflow/graph/vertex/utils.py +0 -19
- langflow/graph/vertex/vertex_types.py +0 -489
- langflow/legacy_custom/__init__.py +0 -0
- langflow/legacy_custom/customs.py +0 -16
- langflow/load/load.py +0 -250
- langflow/logging/logger.py +0 -369
- langflow/processing/utils.py +0 -25
- langflow/schema/openai_responses_schemas.py +0 -74
- langflow/schema/serialize.py +0 -13
- langflow/services/chat/config.py +0 -2
- langflow/services/settings/auth.py +0 -130
- langflow/services/settings/constants.py +0 -31
- langflow/services/settings/manager.py +0 -49
- langflow/services/settings/utils.py +0 -40
- langflow/template/field/prompt.py +0 -2
- langflow/template/frontend_node/__init__.py +0 -6
- langflow/template/frontend_node/base.py +0 -212
- langflow/template/frontend_node/constants.py +0 -65
- langflow/template/frontend_node/custom_components.py +0 -97
- langflow/template/template/__init__.py +0 -0
- langflow/template/template/base.py +0 -99
- langflow/utils/async_helpers.py +0 -42
- langflow/utils/concurrency.py +0 -60
- langflow/utils/util_strings.py +0 -56
- langflow_base_nightly-0.5.1.dev3.dist-info/RECORD +0 -1159
- {langflow_base_nightly-0.5.1.dev3.dist-info → langflow_base_nightly-0.5.1.dev4.dist-info}/WHEEL +0 -0
- {langflow_base_nightly-0.5.1.dev3.dist-info → langflow_base_nightly-0.5.1.dev4.dist-info}/entry_points.txt +0 -0
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
from enum import Enum
|
|
2
|
-
from typing import cast
|
|
3
|
-
|
|
4
|
-
from langflow.custom.custom_component.component import Component
|
|
5
|
-
from langflow.io import DataInput, DropdownInput, Output
|
|
6
|
-
from langflow.logging.logger import logger
|
|
7
|
-
from langflow.schema.dataframe import DataFrame
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
class DataOperation(str, Enum):
|
|
11
|
-
CONCATENATE = "Concatenate"
|
|
12
|
-
APPEND = "Append"
|
|
13
|
-
MERGE = "Merge"
|
|
14
|
-
JOIN = "Join"
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
class MergeDataComponent(Component):
|
|
18
|
-
display_name = "Combine Data"
|
|
19
|
-
description = "Combines data using different operations"
|
|
20
|
-
icon = "merge"
|
|
21
|
-
MIN_INPUTS_REQUIRED = 2
|
|
22
|
-
legacy = True
|
|
23
|
-
|
|
24
|
-
inputs = [
|
|
25
|
-
DataInput(name="data_inputs", display_name="Data Inputs", info="Data to combine", is_list=True, required=True),
|
|
26
|
-
DropdownInput(
|
|
27
|
-
name="operation",
|
|
28
|
-
display_name="Operation Type",
|
|
29
|
-
options=[op.value for op in DataOperation],
|
|
30
|
-
value=DataOperation.CONCATENATE.value,
|
|
31
|
-
),
|
|
32
|
-
]
|
|
33
|
-
outputs = [Output(display_name="DataFrame", name="combined_data", method="combine_data")]
|
|
34
|
-
|
|
35
|
-
def combine_data(self) -> DataFrame:
|
|
36
|
-
if not self.data_inputs or len(self.data_inputs) < self.MIN_INPUTS_REQUIRED:
|
|
37
|
-
empty_dataframe = DataFrame()
|
|
38
|
-
self.status = empty_dataframe
|
|
39
|
-
return empty_dataframe
|
|
40
|
-
|
|
41
|
-
operation = DataOperation(self.operation)
|
|
42
|
-
try:
|
|
43
|
-
combined_dataframe = self._process_operation(operation)
|
|
44
|
-
self.status = combined_dataframe
|
|
45
|
-
except Exception as e:
|
|
46
|
-
logger.error(f"Error during operation {operation}: {e!s}")
|
|
47
|
-
raise
|
|
48
|
-
else:
|
|
49
|
-
return combined_dataframe
|
|
50
|
-
|
|
51
|
-
def _process_operation(self, operation: DataOperation) -> DataFrame:
|
|
52
|
-
if operation == DataOperation.CONCATENATE:
|
|
53
|
-
combined_data: dict[str, str | object] = {}
|
|
54
|
-
for data_input in self.data_inputs:
|
|
55
|
-
for key, value in data_input.data.items():
|
|
56
|
-
if key in combined_data:
|
|
57
|
-
if isinstance(combined_data[key], str) and isinstance(value, str):
|
|
58
|
-
combined_data[key] = f"{combined_data[key]}\n{value}"
|
|
59
|
-
else:
|
|
60
|
-
combined_data[key] = value
|
|
61
|
-
else:
|
|
62
|
-
combined_data[key] = value
|
|
63
|
-
return DataFrame([combined_data])
|
|
64
|
-
|
|
65
|
-
if operation == DataOperation.APPEND:
|
|
66
|
-
rows = [data_input.data for data_input in self.data_inputs]
|
|
67
|
-
return DataFrame(rows)
|
|
68
|
-
|
|
69
|
-
if operation == DataOperation.MERGE:
|
|
70
|
-
result_data: dict[str, str | list[str] | object] = {}
|
|
71
|
-
for data_input in self.data_inputs:
|
|
72
|
-
for key, value in data_input.data.items():
|
|
73
|
-
if key in result_data and isinstance(value, str):
|
|
74
|
-
if isinstance(result_data[key], list):
|
|
75
|
-
cast("list[str]", result_data[key]).append(value)
|
|
76
|
-
else:
|
|
77
|
-
result_data[key] = [result_data[key], value]
|
|
78
|
-
else:
|
|
79
|
-
result_data[key] = value
|
|
80
|
-
return DataFrame([result_data])
|
|
81
|
-
|
|
82
|
-
if operation == DataOperation.JOIN:
|
|
83
|
-
combined_data = {}
|
|
84
|
-
for idx, data_input in enumerate(self.data_inputs, 1):
|
|
85
|
-
for key, value in data_input.data.items():
|
|
86
|
-
new_key = f"{key}_doc{idx}" if idx > 1 else key
|
|
87
|
-
combined_data[new_key] = value
|
|
88
|
-
return DataFrame([combined_data])
|
|
89
|
-
|
|
90
|
-
return DataFrame()
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
from langflow.custom.custom_component.component import Component
|
|
2
|
-
from langflow.io import MessageInput, Output
|
|
3
|
-
from langflow.logging.logger import logger
|
|
4
|
-
from langflow.schema.data import Data
|
|
5
|
-
from langflow.schema.message import Message
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
class MessageToDataComponent(Component):
|
|
9
|
-
display_name = "Message to Data"
|
|
10
|
-
description = "Convert a Message object to a Data object"
|
|
11
|
-
icon = "message-square-share"
|
|
12
|
-
beta = True
|
|
13
|
-
name = "MessagetoData"
|
|
14
|
-
legacy = True
|
|
15
|
-
|
|
16
|
-
inputs = [
|
|
17
|
-
MessageInput(
|
|
18
|
-
name="message",
|
|
19
|
-
display_name="Message",
|
|
20
|
-
info="The Message object to convert to a Data object",
|
|
21
|
-
),
|
|
22
|
-
]
|
|
23
|
-
|
|
24
|
-
outputs = [
|
|
25
|
-
Output(display_name="Data", name="data", method="convert_message_to_data"),
|
|
26
|
-
]
|
|
27
|
-
|
|
28
|
-
def convert_message_to_data(self) -> Data:
|
|
29
|
-
if isinstance(self.message, Message):
|
|
30
|
-
# Convert Message to Data
|
|
31
|
-
return Data(data=self.message.data)
|
|
32
|
-
|
|
33
|
-
msg = "Error converting Message to Data: Input must be a Message object"
|
|
34
|
-
logger.debug(msg, exc_info=True)
|
|
35
|
-
self.status = msg
|
|
36
|
-
return Data(data={"error": msg})
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
from langflow.custom.custom_component.component import Component
|
|
2
|
-
from langflow.helpers.data import data_to_text, data_to_text_list
|
|
3
|
-
from langflow.io import DataInput, MultilineInput, Output, StrInput
|
|
4
|
-
from langflow.schema.data import Data
|
|
5
|
-
from langflow.schema.message import Message
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
class ParseDataComponent(Component):
|
|
9
|
-
display_name = "Data to Message"
|
|
10
|
-
description = "Convert Data objects into Messages using any {field_name} from input data."
|
|
11
|
-
icon = "message-square"
|
|
12
|
-
name = "ParseData"
|
|
13
|
-
legacy = True
|
|
14
|
-
metadata = {
|
|
15
|
-
"legacy_name": "Parse Data",
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
inputs = [
|
|
19
|
-
DataInput(
|
|
20
|
-
name="data",
|
|
21
|
-
display_name="Data",
|
|
22
|
-
info="The data to convert to text.",
|
|
23
|
-
is_list=True,
|
|
24
|
-
required=True,
|
|
25
|
-
),
|
|
26
|
-
MultilineInput(
|
|
27
|
-
name="template",
|
|
28
|
-
display_name="Template",
|
|
29
|
-
info="The template to use for formatting the data. "
|
|
30
|
-
"It can contain the keys {text}, {data} or any other key in the Data.",
|
|
31
|
-
value="{text}",
|
|
32
|
-
required=True,
|
|
33
|
-
),
|
|
34
|
-
StrInput(name="sep", display_name="Separator", advanced=True, value="\n"),
|
|
35
|
-
]
|
|
36
|
-
|
|
37
|
-
outputs = [
|
|
38
|
-
Output(
|
|
39
|
-
display_name="Message",
|
|
40
|
-
name="text",
|
|
41
|
-
info="Data as a single Message, with each input Data separated by Separator",
|
|
42
|
-
method="parse_data",
|
|
43
|
-
),
|
|
44
|
-
Output(
|
|
45
|
-
display_name="Data List",
|
|
46
|
-
name="data_list",
|
|
47
|
-
info="Data as a list of new Data, each having `text` formatted by Template",
|
|
48
|
-
method="parse_data_as_list",
|
|
49
|
-
),
|
|
50
|
-
]
|
|
51
|
-
|
|
52
|
-
def _clean_args(self) -> tuple[list[Data], str, str]:
|
|
53
|
-
data = self.data if isinstance(self.data, list) else [self.data]
|
|
54
|
-
template = self.template
|
|
55
|
-
sep = self.sep
|
|
56
|
-
return data, template, sep
|
|
57
|
-
|
|
58
|
-
def parse_data(self) -> Message:
|
|
59
|
-
data, template, sep = self._clean_args()
|
|
60
|
-
result_string = data_to_text(template, data, sep)
|
|
61
|
-
self.status = result_string
|
|
62
|
-
return Message(text=result_string)
|
|
63
|
-
|
|
64
|
-
def parse_data_as_list(self) -> list[Data]:
|
|
65
|
-
data, template, _ = self._clean_args()
|
|
66
|
-
text_list, data_list = data_to_text_list(template, data)
|
|
67
|
-
for item, text in zip(data_list, text_list, strict=True):
|
|
68
|
-
item.set_text(text)
|
|
69
|
-
self.status = data_list
|
|
70
|
-
return data_list
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
from langflow.custom.custom_component.component import Component
|
|
2
|
-
from langflow.io import DataFrameInput, MultilineInput, Output, StrInput
|
|
3
|
-
from langflow.schema.message import Message
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
class ParseDataFrameComponent(Component):
|
|
7
|
-
display_name = "Parse DataFrame"
|
|
8
|
-
description = (
|
|
9
|
-
"Convert a DataFrame into plain text following a specified template. "
|
|
10
|
-
"Each column in the DataFrame is treated as a possible template key, e.g. {col_name}."
|
|
11
|
-
)
|
|
12
|
-
icon = "braces"
|
|
13
|
-
name = "ParseDataFrame"
|
|
14
|
-
legacy = True
|
|
15
|
-
|
|
16
|
-
inputs = [
|
|
17
|
-
DataFrameInput(name="df", display_name="DataFrame", info="The DataFrame to convert to text rows."),
|
|
18
|
-
MultilineInput(
|
|
19
|
-
name="template",
|
|
20
|
-
display_name="Template",
|
|
21
|
-
info=(
|
|
22
|
-
"The template for formatting each row. "
|
|
23
|
-
"Use placeholders matching column names in the DataFrame, for example '{col1}', '{col2}'."
|
|
24
|
-
),
|
|
25
|
-
value="{text}",
|
|
26
|
-
),
|
|
27
|
-
StrInput(
|
|
28
|
-
name="sep",
|
|
29
|
-
display_name="Separator",
|
|
30
|
-
advanced=True,
|
|
31
|
-
value="\n",
|
|
32
|
-
info="String that joins all row texts when building the single Text output.",
|
|
33
|
-
),
|
|
34
|
-
]
|
|
35
|
-
|
|
36
|
-
outputs = [
|
|
37
|
-
Output(
|
|
38
|
-
display_name="Text",
|
|
39
|
-
name="text",
|
|
40
|
-
info="All rows combined into a single text, each row formatted by the template and separated by `sep`.",
|
|
41
|
-
method="parse_data",
|
|
42
|
-
),
|
|
43
|
-
]
|
|
44
|
-
|
|
45
|
-
def _clean_args(self):
|
|
46
|
-
dataframe = self.df
|
|
47
|
-
template = self.template or "{text}"
|
|
48
|
-
sep = self.sep or "\n"
|
|
49
|
-
return dataframe, template, sep
|
|
50
|
-
|
|
51
|
-
def parse_data(self) -> Message:
|
|
52
|
-
"""Converts each row of the DataFrame into a formatted string using the template.
|
|
53
|
-
|
|
54
|
-
then joins them with `sep`. Returns a single combined string as a Message.
|
|
55
|
-
"""
|
|
56
|
-
dataframe, template, sep = self._clean_args()
|
|
57
|
-
|
|
58
|
-
lines = []
|
|
59
|
-
# For each row in the DataFrame, build a dict and format
|
|
60
|
-
for _, row in dataframe.iterrows():
|
|
61
|
-
row_dict = row.to_dict()
|
|
62
|
-
text_line = template.format(**row_dict) # e.g. template="{text}", row_dict={"text": "Hello"}
|
|
63
|
-
lines.append(text_line)
|
|
64
|
-
|
|
65
|
-
# Join all lines with the provided separator
|
|
66
|
-
result_string = sep.join(lines)
|
|
67
|
-
self.status = result_string # store in self.status for UI logs
|
|
68
|
-
return Message(text=result_string)
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
import json
|
|
2
|
-
from json import JSONDecodeError
|
|
3
|
-
|
|
4
|
-
import jq
|
|
5
|
-
from json_repair import repair_json
|
|
6
|
-
|
|
7
|
-
from langflow.custom.custom_component.component import Component
|
|
8
|
-
from langflow.inputs.inputs import HandleInput, MessageTextInput
|
|
9
|
-
from langflow.io import Output
|
|
10
|
-
from langflow.logging.logger import logger
|
|
11
|
-
from langflow.schema.data import Data
|
|
12
|
-
from langflow.schema.message import Message
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
class ParseJSONDataComponent(Component):
|
|
16
|
-
display_name = "Parse JSON"
|
|
17
|
-
description = "Convert and extract JSON fields."
|
|
18
|
-
icon = "braces"
|
|
19
|
-
name = "ParseJSONData"
|
|
20
|
-
legacy: bool = True
|
|
21
|
-
|
|
22
|
-
inputs = [
|
|
23
|
-
HandleInput(
|
|
24
|
-
name="input_value",
|
|
25
|
-
display_name="Input",
|
|
26
|
-
info="Data object to filter.",
|
|
27
|
-
required=True,
|
|
28
|
-
input_types=["Message", "Data"],
|
|
29
|
-
),
|
|
30
|
-
MessageTextInput(
|
|
31
|
-
name="query",
|
|
32
|
-
display_name="JQ Query",
|
|
33
|
-
info="JQ Query to filter the data. The input is always a JSON list.",
|
|
34
|
-
required=True,
|
|
35
|
-
),
|
|
36
|
-
]
|
|
37
|
-
|
|
38
|
-
outputs = [
|
|
39
|
-
Output(display_name="Filtered Data", name="filtered_data", method="filter_data"),
|
|
40
|
-
]
|
|
41
|
-
|
|
42
|
-
def _parse_data(self, input_value) -> str:
|
|
43
|
-
if isinstance(input_value, Message) and isinstance(input_value.text, str):
|
|
44
|
-
return input_value.text
|
|
45
|
-
if isinstance(input_value, Data):
|
|
46
|
-
return json.dumps(input_value.data)
|
|
47
|
-
return str(input_value)
|
|
48
|
-
|
|
49
|
-
def filter_data(self) -> list[Data]:
|
|
50
|
-
to_filter = self.input_value
|
|
51
|
-
if not to_filter:
|
|
52
|
-
return []
|
|
53
|
-
# Check if input is a list
|
|
54
|
-
if isinstance(to_filter, list):
|
|
55
|
-
to_filter = [self._parse_data(f) for f in to_filter]
|
|
56
|
-
else:
|
|
57
|
-
to_filter = self._parse_data(to_filter)
|
|
58
|
-
|
|
59
|
-
# If input is not a list, don't wrap it in a list
|
|
60
|
-
if not isinstance(to_filter, list):
|
|
61
|
-
to_filter = repair_json(to_filter)
|
|
62
|
-
try:
|
|
63
|
-
to_filter_as_dict = json.loads(to_filter)
|
|
64
|
-
except JSONDecodeError:
|
|
65
|
-
try:
|
|
66
|
-
to_filter_as_dict = json.loads(repair_json(to_filter))
|
|
67
|
-
except JSONDecodeError as e:
|
|
68
|
-
msg = f"Invalid JSON: {e}"
|
|
69
|
-
raise ValueError(msg) from e
|
|
70
|
-
else:
|
|
71
|
-
to_filter = [repair_json(f) for f in to_filter]
|
|
72
|
-
to_filter_as_dict = []
|
|
73
|
-
for f in to_filter:
|
|
74
|
-
try:
|
|
75
|
-
to_filter_as_dict.append(json.loads(f))
|
|
76
|
-
except JSONDecodeError:
|
|
77
|
-
try:
|
|
78
|
-
to_filter_as_dict.append(json.loads(repair_json(f)))
|
|
79
|
-
except JSONDecodeError as e:
|
|
80
|
-
msg = f"Invalid JSON: {e}"
|
|
81
|
-
raise ValueError(msg) from e
|
|
82
|
-
to_filter = to_filter_as_dict
|
|
83
|
-
|
|
84
|
-
full_filter_str = json.dumps(to_filter_as_dict)
|
|
85
|
-
|
|
86
|
-
logger.info("to_filter: ", to_filter)
|
|
87
|
-
|
|
88
|
-
results = jq.compile(self.query).input_text(full_filter_str).all()
|
|
89
|
-
logger.info("results: ", results)
|
|
90
|
-
return [Data(data=value) if isinstance(value, dict) else Data(text=str(value)) for value in results]
|
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
from langflow.custom.custom_component.component import Component
|
|
2
|
-
from langflow.helpers.data import safe_convert
|
|
3
|
-
from langflow.inputs.inputs import BoolInput, HandleInput, MessageTextInput, MultilineInput, TabInput
|
|
4
|
-
from langflow.schema.data import Data
|
|
5
|
-
from langflow.schema.dataframe import DataFrame
|
|
6
|
-
from langflow.schema.message import Message
|
|
7
|
-
from langflow.template.field.base import Output
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
class ParserComponent(Component):
|
|
11
|
-
display_name = "Parser"
|
|
12
|
-
description = "Extracts text using a template."
|
|
13
|
-
documentation: str = "https://docs.langflow.org/components-processing#parser"
|
|
14
|
-
icon = "braces"
|
|
15
|
-
|
|
16
|
-
inputs = [
|
|
17
|
-
HandleInput(
|
|
18
|
-
name="input_data",
|
|
19
|
-
display_name="Data or DataFrame",
|
|
20
|
-
input_types=["DataFrame", "Data"],
|
|
21
|
-
info="Accepts either a DataFrame or a Data object.",
|
|
22
|
-
required=True,
|
|
23
|
-
),
|
|
24
|
-
TabInput(
|
|
25
|
-
name="mode",
|
|
26
|
-
display_name="Mode",
|
|
27
|
-
options=["Parser", "Stringify"],
|
|
28
|
-
value="Parser",
|
|
29
|
-
info="Convert into raw string instead of using a template.",
|
|
30
|
-
real_time_refresh=True,
|
|
31
|
-
),
|
|
32
|
-
MultilineInput(
|
|
33
|
-
name="pattern",
|
|
34
|
-
display_name="Template",
|
|
35
|
-
info=(
|
|
36
|
-
"Use variables within curly brackets to extract column values for DataFrames "
|
|
37
|
-
"or key values for Data."
|
|
38
|
-
"For example: `Name: {Name}, Age: {Age}, Country: {Country}`"
|
|
39
|
-
),
|
|
40
|
-
value="Text: {text}", # Example default
|
|
41
|
-
dynamic=True,
|
|
42
|
-
show=True,
|
|
43
|
-
required=True,
|
|
44
|
-
),
|
|
45
|
-
MessageTextInput(
|
|
46
|
-
name="sep",
|
|
47
|
-
display_name="Separator",
|
|
48
|
-
advanced=True,
|
|
49
|
-
value="\n",
|
|
50
|
-
info="String used to separate rows/items.",
|
|
51
|
-
),
|
|
52
|
-
]
|
|
53
|
-
|
|
54
|
-
outputs = [
|
|
55
|
-
Output(
|
|
56
|
-
display_name="Parsed Text",
|
|
57
|
-
name="parsed_text",
|
|
58
|
-
info="Formatted text output.",
|
|
59
|
-
method="parse_combined_text",
|
|
60
|
-
),
|
|
61
|
-
]
|
|
62
|
-
|
|
63
|
-
def update_build_config(self, build_config, field_value, field_name=None):
|
|
64
|
-
"""Dynamically hide/show `template` and enforce requirement based on `stringify`."""
|
|
65
|
-
if field_name == "mode":
|
|
66
|
-
build_config["pattern"]["show"] = self.mode == "Parser"
|
|
67
|
-
build_config["pattern"]["required"] = self.mode == "Parser"
|
|
68
|
-
if field_value:
|
|
69
|
-
clean_data = BoolInput(
|
|
70
|
-
name="clean_data",
|
|
71
|
-
display_name="Clean Data",
|
|
72
|
-
info=(
|
|
73
|
-
"Enable to clean the data by removing empty rows and lines "
|
|
74
|
-
"in each cell of the DataFrame/ Data object."
|
|
75
|
-
),
|
|
76
|
-
value=True,
|
|
77
|
-
advanced=True,
|
|
78
|
-
required=False,
|
|
79
|
-
)
|
|
80
|
-
build_config["clean_data"] = clean_data.to_dict()
|
|
81
|
-
else:
|
|
82
|
-
build_config.pop("clean_data", None)
|
|
83
|
-
|
|
84
|
-
return build_config
|
|
85
|
-
|
|
86
|
-
def _clean_args(self):
|
|
87
|
-
"""Prepare arguments based on input type."""
|
|
88
|
-
input_data = self.input_data
|
|
89
|
-
|
|
90
|
-
match input_data:
|
|
91
|
-
case list() if all(isinstance(item, Data) for item in input_data):
|
|
92
|
-
msg = "List of Data objects is not supported."
|
|
93
|
-
raise ValueError(msg)
|
|
94
|
-
case DataFrame():
|
|
95
|
-
return input_data, None
|
|
96
|
-
case Data():
|
|
97
|
-
return None, input_data
|
|
98
|
-
case dict() if "data" in input_data:
|
|
99
|
-
try:
|
|
100
|
-
if "columns" in input_data: # Likely a DataFrame
|
|
101
|
-
return DataFrame.from_dict(input_data), None
|
|
102
|
-
# Likely a Data object
|
|
103
|
-
return None, Data(**input_data)
|
|
104
|
-
except (TypeError, ValueError, KeyError) as e:
|
|
105
|
-
msg = f"Invalid structured input provided: {e!s}"
|
|
106
|
-
raise ValueError(msg) from e
|
|
107
|
-
case _:
|
|
108
|
-
msg = f"Unsupported input type: {type(input_data)}. Expected DataFrame or Data."
|
|
109
|
-
raise ValueError(msg)
|
|
110
|
-
|
|
111
|
-
def parse_combined_text(self) -> Message:
|
|
112
|
-
"""Parse all rows/items into a single text or convert input to string if `stringify` is enabled."""
|
|
113
|
-
# Early return for stringify option
|
|
114
|
-
if self.mode == "Stringify":
|
|
115
|
-
return self.convert_to_string()
|
|
116
|
-
|
|
117
|
-
df, data = self._clean_args()
|
|
118
|
-
|
|
119
|
-
lines = []
|
|
120
|
-
if df is not None:
|
|
121
|
-
for _, row in df.iterrows():
|
|
122
|
-
formatted_text = self.pattern.format(**row.to_dict())
|
|
123
|
-
lines.append(formatted_text)
|
|
124
|
-
elif data is not None:
|
|
125
|
-
formatted_text = self.pattern.format(**data.data)
|
|
126
|
-
lines.append(formatted_text)
|
|
127
|
-
|
|
128
|
-
combined_text = self.sep.join(lines)
|
|
129
|
-
self.status = combined_text
|
|
130
|
-
return Message(text=combined_text)
|
|
131
|
-
|
|
132
|
-
def convert_to_string(self) -> Message:
|
|
133
|
-
"""Convert input data to string with proper error handling."""
|
|
134
|
-
result = ""
|
|
135
|
-
if isinstance(self.input_data, list):
|
|
136
|
-
result = "\n".join([safe_convert(item, clean_data=self.clean_data or False) for item in self.input_data])
|
|
137
|
-
else:
|
|
138
|
-
result = safe_convert(self.input_data or False)
|
|
139
|
-
self.log(f"Converted to string with length: {len(result)}")
|
|
140
|
-
|
|
141
|
-
message = Message(text=result)
|
|
142
|
-
self.status = message
|
|
143
|
-
return message
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
from langflow.base.prompts.api_utils import process_prompt_template
|
|
2
|
-
from langflow.custom.custom_component.component import Component
|
|
3
|
-
from langflow.inputs.inputs import DefaultPromptField
|
|
4
|
-
from langflow.io import MessageTextInput, Output, PromptInput
|
|
5
|
-
from langflow.schema.message import Message
|
|
6
|
-
from langflow.template.utils import update_template_values
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
class PromptComponent(Component):
|
|
10
|
-
display_name: str = "Prompt Template"
|
|
11
|
-
description: str = "Create a prompt template with dynamic variables."
|
|
12
|
-
documentation: str = "https://docs.langflow.org/components-prompts"
|
|
13
|
-
icon = "braces"
|
|
14
|
-
trace_type = "prompt"
|
|
15
|
-
name = "Prompt Template"
|
|
16
|
-
priority = 0 # Set priority to 0 to make it appear first
|
|
17
|
-
|
|
18
|
-
inputs = [
|
|
19
|
-
PromptInput(name="template", display_name="Template"),
|
|
20
|
-
MessageTextInput(
|
|
21
|
-
name="tool_placeholder",
|
|
22
|
-
display_name="Tool Placeholder",
|
|
23
|
-
tool_mode=True,
|
|
24
|
-
advanced=True,
|
|
25
|
-
info="A placeholder input for tool mode.",
|
|
26
|
-
),
|
|
27
|
-
]
|
|
28
|
-
|
|
29
|
-
outputs = [
|
|
30
|
-
Output(display_name="Prompt", name="prompt", method="build_prompt"),
|
|
31
|
-
]
|
|
32
|
-
|
|
33
|
-
async def build_prompt(self) -> Message:
|
|
34
|
-
prompt = Message.from_template(**self._attributes)
|
|
35
|
-
self.status = prompt.text
|
|
36
|
-
return prompt
|
|
37
|
-
|
|
38
|
-
def _update_template(self, frontend_node: dict):
|
|
39
|
-
prompt_template = frontend_node["template"]["template"]["value"]
|
|
40
|
-
custom_fields = frontend_node["custom_fields"]
|
|
41
|
-
frontend_node_template = frontend_node["template"]
|
|
42
|
-
_ = process_prompt_template(
|
|
43
|
-
template=prompt_template,
|
|
44
|
-
name="template",
|
|
45
|
-
custom_fields=custom_fields,
|
|
46
|
-
frontend_node_template=frontend_node_template,
|
|
47
|
-
)
|
|
48
|
-
return frontend_node
|
|
49
|
-
|
|
50
|
-
async def update_frontend_node(self, new_frontend_node: dict, current_frontend_node: dict):
|
|
51
|
-
"""This function is called after the code validation is done."""
|
|
52
|
-
frontend_node = await super().update_frontend_node(new_frontend_node, current_frontend_node)
|
|
53
|
-
template = frontend_node["template"]["template"]["value"]
|
|
54
|
-
# Kept it duplicated for backwards compatibility
|
|
55
|
-
_ = process_prompt_template(
|
|
56
|
-
template=template,
|
|
57
|
-
name="template",
|
|
58
|
-
custom_fields=frontend_node["custom_fields"],
|
|
59
|
-
frontend_node_template=frontend_node["template"],
|
|
60
|
-
)
|
|
61
|
-
# Now that template is updated, we need to grab any values that were set in the current_frontend_node
|
|
62
|
-
# and update the frontend_node with those values
|
|
63
|
-
update_template_values(new_template=frontend_node, previous_template=current_frontend_node["template"])
|
|
64
|
-
return frontend_node
|
|
65
|
-
|
|
66
|
-
def _get_fallback_input(self, **kwargs):
|
|
67
|
-
return DefaultPromptField(**kwargs)
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
import importlib
|
|
2
|
-
|
|
3
|
-
from langchain_experimental.utilities import PythonREPL
|
|
4
|
-
|
|
5
|
-
from langflow.custom.custom_component.component import Component
|
|
6
|
-
from langflow.io import CodeInput, Output, StrInput
|
|
7
|
-
from langflow.schema.data import Data
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
class PythonREPLComponent(Component):
|
|
11
|
-
display_name = "Python Interpreter"
|
|
12
|
-
description = "Run Python code with optional imports. Use print() to see the output."
|
|
13
|
-
documentation: str = "https://docs.langflow.org/components-processing#python-interpreter"
|
|
14
|
-
icon = "square-terminal"
|
|
15
|
-
|
|
16
|
-
inputs = [
|
|
17
|
-
StrInput(
|
|
18
|
-
name="global_imports",
|
|
19
|
-
display_name="Global Imports",
|
|
20
|
-
info="A comma-separated list of modules to import globally, e.g. 'math,numpy,pandas'.",
|
|
21
|
-
value="math,pandas",
|
|
22
|
-
required=True,
|
|
23
|
-
),
|
|
24
|
-
CodeInput(
|
|
25
|
-
name="python_code",
|
|
26
|
-
display_name="Python Code",
|
|
27
|
-
info="The Python code to execute. Only modules specified in Global Imports can be used.",
|
|
28
|
-
value="print('Hello, World!')",
|
|
29
|
-
input_types=["Message"],
|
|
30
|
-
tool_mode=True,
|
|
31
|
-
required=True,
|
|
32
|
-
),
|
|
33
|
-
]
|
|
34
|
-
|
|
35
|
-
outputs = [
|
|
36
|
-
Output(
|
|
37
|
-
display_name="Results",
|
|
38
|
-
name="results",
|
|
39
|
-
type_=Data,
|
|
40
|
-
method="run_python_repl",
|
|
41
|
-
),
|
|
42
|
-
]
|
|
43
|
-
|
|
44
|
-
def get_globals(self, global_imports: str | list[str]) -> dict:
|
|
45
|
-
"""Create a globals dictionary with only the specified allowed imports."""
|
|
46
|
-
global_dict = {}
|
|
47
|
-
|
|
48
|
-
try:
|
|
49
|
-
if isinstance(global_imports, str):
|
|
50
|
-
modules = [module.strip() for module in global_imports.split(",")]
|
|
51
|
-
elif isinstance(global_imports, list):
|
|
52
|
-
modules = global_imports
|
|
53
|
-
else:
|
|
54
|
-
msg = "global_imports must be either a string or a list"
|
|
55
|
-
raise TypeError(msg)
|
|
56
|
-
|
|
57
|
-
for module in modules:
|
|
58
|
-
try:
|
|
59
|
-
imported_module = importlib.import_module(module)
|
|
60
|
-
global_dict[imported_module.__name__] = imported_module
|
|
61
|
-
except ImportError as e:
|
|
62
|
-
msg = f"Could not import module {module}: {e!s}"
|
|
63
|
-
raise ImportError(msg) from e
|
|
64
|
-
|
|
65
|
-
except Exception as e:
|
|
66
|
-
self.log(f"Error in global imports: {e!s}")
|
|
67
|
-
raise
|
|
68
|
-
else:
|
|
69
|
-
self.log(f"Successfully imported modules: {list(global_dict.keys())}")
|
|
70
|
-
return global_dict
|
|
71
|
-
|
|
72
|
-
def run_python_repl(self) -> Data:
|
|
73
|
-
try:
|
|
74
|
-
globals_ = self.get_globals(self.global_imports)
|
|
75
|
-
python_repl = PythonREPL(_globals=globals_)
|
|
76
|
-
result = python_repl.run(self.python_code)
|
|
77
|
-
result = result.strip() if result else ""
|
|
78
|
-
|
|
79
|
-
self.log("Code execution completed successfully")
|
|
80
|
-
return Data(data={"result": result})
|
|
81
|
-
|
|
82
|
-
except ImportError as e:
|
|
83
|
-
error_message = f"Import Error: {e!s}"
|
|
84
|
-
self.log(error_message)
|
|
85
|
-
return Data(data={"error": error_message})
|
|
86
|
-
|
|
87
|
-
except SyntaxError as e:
|
|
88
|
-
error_message = f"Syntax Error: {e!s}"
|
|
89
|
-
self.log(error_message)
|
|
90
|
-
return Data(data={"error": error_message})
|
|
91
|
-
|
|
92
|
-
except (NameError, TypeError, ValueError) as e:
|
|
93
|
-
error_message = f"Error during execution: {e!s}"
|
|
94
|
-
self.log(error_message)
|
|
95
|
-
return Data(data={"error": error_message})
|
|
96
|
-
|
|
97
|
-
def build(self):
|
|
98
|
-
return self.run_python_repl
|