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/components/groq/groq.py
DELETED
|
@@ -1,140 +0,0 @@
|
|
|
1
|
-
import requests
|
|
2
|
-
from pydantic.v1 import SecretStr
|
|
3
|
-
|
|
4
|
-
from langflow.base.models.groq_constants import (
|
|
5
|
-
GROQ_MODELS,
|
|
6
|
-
TOOL_CALLING_UNSUPPORTED_GROQ_MODELS,
|
|
7
|
-
UNSUPPORTED_GROQ_MODELS,
|
|
8
|
-
)
|
|
9
|
-
from langflow.base.models.model import LCModelComponent
|
|
10
|
-
from langflow.field_typing import LanguageModel
|
|
11
|
-
from langflow.field_typing.range_spec import RangeSpec
|
|
12
|
-
from langflow.io import BoolInput, DropdownInput, IntInput, MessageTextInput, SecretStrInput, SliderInput
|
|
13
|
-
from langflow.logging.logger import logger
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
class GroqModel(LCModelComponent):
|
|
17
|
-
display_name: str = "Groq"
|
|
18
|
-
description: str = "Generate text using Groq."
|
|
19
|
-
icon = "Groq"
|
|
20
|
-
name = "GroqModel"
|
|
21
|
-
|
|
22
|
-
inputs = [
|
|
23
|
-
*LCModelComponent._base_inputs,
|
|
24
|
-
SecretStrInput(
|
|
25
|
-
name="api_key", display_name="Groq API Key", info="API key for the Groq API.", real_time_refresh=True
|
|
26
|
-
),
|
|
27
|
-
MessageTextInput(
|
|
28
|
-
name="base_url",
|
|
29
|
-
display_name="Groq API Base",
|
|
30
|
-
info="Base URL path for API requests, leave blank if not using a proxy or service emulator.",
|
|
31
|
-
advanced=True,
|
|
32
|
-
value="https://api.groq.com",
|
|
33
|
-
real_time_refresh=True,
|
|
34
|
-
),
|
|
35
|
-
IntInput(
|
|
36
|
-
name="max_tokens",
|
|
37
|
-
display_name="Max Output Tokens",
|
|
38
|
-
info="The maximum number of tokens to generate.",
|
|
39
|
-
advanced=True,
|
|
40
|
-
),
|
|
41
|
-
SliderInput(
|
|
42
|
-
name="temperature",
|
|
43
|
-
display_name="Temperature",
|
|
44
|
-
value=0.1,
|
|
45
|
-
info="Run inference with this temperature. Must by in the closed interval [0.0, 1.0].",
|
|
46
|
-
range_spec=RangeSpec(min=0, max=1, step=0.01),
|
|
47
|
-
advanced=True,
|
|
48
|
-
),
|
|
49
|
-
IntInput(
|
|
50
|
-
name="n",
|
|
51
|
-
display_name="N",
|
|
52
|
-
info="Number of chat completions to generate for each prompt. "
|
|
53
|
-
"Note that the API may not return the full n completions if duplicates are generated.",
|
|
54
|
-
advanced=True,
|
|
55
|
-
),
|
|
56
|
-
DropdownInput(
|
|
57
|
-
name="model_name",
|
|
58
|
-
display_name="Model",
|
|
59
|
-
info="The name of the model to use.",
|
|
60
|
-
options=GROQ_MODELS,
|
|
61
|
-
value=GROQ_MODELS[0],
|
|
62
|
-
refresh_button=True,
|
|
63
|
-
combobox=True,
|
|
64
|
-
),
|
|
65
|
-
BoolInput(
|
|
66
|
-
name="tool_model_enabled",
|
|
67
|
-
display_name="Enable Tool Models",
|
|
68
|
-
info=(
|
|
69
|
-
"Select if you want to use models that can work with tools. If yes, only those models will be shown."
|
|
70
|
-
),
|
|
71
|
-
advanced=False,
|
|
72
|
-
value=False,
|
|
73
|
-
real_time_refresh=True,
|
|
74
|
-
),
|
|
75
|
-
]
|
|
76
|
-
|
|
77
|
-
def get_models(self, *, tool_model_enabled: bool | None = None) -> list[str]:
|
|
78
|
-
try:
|
|
79
|
-
url = f"{self.base_url}/openai/v1/models"
|
|
80
|
-
headers = {"Authorization": f"Bearer {self.api_key}", "Content-Type": "application/json"}
|
|
81
|
-
|
|
82
|
-
response = requests.get(url, headers=headers, timeout=10)
|
|
83
|
-
response.raise_for_status()
|
|
84
|
-
model_list = response.json()
|
|
85
|
-
model_ids = [
|
|
86
|
-
model["id"] for model in model_list.get("data", []) if model["id"] not in UNSUPPORTED_GROQ_MODELS
|
|
87
|
-
]
|
|
88
|
-
except (ImportError, ValueError, requests.exceptions.RequestException) as e:
|
|
89
|
-
logger.exception(f"Error getting model names: {e}")
|
|
90
|
-
model_ids = GROQ_MODELS
|
|
91
|
-
if tool_model_enabled:
|
|
92
|
-
try:
|
|
93
|
-
from langchain_groq import ChatGroq
|
|
94
|
-
except ImportError as e:
|
|
95
|
-
msg = "langchain_groq is not installed. Please install it with `pip install langchain_groq`."
|
|
96
|
-
raise ImportError(msg) from e
|
|
97
|
-
for model in model_ids:
|
|
98
|
-
model_with_tool = ChatGroq(
|
|
99
|
-
model=model,
|
|
100
|
-
api_key=self.api_key,
|
|
101
|
-
base_url=self.base_url,
|
|
102
|
-
)
|
|
103
|
-
if not self.supports_tool_calling(model_with_tool) or model in TOOL_CALLING_UNSUPPORTED_GROQ_MODELS:
|
|
104
|
-
model_ids.remove(model)
|
|
105
|
-
return model_ids
|
|
106
|
-
return model_ids
|
|
107
|
-
|
|
108
|
-
def update_build_config(self, build_config: dict, field_value: str, field_name: str | None = None):
|
|
109
|
-
if field_name in {"base_url", "model_name", "tool_model_enabled", "api_key"} and field_value:
|
|
110
|
-
try:
|
|
111
|
-
if len(self.api_key) != 0:
|
|
112
|
-
try:
|
|
113
|
-
ids = self.get_models(tool_model_enabled=self.tool_model_enabled)
|
|
114
|
-
except (ImportError, ValueError, requests.exceptions.RequestException) as e:
|
|
115
|
-
logger.exception(f"Error getting model names: {e}")
|
|
116
|
-
ids = GROQ_MODELS
|
|
117
|
-
build_config.setdefault("model_name", {})
|
|
118
|
-
build_config["model_name"]["options"] = ids
|
|
119
|
-
build_config["model_name"].setdefault("value", ids[0])
|
|
120
|
-
except Exception as e:
|
|
121
|
-
msg = f"Error getting model names: {e}"
|
|
122
|
-
raise ValueError(msg) from e
|
|
123
|
-
return build_config
|
|
124
|
-
|
|
125
|
-
def build_model(self) -> LanguageModel: # type: ignore[type-var]
|
|
126
|
-
try:
|
|
127
|
-
from langchain_groq import ChatGroq
|
|
128
|
-
except ImportError as e:
|
|
129
|
-
msg = "langchain-groq is not installed. Please install it with `pip install langchain-groq`."
|
|
130
|
-
raise ImportError(msg) from e
|
|
131
|
-
|
|
132
|
-
return ChatGroq(
|
|
133
|
-
model=self.model_name,
|
|
134
|
-
max_tokens=self.max_tokens or None,
|
|
135
|
-
temperature=self.temperature,
|
|
136
|
-
base_url=self.base_url,
|
|
137
|
-
n=self.n or 1,
|
|
138
|
-
api_key=SecretStr(self.api_key).get_secret_value(),
|
|
139
|
-
streaming=self.stream,
|
|
140
|
-
)
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
|
|
3
|
-
from typing import TYPE_CHECKING, Any
|
|
4
|
-
|
|
5
|
-
from langflow.components._importing import import_mod
|
|
6
|
-
|
|
7
|
-
if TYPE_CHECKING:
|
|
8
|
-
from langflow.components.helpers.calculator_core import CalculatorComponent
|
|
9
|
-
from langflow.components.helpers.create_list import CreateListComponent
|
|
10
|
-
from langflow.components.helpers.current_date import CurrentDateComponent
|
|
11
|
-
from langflow.components.helpers.id_generator import IDGeneratorComponent
|
|
12
|
-
from langflow.components.helpers.memory import MemoryComponent
|
|
13
|
-
from langflow.components.helpers.output_parser import OutputParserComponent
|
|
14
|
-
from langflow.components.helpers.store_message import MessageStoreComponent
|
|
15
|
-
|
|
16
|
-
_dynamic_imports = {
|
|
17
|
-
"CalculatorComponent": "calculator_core",
|
|
18
|
-
"CreateListComponent": "create_list",
|
|
19
|
-
"CurrentDateComponent": "current_date",
|
|
20
|
-
"IDGeneratorComponent": "id_generator",
|
|
21
|
-
"MemoryComponent": "memory",
|
|
22
|
-
"OutputParserComponent": "output_parser",
|
|
23
|
-
"MessageStoreComponent": "store_message",
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
__all__ = [
|
|
27
|
-
"CalculatorComponent",
|
|
28
|
-
"CreateListComponent",
|
|
29
|
-
"CurrentDateComponent",
|
|
30
|
-
"IDGeneratorComponent",
|
|
31
|
-
"MemoryComponent",
|
|
32
|
-
"MessageStoreComponent",
|
|
33
|
-
"OutputParserComponent",
|
|
34
|
-
]
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
def __getattr__(attr_name: str) -> Any:
|
|
38
|
-
"""Lazily import helper components on attribute access."""
|
|
39
|
-
if attr_name not in _dynamic_imports:
|
|
40
|
-
msg = f"module '{__name__}' has no attribute '{attr_name}'"
|
|
41
|
-
raise AttributeError(msg)
|
|
42
|
-
try:
|
|
43
|
-
result = import_mod(attr_name, _dynamic_imports[attr_name], __spec__.parent)
|
|
44
|
-
except (ModuleNotFoundError, ImportError, AttributeError) as e:
|
|
45
|
-
msg = f"Could not import '{attr_name}' from '{__name__}': {e}"
|
|
46
|
-
raise AttributeError(msg) from e
|
|
47
|
-
globals()[attr_name] = result
|
|
48
|
-
return result
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
def __dir__() -> list[str]:
|
|
52
|
-
return list(__all__)
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
import ast
|
|
2
|
-
import operator
|
|
3
|
-
from collections.abc import Callable
|
|
4
|
-
|
|
5
|
-
from langflow.custom.custom_component.component import Component
|
|
6
|
-
from langflow.inputs.inputs import MessageTextInput
|
|
7
|
-
from langflow.io import Output
|
|
8
|
-
from langflow.schema.data import Data
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
class CalculatorComponent(Component):
|
|
12
|
-
display_name = "Calculator"
|
|
13
|
-
description = "Perform basic arithmetic operations on a given expression."
|
|
14
|
-
documentation: str = "https://docs.langflow.org/components-helpers#calculator"
|
|
15
|
-
icon = "calculator"
|
|
16
|
-
|
|
17
|
-
# Cache operators dictionary as a class variable
|
|
18
|
-
OPERATORS: dict[type[ast.operator], Callable] = {
|
|
19
|
-
ast.Add: operator.add,
|
|
20
|
-
ast.Sub: operator.sub,
|
|
21
|
-
ast.Mult: operator.mul,
|
|
22
|
-
ast.Div: operator.truediv,
|
|
23
|
-
ast.Pow: operator.pow,
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
inputs = [
|
|
27
|
-
MessageTextInput(
|
|
28
|
-
name="expression",
|
|
29
|
-
display_name="Expression",
|
|
30
|
-
info="The arithmetic expression to evaluate (e.g., '4*4*(33/22)+12-20').",
|
|
31
|
-
tool_mode=True,
|
|
32
|
-
),
|
|
33
|
-
]
|
|
34
|
-
|
|
35
|
-
outputs = [
|
|
36
|
-
Output(display_name="Data", name="result", type_=Data, method="evaluate_expression"),
|
|
37
|
-
]
|
|
38
|
-
|
|
39
|
-
def _eval_expr(self, node: ast.AST) -> float:
|
|
40
|
-
"""Evaluate an AST node recursively."""
|
|
41
|
-
if isinstance(node, ast.Constant):
|
|
42
|
-
if isinstance(node.value, int | float):
|
|
43
|
-
return float(node.value)
|
|
44
|
-
error_msg = f"Unsupported constant type: {type(node.value).__name__}"
|
|
45
|
-
raise TypeError(error_msg)
|
|
46
|
-
if isinstance(node, ast.Num): # For backwards compatibility
|
|
47
|
-
if isinstance(node.n, int | float):
|
|
48
|
-
return float(node.n)
|
|
49
|
-
error_msg = f"Unsupported number type: {type(node.n).__name__}"
|
|
50
|
-
raise TypeError(error_msg)
|
|
51
|
-
|
|
52
|
-
if isinstance(node, ast.BinOp):
|
|
53
|
-
op_type = type(node.op)
|
|
54
|
-
if op_type not in self.OPERATORS:
|
|
55
|
-
error_msg = f"Unsupported binary operator: {op_type.__name__}"
|
|
56
|
-
raise TypeError(error_msg)
|
|
57
|
-
|
|
58
|
-
left = self._eval_expr(node.left)
|
|
59
|
-
right = self._eval_expr(node.right)
|
|
60
|
-
return self.OPERATORS[op_type](left, right)
|
|
61
|
-
|
|
62
|
-
error_msg = f"Unsupported operation or expression type: {type(node).__name__}"
|
|
63
|
-
raise TypeError(error_msg)
|
|
64
|
-
|
|
65
|
-
def evaluate_expression(self) -> Data:
|
|
66
|
-
"""Evaluate the mathematical expression and return the result."""
|
|
67
|
-
try:
|
|
68
|
-
tree = ast.parse(self.expression, mode="eval")
|
|
69
|
-
result = self._eval_expr(tree.body)
|
|
70
|
-
|
|
71
|
-
formatted_result = f"{float(result):.6f}".rstrip("0").rstrip(".")
|
|
72
|
-
self.log(f"Calculation result: {formatted_result}")
|
|
73
|
-
|
|
74
|
-
self.status = formatted_result
|
|
75
|
-
return Data(data={"result": formatted_result})
|
|
76
|
-
|
|
77
|
-
except ZeroDivisionError:
|
|
78
|
-
error_message = "Error: Division by zero"
|
|
79
|
-
self.status = error_message
|
|
80
|
-
return Data(data={"error": error_message, "input": self.expression})
|
|
81
|
-
|
|
82
|
-
except (SyntaxError, TypeError, KeyError, ValueError, AttributeError, OverflowError) as e:
|
|
83
|
-
error_message = f"Invalid expression: {e!s}"
|
|
84
|
-
self.status = error_message
|
|
85
|
-
return Data(data={"error": error_message, "input": self.expression})
|
|
86
|
-
|
|
87
|
-
def build(self):
|
|
88
|
-
"""Return the main evaluation function."""
|
|
89
|
-
return self.evaluate_expression
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
from langflow.custom.custom_component.component import Component
|
|
2
|
-
from langflow.inputs.inputs import StrInput
|
|
3
|
-
from langflow.schema.data import Data
|
|
4
|
-
from langflow.schema.dataframe import DataFrame
|
|
5
|
-
from langflow.template.field.base import Output
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
class CreateListComponent(Component):
|
|
9
|
-
display_name = "Create List"
|
|
10
|
-
description = "Creates a list of texts."
|
|
11
|
-
icon = "list"
|
|
12
|
-
name = "CreateList"
|
|
13
|
-
legacy = True
|
|
14
|
-
|
|
15
|
-
inputs = [
|
|
16
|
-
StrInput(
|
|
17
|
-
name="texts",
|
|
18
|
-
display_name="Texts",
|
|
19
|
-
info="Enter one or more texts.",
|
|
20
|
-
is_list=True,
|
|
21
|
-
),
|
|
22
|
-
]
|
|
23
|
-
|
|
24
|
-
outputs = [
|
|
25
|
-
Output(display_name="Data List", name="list", method="create_list"),
|
|
26
|
-
Output(display_name="DataFrame", name="dataframe", method="as_dataframe"),
|
|
27
|
-
]
|
|
28
|
-
|
|
29
|
-
def create_list(self) -> list[Data]:
|
|
30
|
-
data = [Data(text=text) for text in self.texts]
|
|
31
|
-
self.status = data
|
|
32
|
-
return data
|
|
33
|
-
|
|
34
|
-
def as_dataframe(self) -> DataFrame:
|
|
35
|
-
"""Convert the list of Data objects into a DataFrame.
|
|
36
|
-
|
|
37
|
-
Returns:
|
|
38
|
-
DataFrame: A DataFrame containing the list data.
|
|
39
|
-
"""
|
|
40
|
-
return DataFrame(self.create_list())
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
from datetime import datetime
|
|
2
|
-
from zoneinfo import ZoneInfo, available_timezones
|
|
3
|
-
|
|
4
|
-
from langflow.custom.custom_component.component import Component
|
|
5
|
-
from langflow.io import DropdownInput, Output
|
|
6
|
-
from langflow.logging.logger import logger
|
|
7
|
-
from langflow.schema.message import Message
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
class CurrentDateComponent(Component):
|
|
11
|
-
display_name = "Current Date"
|
|
12
|
-
description = "Returns the current date and time in the selected timezone."
|
|
13
|
-
documentation: str = "https://docs.langflow.org/components-helpers#current-date"
|
|
14
|
-
icon = "clock"
|
|
15
|
-
name = "CurrentDate"
|
|
16
|
-
|
|
17
|
-
inputs = [
|
|
18
|
-
DropdownInput(
|
|
19
|
-
name="timezone",
|
|
20
|
-
display_name="Timezone",
|
|
21
|
-
options=list(available_timezones()),
|
|
22
|
-
value="UTC",
|
|
23
|
-
info="Select the timezone for the current date and time.",
|
|
24
|
-
tool_mode=True,
|
|
25
|
-
),
|
|
26
|
-
]
|
|
27
|
-
outputs = [
|
|
28
|
-
Output(display_name="Current Date", name="current_date", method="get_current_date"),
|
|
29
|
-
]
|
|
30
|
-
|
|
31
|
-
def get_current_date(self) -> Message:
|
|
32
|
-
try:
|
|
33
|
-
tz = ZoneInfo(self.timezone)
|
|
34
|
-
current_date = datetime.now(tz).strftime("%Y-%m-%d %H:%M:%S %Z")
|
|
35
|
-
result = f"Current date and time in {self.timezone}: {current_date}"
|
|
36
|
-
self.status = result
|
|
37
|
-
return Message(text=result)
|
|
38
|
-
except Exception as e: # noqa: BLE001
|
|
39
|
-
logger.debug("Error getting current date", exc_info=True)
|
|
40
|
-
error_message = f"Error: {e}"
|
|
41
|
-
self.status = error_message
|
|
42
|
-
return Message(text=error_message)
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import uuid
|
|
2
|
-
from typing import Any
|
|
3
|
-
|
|
4
|
-
from typing_extensions import override
|
|
5
|
-
|
|
6
|
-
from langflow.custom.custom_component.component import Component
|
|
7
|
-
from langflow.io import MessageTextInput, Output
|
|
8
|
-
from langflow.schema.dotdict import dotdict
|
|
9
|
-
from langflow.schema.message import Message
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
class IDGeneratorComponent(Component):
|
|
13
|
-
display_name = "ID Generator"
|
|
14
|
-
description = "Generates a unique ID."
|
|
15
|
-
icon = "fingerprint"
|
|
16
|
-
name = "IDGenerator"
|
|
17
|
-
legacy = True
|
|
18
|
-
|
|
19
|
-
inputs = [
|
|
20
|
-
MessageTextInput(
|
|
21
|
-
name="unique_id",
|
|
22
|
-
display_name="Value",
|
|
23
|
-
info="The generated unique ID.",
|
|
24
|
-
refresh_button=True,
|
|
25
|
-
tool_mode=True,
|
|
26
|
-
),
|
|
27
|
-
]
|
|
28
|
-
|
|
29
|
-
outputs = [
|
|
30
|
-
Output(display_name="ID", name="id", method="generate_id"),
|
|
31
|
-
]
|
|
32
|
-
|
|
33
|
-
@override
|
|
34
|
-
def update_build_config(self, build_config: dotdict, field_value: Any, field_name: str | None = None):
|
|
35
|
-
if field_name == "unique_id":
|
|
36
|
-
build_config[field_name]["value"] = str(uuid.uuid4())
|
|
37
|
-
return build_config
|
|
38
|
-
|
|
39
|
-
def generate_id(self) -> Message:
|
|
40
|
-
unique_id = self.unique_id or str(uuid.uuid4())
|
|
41
|
-
self.status = f"Generated ID: {unique_id}"
|
|
42
|
-
return Message(text=unique_id)
|
|
@@ -1,251 +0,0 @@
|
|
|
1
|
-
from typing import Any, cast
|
|
2
|
-
|
|
3
|
-
from langflow.custom.custom_component.component import Component
|
|
4
|
-
from langflow.helpers.data import data_to_text
|
|
5
|
-
from langflow.inputs.inputs import DropdownInput, HandleInput, IntInput, MessageTextInput, MultilineInput, TabInput
|
|
6
|
-
from langflow.memory import aget_messages, astore_message
|
|
7
|
-
from langflow.schema.data import Data
|
|
8
|
-
from langflow.schema.dataframe import DataFrame
|
|
9
|
-
from langflow.schema.dotdict import dotdict
|
|
10
|
-
from langflow.schema.message import Message
|
|
11
|
-
from langflow.template.field.base import Output
|
|
12
|
-
from langflow.utils.component_utils import set_current_fields, set_field_display
|
|
13
|
-
from langflow.utils.constants import MESSAGE_SENDER_AI, MESSAGE_SENDER_NAME_AI, MESSAGE_SENDER_USER
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
class MemoryComponent(Component):
|
|
17
|
-
display_name = "Message History"
|
|
18
|
-
description = "Stores or retrieves stored chat messages from Langflow tables or an external memory."
|
|
19
|
-
documentation: str = "https://docs.langflow.org/components-helpers#message-history"
|
|
20
|
-
icon = "message-square-more"
|
|
21
|
-
name = "Memory"
|
|
22
|
-
default_keys = ["mode", "memory"]
|
|
23
|
-
mode_config = {
|
|
24
|
-
"Store": ["message", "memory", "sender", "sender_name", "session_id"],
|
|
25
|
-
"Retrieve": ["n_messages", "order", "template", "memory"],
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
inputs = [
|
|
29
|
-
TabInput(
|
|
30
|
-
name="mode",
|
|
31
|
-
display_name="Mode",
|
|
32
|
-
options=["Retrieve", "Store"],
|
|
33
|
-
value="Retrieve",
|
|
34
|
-
info="Operation mode: Store messages or Retrieve messages.",
|
|
35
|
-
real_time_refresh=True,
|
|
36
|
-
),
|
|
37
|
-
MessageTextInput(
|
|
38
|
-
name="message",
|
|
39
|
-
display_name="Message",
|
|
40
|
-
info="The chat message to be stored.",
|
|
41
|
-
tool_mode=True,
|
|
42
|
-
dynamic=True,
|
|
43
|
-
show=False,
|
|
44
|
-
),
|
|
45
|
-
HandleInput(
|
|
46
|
-
name="memory",
|
|
47
|
-
display_name="External Memory",
|
|
48
|
-
input_types=["Memory"],
|
|
49
|
-
info="Retrieve messages from an external memory. If empty, it will use the Langflow tables.",
|
|
50
|
-
advanced=True,
|
|
51
|
-
),
|
|
52
|
-
DropdownInput(
|
|
53
|
-
name="sender_type",
|
|
54
|
-
display_name="Sender Type",
|
|
55
|
-
options=[MESSAGE_SENDER_AI, MESSAGE_SENDER_USER, "Machine and User"],
|
|
56
|
-
value="Machine and User",
|
|
57
|
-
info="Filter by sender type.",
|
|
58
|
-
advanced=True,
|
|
59
|
-
),
|
|
60
|
-
MessageTextInput(
|
|
61
|
-
name="sender",
|
|
62
|
-
display_name="Sender",
|
|
63
|
-
info="The sender of the message. Might be Machine or User. "
|
|
64
|
-
"If empty, the current sender parameter will be used.",
|
|
65
|
-
advanced=True,
|
|
66
|
-
),
|
|
67
|
-
MessageTextInput(
|
|
68
|
-
name="sender_name",
|
|
69
|
-
display_name="Sender Name",
|
|
70
|
-
info="Filter by sender name.",
|
|
71
|
-
advanced=True,
|
|
72
|
-
show=False,
|
|
73
|
-
),
|
|
74
|
-
IntInput(
|
|
75
|
-
name="n_messages",
|
|
76
|
-
display_name="Number of Messages",
|
|
77
|
-
value=100,
|
|
78
|
-
info="Number of messages to retrieve.",
|
|
79
|
-
advanced=True,
|
|
80
|
-
show=True,
|
|
81
|
-
),
|
|
82
|
-
MessageTextInput(
|
|
83
|
-
name="session_id",
|
|
84
|
-
display_name="Session ID",
|
|
85
|
-
info="The session ID of the chat. If empty, the current session ID parameter will be used.",
|
|
86
|
-
value="",
|
|
87
|
-
advanced=True,
|
|
88
|
-
),
|
|
89
|
-
DropdownInput(
|
|
90
|
-
name="order",
|
|
91
|
-
display_name="Order",
|
|
92
|
-
options=["Ascending", "Descending"],
|
|
93
|
-
value="Ascending",
|
|
94
|
-
info="Order of the messages.",
|
|
95
|
-
advanced=True,
|
|
96
|
-
tool_mode=True,
|
|
97
|
-
required=True,
|
|
98
|
-
),
|
|
99
|
-
MultilineInput(
|
|
100
|
-
name="template",
|
|
101
|
-
display_name="Template",
|
|
102
|
-
info="The template to use for formatting the data. "
|
|
103
|
-
"It can contain the keys {text}, {sender} or any other key in the message data.",
|
|
104
|
-
value="{sender_name}: {text}",
|
|
105
|
-
advanced=True,
|
|
106
|
-
show=False,
|
|
107
|
-
),
|
|
108
|
-
]
|
|
109
|
-
|
|
110
|
-
outputs = [
|
|
111
|
-
Output(display_name="Message", name="messages_text", method="retrieve_messages_as_text", dynamic=True),
|
|
112
|
-
Output(display_name="Dataframe", name="dataframe", method="retrieve_messages_dataframe", dynamic=True),
|
|
113
|
-
]
|
|
114
|
-
|
|
115
|
-
def update_outputs(self, frontend_node: dict, field_name: str, field_value: Any) -> dict:
|
|
116
|
-
"""Dynamically show only the relevant output based on the selected output type."""
|
|
117
|
-
if field_name == "mode":
|
|
118
|
-
# Start with empty outputs
|
|
119
|
-
frontend_node["outputs"] = []
|
|
120
|
-
if field_value == "Store":
|
|
121
|
-
frontend_node["outputs"] = [
|
|
122
|
-
Output(
|
|
123
|
-
display_name="Stored Messages",
|
|
124
|
-
name="stored_messages",
|
|
125
|
-
method="store_message",
|
|
126
|
-
hidden=True,
|
|
127
|
-
dynamic=True,
|
|
128
|
-
)
|
|
129
|
-
]
|
|
130
|
-
if field_value == "Retrieve":
|
|
131
|
-
frontend_node["outputs"] = [
|
|
132
|
-
Output(
|
|
133
|
-
display_name="Messages", name="messages_text", method="retrieve_messages_as_text", dynamic=True
|
|
134
|
-
),
|
|
135
|
-
Output(
|
|
136
|
-
display_name="Dataframe", name="dataframe", method="retrieve_messages_dataframe", dynamic=True
|
|
137
|
-
),
|
|
138
|
-
]
|
|
139
|
-
return frontend_node
|
|
140
|
-
|
|
141
|
-
async def store_message(self) -> Message:
|
|
142
|
-
message = Message(text=self.message) if isinstance(self.message, str) else self.message
|
|
143
|
-
|
|
144
|
-
message.session_id = self.session_id or message.session_id
|
|
145
|
-
message.sender = self.sender or message.sender or MESSAGE_SENDER_AI
|
|
146
|
-
message.sender_name = self.sender_name or message.sender_name or MESSAGE_SENDER_NAME_AI
|
|
147
|
-
|
|
148
|
-
stored_messages: list[Message] = []
|
|
149
|
-
|
|
150
|
-
if self.memory:
|
|
151
|
-
self.memory.session_id = message.session_id
|
|
152
|
-
lc_message = message.to_lc_message()
|
|
153
|
-
await self.memory.aadd_messages([lc_message])
|
|
154
|
-
|
|
155
|
-
stored_messages = await self.memory.aget_messages() or []
|
|
156
|
-
|
|
157
|
-
stored_messages = [Message.from_lc_message(m) for m in stored_messages] if stored_messages else []
|
|
158
|
-
|
|
159
|
-
if message.sender:
|
|
160
|
-
stored_messages = [m for m in stored_messages if m.sender == message.sender]
|
|
161
|
-
else:
|
|
162
|
-
await astore_message(message, flow_id=self.graph.flow_id)
|
|
163
|
-
stored_messages = (
|
|
164
|
-
await aget_messages(
|
|
165
|
-
session_id=message.session_id, sender_name=message.sender_name, sender=message.sender
|
|
166
|
-
)
|
|
167
|
-
or []
|
|
168
|
-
)
|
|
169
|
-
|
|
170
|
-
if not stored_messages:
|
|
171
|
-
msg = "No messages were stored. Please ensure that the session ID and sender are properly set."
|
|
172
|
-
raise ValueError(msg)
|
|
173
|
-
|
|
174
|
-
stored_message = stored_messages[0]
|
|
175
|
-
self.status = stored_message
|
|
176
|
-
return stored_message
|
|
177
|
-
|
|
178
|
-
async def retrieve_messages(self) -> Data:
|
|
179
|
-
sender_type = self.sender_type
|
|
180
|
-
sender_name = self.sender_name
|
|
181
|
-
session_id = self.session_id
|
|
182
|
-
n_messages = self.n_messages
|
|
183
|
-
order = "DESC" if self.order == "Descending" else "ASC"
|
|
184
|
-
|
|
185
|
-
if sender_type == "Machine and User":
|
|
186
|
-
sender_type = None
|
|
187
|
-
|
|
188
|
-
if self.memory and not hasattr(self.memory, "aget_messages"):
|
|
189
|
-
memory_name = type(self.memory).__name__
|
|
190
|
-
err_msg = f"External Memory object ({memory_name}) must have 'aget_messages' method."
|
|
191
|
-
raise AttributeError(err_msg)
|
|
192
|
-
# Check if n_messages is None or 0
|
|
193
|
-
if n_messages == 0:
|
|
194
|
-
stored = []
|
|
195
|
-
elif self.memory:
|
|
196
|
-
# override session_id
|
|
197
|
-
self.memory.session_id = session_id
|
|
198
|
-
|
|
199
|
-
stored = await self.memory.aget_messages()
|
|
200
|
-
# langchain memories are supposed to return messages in ascending order
|
|
201
|
-
|
|
202
|
-
if order == "DESC":
|
|
203
|
-
stored = stored[::-1]
|
|
204
|
-
if n_messages:
|
|
205
|
-
stored = stored[-n_messages:] if order == "ASC" else stored[:n_messages]
|
|
206
|
-
stored = [Message.from_lc_message(m) for m in stored]
|
|
207
|
-
if sender_type:
|
|
208
|
-
expected_type = MESSAGE_SENDER_AI if sender_type == MESSAGE_SENDER_AI else MESSAGE_SENDER_USER
|
|
209
|
-
stored = [m for m in stored if m.type == expected_type]
|
|
210
|
-
else:
|
|
211
|
-
# For internal memory, we always fetch the last N messages by ordering by DESC
|
|
212
|
-
stored = await aget_messages(
|
|
213
|
-
sender=sender_type,
|
|
214
|
-
sender_name=sender_name,
|
|
215
|
-
session_id=session_id,
|
|
216
|
-
limit=10000,
|
|
217
|
-
order=order,
|
|
218
|
-
)
|
|
219
|
-
if n_messages:
|
|
220
|
-
stored = stored[-n_messages:] if order == "ASC" else stored[:n_messages]
|
|
221
|
-
|
|
222
|
-
# self.status = stored
|
|
223
|
-
return cast("Data", stored)
|
|
224
|
-
|
|
225
|
-
async def retrieve_messages_as_text(self) -> Message:
|
|
226
|
-
stored_text = data_to_text(self.template, await self.retrieve_messages())
|
|
227
|
-
# self.status = stored_text
|
|
228
|
-
return Message(text=stored_text)
|
|
229
|
-
|
|
230
|
-
async def retrieve_messages_dataframe(self) -> DataFrame:
|
|
231
|
-
"""Convert the retrieved messages into a DataFrame.
|
|
232
|
-
|
|
233
|
-
Returns:
|
|
234
|
-
DataFrame: A DataFrame containing the message data.
|
|
235
|
-
"""
|
|
236
|
-
messages = await self.retrieve_messages()
|
|
237
|
-
return DataFrame(messages)
|
|
238
|
-
|
|
239
|
-
def update_build_config(
|
|
240
|
-
self,
|
|
241
|
-
build_config: dotdict,
|
|
242
|
-
field_value: Any, # noqa: ARG002
|
|
243
|
-
field_name: str | None = None, # noqa: ARG002
|
|
244
|
-
) -> dotdict:
|
|
245
|
-
return set_current_fields(
|
|
246
|
-
build_config=build_config,
|
|
247
|
-
action_fields=self.mode_config,
|
|
248
|
-
selected_action=build_config["mode"]["value"],
|
|
249
|
-
default_fields=self.default_keys,
|
|
250
|
-
func=set_field_display,
|
|
251
|
-
)
|