langflow-base-nightly 0.5.1.dev2__py3-none-any.whl → 0.5.1.dev4__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- langflow/__init__.py +215 -0
- langflow/__main__.py +16 -2
- langflow/alembic/versions/006b3990db50_add_unique_constraints.py +4 -7
- langflow/alembic/versions/012fb73ac359_add_folder_table.py +4 -5
- langflow/alembic/versions/0ae3a2674f32_update_the_columns_that_need_to_change_.py +11 -20
- langflow/alembic/versions/0b8757876a7c_.py +4 -7
- langflow/alembic/versions/0d60fcbd4e8e_create_vertex_builds_table.py +4 -6
- langflow/alembic/versions/1a110b568907_replace_credential_table_with_variable.py +4 -5
- langflow/alembic/versions/1b8b740a6fa3_remove_fk_constraint_in_message_.py +32 -27
- langflow/alembic/versions/1c79524817ed_add_unique_constraints_per_user_in_.py +4 -5
- langflow/alembic/versions/1d90f8a0efe1_update_description_columns_type.py +4 -5
- langflow/alembic/versions/1eab2c3eb45e_event_error.py +14 -15
- langflow/alembic/versions/1ef9c4f3765d_.py +5 -10
- langflow/alembic/versions/1f4d6df60295_add_default_fields_column.py +4 -5
- langflow/alembic/versions/260dbcc8b680_adds_tables.py +4 -5
- langflow/alembic/versions/29fe8f1f806b_add_missing_index.py +4 -5
- langflow/alembic/versions/2ac71eb9c3ae_adds_credential_table.py +4 -7
- langflow/alembic/versions/3bb0ddf32dfb_add_unique_constraints_per_user_in_flow_.py +4 -5
- langflow/alembic/versions/4e5980a44eaa_fix_date_times_again.py +1 -2
- langflow/alembic/versions/58b28437a398_modify_nullable.py +1 -2
- langflow/alembic/versions/5ace73a7f223_new_remove_table_upgrade_op.py +6 -12
- langflow/alembic/versions/631faacf5da2_add_webhook_columns.py +4 -5
- langflow/alembic/versions/63b9c451fd30_add_icon_and_icon_bg_color_to_flow.py +4 -5
- langflow/alembic/versions/66f72f04a1de_add_mcp_support_with_project_settings_.py +21 -23
- langflow/alembic/versions/67cc006d50bf_add_profile_image_column.py +4 -5
- langflow/alembic/versions/6e7b581b5648_fix_nullable.py +4 -5
- langflow/alembic/versions/7843803a87b5_store_updates.py +4 -6
- langflow/alembic/versions/79e675cb6752_change_datetime_type.py +1 -2
- langflow/alembic/versions/7d2162acc8b2_adds_updated_at_and_folder_cols.py +4 -10
- langflow/alembic/versions/90be8e2ed91e_create_transactions_table.py +4 -6
- langflow/alembic/versions/93e2705fa8d6_add_column_save_path_to_flow.py +7 -9
- langflow/alembic/versions/a72f5cf9c2f9_add_endpoint_name_col.py +4 -5
- langflow/alembic/versions/b2fa308044b5_add_unique_constraints.py +1 -2
- langflow/alembic/versions/bc2f01c40e4a_new_fixes.py +4 -5
- langflow/alembic/versions/c153816fd85f_set_name_and_value_to_not_nullable.py +4 -5
- langflow/alembic/versions/d066bfd22890_add_message_table.py +4 -4
- langflow/alembic/versions/d2d475a1f7c0_add_tags_column_to_flow.py +12 -13
- langflow/alembic/versions/d3dbf656a499_add_gradient_column_in_flow.py +12 -12
- langflow/alembic/versions/d9a6ea21edcd_rename_default_folder.py +7 -10
- langflow/alembic/versions/dd9e0804ebd1_add_v2_file_table.py +8 -7
- langflow/alembic/versions/e3162c1804e6_add_persistent_locked_state.py +10 -10
- langflow/alembic/versions/e3bc869fa272_fix_nullable.py +4 -5
- langflow/alembic/versions/e56d87f8994a_add_optins_column_to_user.py +13 -14
- langflow/alembic/versions/e5a65ecff2cd_nullable_in_vertex_build.py +4 -5
- langflow/alembic/versions/eb5866d51fd2_change_columns_to_be_nullable.py +4 -5
- langflow/alembic/versions/eb5e72293a8e_add_error_and_edit_flags_to_message.py +4 -5
- langflow/alembic/versions/f3b2d1f1002d_add_column_access_type_to_flow.py +19 -15
- langflow/alembic/versions/f5ee9749d1a6_user_id_can_be_null_in_flow.py +4 -6
- langflow/alembic/versions/fd531f8868b1_fix_credential_table.py +5 -8
- langflow/api/build.py +5 -4
- langflow/api/health_check_router.py +1 -1
- langflow/api/limited_background_tasks.py +1 -1
- langflow/api/log_router.py +1 -2
- langflow/api/utils.py +2 -2
- langflow/api/v1/base.py +1 -2
- langflow/api/v1/callback.py +4 -9
- langflow/api/v1/chat.py +6 -7
- langflow/api/v1/endpoints.py +15 -15
- langflow/api/v1/files.py +1 -1
- langflow/api/v1/flows.py +1 -1
- langflow/api/v1/knowledge_bases.py +1 -1
- langflow/api/v1/mcp.py +1 -1
- langflow/api/v1/mcp_projects.py +14 -5
- langflow/api/v1/mcp_utils.py +3 -3
- langflow/api/v1/openai_responses.py +4 -4
- langflow/api/v1/schemas.py +3 -38
- langflow/api/v1/starter_projects.py +61 -3
- langflow/api/v1/store.py +1 -1
- langflow/api/v1/validate.py +3 -3
- langflow/api/v1/voice_mode.py +2 -2
- langflow/api/v2/files.py +1 -1
- langflow/api/v2/mcp.py +2 -2
- langflow/base/__init__.py +11 -0
- langflow/base/agents/__init__.py +3 -0
- langflow/base/data/__init__.py +2 -4
- langflow/base/data/utils.py +2 -197
- langflow/base/embeddings/__init__.py +3 -0
- langflow/base/io/__init__.py +7 -0
- langflow/base/io/chat.py +5 -18
- langflow/base/io/text.py +2 -21
- langflow/base/knowledge_bases/__init__.py +3 -0
- langflow/base/memory/__init__.py +3 -0
- langflow/base/models/__init__.py +2 -2
- langflow/base/models/openai_constants.py +6 -120
- langflow/base/prompts/__init__.py +3 -0
- langflow/base/prompts/api_utils.py +2 -223
- langflow/base/textsplitters/__init__.py +3 -0
- langflow/base/tools/__init__.py +3 -0
- langflow/base/vectorstores/__init__.py +3 -0
- langflow/components/__init__.py +7 -259
- langflow/components/agents.py +6 -0
- langflow/components/anthropic.py +6 -0
- langflow/components/data.py +6 -0
- langflow/components/helpers.py +6 -0
- langflow/components/knowledge_bases/ingestion.py +13 -14
- langflow/components/knowledge_bases/retrieval.py +8 -7
- langflow/components/openai.py +6 -0
- langflow/components/processing/__init__.py +1 -117
- langflow/components/processing/converter.py +3 -149
- langflow/custom/__init__.py +26 -3
- langflow/custom/custom_component/__init__.py +4 -0
- langflow/custom/custom_component/component.py +20 -1738
- langflow/custom/custom_component/component_with_cache.py +1 -8
- langflow/custom/custom_component/custom_component.py +1 -552
- langflow/custom/utils.py +1 -872
- langflow/custom/validate.py +1 -0
- langflow/events/event_manager.py +18 -108
- langflow/field_typing/__init__.py +6 -6
- langflow/field_typing/constants.py +87 -122
- langflow/field_typing/range_spec.py +2 -32
- langflow/frontend/assets/{SlackIcon-Cc7Qnzki.js → SlackIcon-v88osOTA.js} +1 -1
- langflow/frontend/assets/{Wikipedia-7ulMZY46.js → Wikipedia-DD_S2k00.js} +1 -1
- langflow/frontend/assets/{Wolfram-By9PGsHS.js → Wolfram-EO2C5noN.js} +1 -1
- langflow/frontend/assets/{index-DVLIDc2_.js → index-1Gv1mfvk.js} +1 -1
- langflow/frontend/assets/{index-MVW4HTEk.js → index-7v-bzlzf.js} +1 -1
- langflow/frontend/assets/{index-CUzlcce2.js → index-9CbMazbV.js} +1 -1
- langflow/frontend/assets/{index-CU16NJD7.js → index-B8ZHP8g2.js} +1 -1
- langflow/frontend/assets/{index-v8eXbWlM.js → index-B8y2e6vN.js} +1 -1
- langflow/frontend/assets/{index-BX_asvRB.js → index-BBRUGsyr.js} +1 -1
- langflow/frontend/assets/{index-9FL5xjkL.js → index-BGwqQwlh.js} +1 -1
- langflow/frontend/assets/{index-BAn-AzCS.js → index-BIq-k-FG.js} +1 -1
- langflow/frontend/assets/{index-D5c2nNvp.js → index-BSN73YP8.js} +1 -1
- langflow/frontend/assets/{index-DMCerPJM.js → index-BU8R8jRn.js} +1 -1
- langflow/frontend/assets/{index-CvSoff-8.js → index-BV6yx8ey.js} +1 -1
- langflow/frontend/assets/{index-BISPW-f6.js → index-BYIsg-Eh.js} +1 -1
- langflow/frontend/assets/{index-GzOGB_fo.js → index-B_ksDBSQ.js} +1 -1
- langflow/frontend/assets/{index-BIqEYjNT.js → index-Ba1UOZ9A.js} +1 -1
- langflow/frontend/assets/{index-ByxGmq5p.js → index-Ba9tKRQg.js} +1 -1
- langflow/frontend/assets/{index-BLEWsL1U.js → index-Bbfaw8ca.js} +1 -1
- langflow/frontend/assets/{index-C_MhBX6R.js → index-BbuGqvAx.js} +1 -1
- langflow/frontend/assets/{index-RH_I78z_.js → index-BeoXu1YX.js} +1 -1
- langflow/frontend/assets/{index-cYFKmtmg.js → index-BfjZmOnH.js} +1 -1
- langflow/frontend/assets/{index-Bm9i8F4W.js → index-Bjzy_HZB.js} +1 -1
- langflow/frontend/assets/{index-_szO7sta.js → index-BofEkpYB.js} +1 -1
- langflow/frontend/assets/{index-DP1oE6QB.js → index-Bp7Mty2H.js} +1 -1
- langflow/frontend/assets/{index-CeswGUz3.js → index-BqX1H6yK.js} +1 -1
- langflow/frontend/assets/{index-C8pI0lzi.js → index-BqtBAJAN.js} +1 -1
- langflow/frontend/assets/{index-BusCv3bR.js → index-Bsfraj7A.js} +1 -1
- langflow/frontend/assets/{index-BWnKMRFJ.js → index-BtFl7fER.js} +1 -1
- langflow/frontend/assets/{index-DnlVWWU8.js → index-BvX993Sv.js} +1 -1
- langflow/frontend/assets/{index-C676MS3I.js → index-BvgQ2vzM.js} +1 -1
- langflow/frontend/assets/{index-DJ6HD14g.js → index-BwY98u8n.js} +1 -1
- langflow/frontend/assets/{index-C51yNvIL.js → index-C-RIJAOS.js} +1 -1
- langflow/frontend/assets/{index-DiblXWmk.js → index-C1K6A38P.js} +1 -1
- langflow/frontend/assets/{index-Co__gFM1.js → index-C3Vwhx0t.js} +1 -1
- langflow/frontend/assets/{index-Coi86oqP.js → index-C5XUG_gr.js} +1 -1
- langflow/frontend/assets/{index-jwzN3Jd_.js → index-C6ouLG9o.js} +1 -1
- langflow/frontend/assets/{index-CQQ-4XMS.js → index-C7ZJ_Z6f.js} +1 -1
- langflow/frontend/assets/{index-Bl7RpmrB.js → index-CCOGIwGY.js} +1 -1
- langflow/frontend/assets/{index-CVkIdc6y.js → index-CCcye2rt.js} +1 -1
- langflow/frontend/assets/{index-bMhyLtgS.js → index-CFR4yJQB.js} +1 -1
- langflow/frontend/assets/{index-aAgSKWb3.js → index-CIGmPP0H.js} +1 -1
- langflow/frontend/assets/{index-BGt6jQ4x.js → index-CJmMEa6d.js} +1 -1
- langflow/frontend/assets/{index-DX7JcSMz.js → index-CJxD7lyU.js} +1 -1
- langflow/frontend/assets/{index-BZ-A4K98.js → index-CL_vu6ut.js} +1 -1
- langflow/frontend/assets/{index-BMpKFGhI.js → index-COf3UnBn.js} +1 -1
- langflow/frontend/assets/{index-xN8ogFdo.js → index-CV9650h_.js} +1 -1
- langflow/frontend/assets/{index-OsUvqIUr.js → index-CVDzych0.js} +1 -1
- langflow/frontend/assets/{index-BH7AyHxp.js → index-CWIHsC4D.js} +1 -1
- langflow/frontend/assets/{index-mjwtJmkP.js → index-CXCnFZ0L.js} +1 -1
- langflow/frontend/assets/{index-3jlSQi5Y.js → index-Ca_Pw_Dn.js} +1 -1
- langflow/frontend/assets/{index-D-SnFlhU.js → index-Cbb3bX9e.js} +1 -1
- langflow/frontend/assets/{index--e0oQqZh.js → index-CcJtOz-Z.js} +1 -1
- langflow/frontend/assets/{index-S-sc0Cm9.js → index-CfTbTHEv.js} +1 -1
- langflow/frontend/assets/{index-Deu8rlaZ.js → index-ChoxDAgX.js} +1 -1
- langflow/frontend/assets/{index-lnF9Eqr2.js → index-Cn4gw8aE.js} +1 -1
- langflow/frontend/assets/{index-C_NwzK6j.js → index-CnpLg4zX.js} +1 -1
- langflow/frontend/assets/{index-DznH7Jbq.js → index-Cpao2omG.js} +1 -1
- langflow/frontend/assets/{index-DpWrk8mA.js → index-CqoxM01j.js} +1 -1
- langflow/frontend/assets/{index-Bw-TIIC6.js → index-CrHf2Ic1.js} +1 -1
- langflow/frontend/assets/{index-DmYLDQag.js → index-CrV0uIjp.js} +1 -1
- langflow/frontend/assets/{index-Dp7ZQyL3.js → index-CssADaak.js} +1 -1
- langflow/frontend/assets/{index-CNh0rwur.js → index-CtJdNLy9.js} +1 -1
- langflow/frontend/assets/{index-Ca1b7Iag.js → index-CyeWD2dh.js} +1 -1
- langflow/frontend/assets/{index-DcApTyZ7.js → index-D1xzD7uc.js} +1 -1
- langflow/frontend/assets/{index-B3GvPjhD.js → index-D6MuXC4L.js} +1 -1
- langflow/frontend/assets/{index-Cw0UComa.js → index-D8w9zvIF.js} +1 -1
- langflow/frontend/assets/{index-C-2MRYoJ.js → index-D98Gn0A6.js} +1 -1
- langflow/frontend/assets/{index-aWnZIwHd.js → index-DBhjpWkf.js} +1 -1
- langflow/frontend/assets/{index-nw3WF9lY.js → index-DCCRJzcY.js} +1 -1
- langflow/frontend/assets/{index-RjeC0kaX.js → index-DCTRSkEW.js} +1 -1
- langflow/frontend/assets/{index-B_kBTgxV.js → index-DCUfitVj.js} +1 -1
- langflow/frontend/assets/{index-ChsGhZn3.js → index-DDdz-Xcl.js} +1 -1
- langflow/frontend/assets/{index-7yAHPRxv.js → index-DGdMwZjG.js} +1 -1
- langflow/frontend/assets/{index-DjQElpEg.js → index-DGtl2vMw.js} +1 -1
- langflow/frontend/assets/{index-BCXhKCOK.js → index-DHVdkrni.js} +1 -1
- langflow/frontend/assets/{index-S8uJXTOq.js → index-DJBWwjgl.js} +1 -1
- langflow/frontend/assets/{index-qiVTWUuf.js → index-DMAkJ_qX.js} +1 -1
- langflow/frontend/assets/{index-D-WStJI6.js → index-DMEvEQI5.js} +1 -1
- langflow/frontend/assets/{index-BhqVw9WQ.js → index-DNGRoOsp.js} +1 -1
- langflow/frontend/assets/{index-Cu7vC48Y.js → index-DNT_TUTa.js} +1 -1
- langflow/frontend/assets/{index-Bhcv5M0n.js → index-DQKOH_9K.js} +1 -1
- langflow/frontend/assets/{index-CLcaktde.js → index-DQhqqtqQ.js} +1 -1
- langflow/frontend/assets/{index-DZVgPCio.js → index-DRM7KKnG.js} +1 -1
- langflow/frontend/assets/{index-uybez8MR.js → index-DSCtl3a5.js} +1 -1
- langflow/frontend/assets/{index-CJ5A6STv.js → index-DSLNlm0Z.js} +1 -1
- langflow/frontend/assets/{index-Drg8me2a.js → index-DT-PspE-.js} +1 -1
- langflow/frontend/assets/{index-DsEZjOcp.js → index-DTpbH-p8.js} +1 -1
- langflow/frontend/assets/{index-DrXXKzpD.js → index-DWV6MsIq.js} +1 -1
- langflow/frontend/assets/{index-4JIEdyIM.js → index-DWeL4US_.js} +1 -1
- langflow/frontend/assets/{index-BlDsBQ_1.js → index-DYKZHhpU.js} +1 -1
- langflow/frontend/assets/{index-DFY8YFbC.js → index-DZyQHiMR.js} +1 -1
- langflow/frontend/assets/{index-CKPZpkQk.js → index-Dc6qVuSa.js} +1 -1
- langflow/frontend/assets/{index-yyAaYjLR.js → index-DkYuicnC.js} +1 -1
- langflow/frontend/assets/{index-DmVt5Jlx.js → index-Dlj_2mMs.js} +1 -1
- langflow/frontend/assets/{index-BvRIG6P5.js → index-DmGJUrEp.js} +1 -1
- langflow/frontend/assets/{index-BWFIrwW1.js → index-Dn6hpCAZ.js} +1 -1
- langflow/frontend/assets/{index-Cb5G9Ifd.js → index-DrJU8Fgb.js} +1 -1
- langflow/frontend/assets/{index-COoTCxvs.js → index-DsWfdCzp.js} +1 -1
- langflow/frontend/assets/{index-ZjeocHyu.js → index-DvCPWs2_.js} +1 -1
- langflow/frontend/assets/{index-B5LHnuQR.js → index-DvPVq7OP.js} +1 -1
- langflow/frontend/assets/{index-BnCnYnao.js → index-Dw71ufW4.js} +1 -1
- langflow/frontend/assets/{index-AALDfCyt.js → index-DxkJactf.js} +1 -1
- langflow/frontend/assets/{index-k9jP5chN.js → index-Dz2GTphU.js} +1 -1
- langflow/frontend/assets/{index-BdjfHsrf.js → index-Fvd524_c.js} +1 -1
- langflow/frontend/assets/{index-AKVkmT4S.js → index-GAQ0Mk2M.js} +1 -1
- langflow/frontend/assets/{index-BZSa2qz7.js → index-Hm5-4ItD.js} +1 -1
- langflow/frontend/assets/{index-DbfS_UH-.js → index-IT67FzsK.js} +1 -1
- langflow/frontend/assets/{index-BLXN681C.js → index-ItYiij1i.js} +1 -1
- langflow/frontend/assets/{index-CiklyQU3.js → index-IuR_FEdB.js} +1 -1
- langflow/frontend/assets/{index-xV6ystWy.js → index-Jj60FQkv.js} +1 -1
- langflow/frontend/assets/{index-C_157Mb-.js → index-LlvshmVz.js} +1 -1
- langflow/frontend/assets/{index-CDphUsa3.js → index-LwKh3I_W.js} +1 -1
- langflow/frontend/assets/{index-BrDz-PxE.js → index-N-xxmKKH.js} +1 -1
- langflow/frontend/assets/{index-BsdLyYMY.js → index-RwpaHIAH.js} +1 -1
- langflow/frontend/assets/{index-Cu2Xr6_j.js → index-TVvsp-xh.js} +1 -1
- langflow/frontend/assets/{index-CPiM2oyj.js → index-TdE2u9zP.js} +1 -1
- langflow/frontend/assets/{index-DOj_QWqG.js → index-_x-NkYeW.js} +1 -1
- langflow/frontend/assets/{index-YJsAl7vm.js → index-a-YclEbW.js} +1 -1
- langflow/frontend/assets/{index-5-CSw2-z.js → index-e9MFKUCo.js} +1 -1
- langflow/frontend/assets/{index-BSwBVwyF.js → index-krPr8f2F.js} +1 -1
- langflow/frontend/assets/{index-Df6psZEj.js → index-kveiUWuL.js} +1 -1
- langflow/frontend/assets/{index-CF4_Og1m.js → index-lE3oSjJi.js} +1 -1
- langflow/frontend/assets/{index-C6nzdeYx.js → index-lM3UYg7F.js} +1 -1
- langflow/frontend/assets/{index-C-wnbBBY.js → index-nsRk3qgA.js} +1 -1
- langflow/frontend/assets/{index-D234yKNJ.js → index-pBO0SZLD.js} +4 -4
- langflow/frontend/assets/{index-BMvp94tO.js → index-pbZHsbuE.js} +1 -1
- langflow/frontend/assets/{index-hg2y9OAt.js → index-sfX3aWyp.js} +1 -1
- langflow/frontend/assets/{index-DTCrijba.js → index-xQz-VJ0-.js} +1 -1
- langflow/frontend/assets/{index-SB4rw8D5.js → index-yfcsaHS6.js} +1 -1
- langflow/frontend/assets/{index-C-bjC2sz.js → index-zcGjo9fx.js} +1 -1
- langflow/frontend/assets/lazyIconImports-BjqDmNYG.js +2 -0
- langflow/frontend/assets/{use-post-add-user-JUeLDErC.js → use-post-add-user-w3vpKSOB.js} +1 -1
- langflow/frontend/index.html +1 -1
- langflow/graph/__init__.py +4 -4
- langflow/helpers/data.py +2 -2
- langflow/helpers/flow.py +9 -7
- langflow/helpers/user.py +2 -2
- langflow/initial_setup/setup.py +9 -9
- langflow/initial_setup/starter_projects/Basic Prompt Chaining.json +119 -41
- langflow/initial_setup/starter_projects/Basic Prompting.json +45 -19
- langflow/initial_setup/starter_projects/Blog Writer.json +53 -21
- langflow/initial_setup/starter_projects/Custom Component Generator.json +121 -97
- langflow/initial_setup/starter_projects/Document Q&A.json +46 -18
- langflow/initial_setup/starter_projects/Financial Report Parser.json +49 -17
- langflow/initial_setup/starter_projects/Hybrid Search RAG.json +89 -50
- langflow/initial_setup/starter_projects/Image Sentiment Analysis.json +86 -22
- langflow/initial_setup/starter_projects/Instagram Copywriter.json +210 -57
- langflow/initial_setup/starter_projects/Invoice Summarizer.json +132 -35
- langflow/initial_setup/starter_projects/Knowledge Ingestion.json +8 -8
- langflow/initial_setup/starter_projects/Knowledge Retrieval.json +8 -8
- langflow/initial_setup/starter_projects/Market Research.json +174 -48
- langflow/initial_setup/starter_projects/Meeting Summary.json +102 -38
- langflow/initial_setup/starter_projects/Memory Chatbot.json +49 -21
- langflow/initial_setup/starter_projects/News Aggregator.json +140 -39
- langflow/initial_setup/starter_projects/Nvidia Remix.json +153 -181
- langflow/initial_setup/starter_projects/Pok/303/251dex Agent.json" +132 -35
- langflow/initial_setup/starter_projects/Portfolio Website Code Generator.json +106 -43
- langflow/initial_setup/starter_projects/Price Deal Finder.json +136 -39
- langflow/initial_setup/starter_projects/Research Agent.json +206 -53
- langflow/initial_setup/starter_projects/Research Translation Loop.json +66 -34
- langflow/initial_setup/starter_projects/SEO Keyword Generator.json +41 -15
- langflow/initial_setup/starter_projects/SaaS Pricing.json +128 -31
- langflow/initial_setup/starter_projects/Search agent.json +132 -35
- langflow/initial_setup/starter_projects/Sequential Tasks Agents.json +422 -98
- langflow/initial_setup/starter_projects/Simple Agent.json +150 -42
- langflow/initial_setup/starter_projects/Social Media Agent.json +150 -42
- langflow/initial_setup/starter_projects/Text Sentiment Analysis.json +120 -24
- langflow/initial_setup/starter_projects/Travel Planning Agents.json +418 -94
- langflow/initial_setup/starter_projects/Twitter Thread Generator.json +69 -37
- langflow/initial_setup/starter_projects/Vector Store RAG.json +66 -38
- langflow/initial_setup/starter_projects/Youtube Analysis.json +191 -51
- langflow/initial_setup/starter_projects/basic_prompting.py +4 -4
- langflow/initial_setup/starter_projects/blog_writer.py +5 -5
- langflow/initial_setup/starter_projects/complex_agent.py +8 -8
- langflow/initial_setup/starter_projects/document_qa.py +5 -5
- langflow/initial_setup/starter_projects/hierarchical_tasks_agent.py +8 -8
- langflow/initial_setup/starter_projects/memory_chatbot.py +6 -6
- langflow/initial_setup/starter_projects/sequential_tasks_agent.py +7 -7
- langflow/initial_setup/starter_projects/vector_store_rag.py +8 -8
- langflow/inputs/__init__.py +3 -2
- langflow/inputs/constants.py +3 -2
- langflow/inputs/input_mixin.py +49 -310
- langflow/inputs/inputs.py +72 -703
- langflow/inputs/validators.py +2 -18
- langflow/interface/__init__.py +4 -0
- langflow/interface/components.py +3 -491
- langflow/interface/initialize/loading.py +7 -6
- langflow/interface/listing.py +3 -25
- langflow/interface/run.py +1 -1
- langflow/interface/utils.py +3 -111
- langflow/io/__init__.py +2 -2
- langflow/io/schema.py +11 -302
- langflow/load/__init__.py +4 -2
- langflow/load/utils.py +2 -96
- langflow/logging/__init__.py +2 -1
- langflow/logging/setup.py +1 -1
- langflow/main.py +8 -5
- langflow/memory.py +12 -6
- langflow/middleware.py +1 -1
- langflow/processing/process.py +7 -7
- langflow/schema/__init__.py +22 -5
- langflow/schema/artifact.py +1 -1
- langflow/schema/data.py +5 -303
- langflow/schema/dataframe.py +2 -205
- langflow/schema/graph.py +4 -45
- langflow/schema/image.py +2 -67
- langflow/schema/message.py +6 -470
- langflow/schema/playground_events.py +5 -6
- langflow/schema/schema.py +24 -117
- langflow/serialization/constants.py +3 -2
- langflow/serialization/serialization.py +1 -1
- langflow/server.py +1 -2
- langflow/services/__init__.py +1 -2
- langflow/services/auth/mcp_encryption.py +1 -1
- langflow/services/auth/service.py +1 -1
- langflow/services/auth/utils.py +5 -5
- langflow/services/cache/disk.py +2 -2
- langflow/services/cache/factory.py +2 -2
- langflow/services/cache/service.py +2 -2
- langflow/services/cache/utils.py +0 -11
- langflow/services/database/factory.py +1 -1
- langflow/services/database/models/flow/model.py +1 -1
- langflow/services/database/models/message/crud.py +2 -1
- langflow/services/database/models/transactions/crud.py +1 -1
- langflow/services/database/models/user/crud.py +1 -1
- langflow/services/database/service.py +2 -2
- langflow/services/database/utils.py +1 -2
- langflow/services/deps.py +12 -17
- langflow/services/enhanced_manager.py +71 -0
- langflow/services/factory.py +14 -7
- langflow/services/flow/flow_runner.py +4 -4
- langflow/services/job_queue/service.py +2 -1
- langflow/services/manager.py +14 -130
- langflow/services/schema.py +0 -1
- langflow/services/session/service.py +3 -2
- langflow/services/settings/__init__.py +0 -3
- langflow/services/settings/base.py +16 -549
- langflow/services/settings/factory.py +2 -21
- langflow/services/settings/feature_flags.py +2 -11
- langflow/services/settings/service.py +2 -31
- langflow/services/shared_component_cache/factory.py +1 -1
- langflow/services/socket/service.py +1 -1
- langflow/services/socket/utils.py +1 -8
- langflow/services/state/factory.py +1 -1
- langflow/services/state/service.py +3 -2
- langflow/services/storage/factory.py +2 -2
- langflow/services/storage/local.py +1 -2
- langflow/services/storage/s3.py +1 -2
- langflow/services/storage/service.py +2 -1
- langflow/services/store/factory.py +1 -1
- langflow/services/store/service.py +2 -2
- langflow/services/store/utils.py +1 -2
- langflow/services/task/service.py +2 -1
- langflow/services/task/temp_flow_cleanup.py +1 -1
- langflow/services/telemetry/factory.py +1 -1
- langflow/services/telemetry/service.py +2 -3
- langflow/services/tracing/arize_phoenix.py +3 -3
- langflow/services/tracing/base.py +1 -1
- langflow/services/tracing/factory.py +1 -1
- langflow/services/tracing/langfuse.py +2 -2
- langflow/services/tracing/langsmith.py +2 -2
- langflow/services/tracing/langwatch.py +4 -4
- langflow/services/tracing/opik.py +2 -2
- langflow/services/tracing/service.py +17 -11
- langflow/services/tracing/traceloop.py +2 -2
- langflow/services/tracing/utils.py +1 -1
- langflow/services/utils.py +54 -9
- langflow/services/variable/factory.py +1 -1
- langflow/services/variable/kubernetes.py +2 -3
- langflow/services/variable/kubernetes_secrets.py +1 -2
- langflow/services/variable/service.py +2 -3
- langflow/template/__init__.py +2 -9
- langflow/template/field/__init__.py +3 -0
- langflow/template/field/base.py +2 -256
- langflow/template/frontend_node.py +3 -0
- langflow/template/utils.py +2 -216
- langflow/utils/constants.py +28 -204
- langflow/utils/lazy_load.py +3 -14
- langflow/utils/schemas.py +2 -3
- langflow/utils/template_validation.py +2 -2
- langflow/utils/util.py +59 -479
- langflow/utils/validate.py +2 -488
- langflow/utils/voice_utils.py +1 -2
- langflow/worker.py +1 -1
- {langflow_base_nightly-0.5.1.dev2.dist-info → langflow_base_nightly-0.5.1.dev4.dist-info}/METADATA +2 -1
- langflow_base_nightly-0.5.1.dev4.dist-info/RECORD +633 -0
- langflow/base/agents/agent.py +0 -267
- langflow/base/agents/callback.py +0 -130
- langflow/base/agents/context.py +0 -109
- langflow/base/agents/crewai/__init__.py +0 -0
- langflow/base/agents/crewai/crew.py +0 -231
- langflow/base/agents/crewai/tasks.py +0 -12
- langflow/base/agents/default_prompts.py +0 -23
- langflow/base/agents/errors.py +0 -15
- langflow/base/agents/events.py +0 -346
- langflow/base/agents/utils.py +0 -205
- langflow/base/astra_assistants/__init__.py +0 -0
- langflow/base/astra_assistants/util.py +0 -171
- langflow/base/chains/__init__.py +0 -0
- langflow/base/chains/model.py +0 -19
- langflow/base/composio/__init__.py +0 -0
- langflow/base/composio/composio_base.py +0 -1297
- langflow/base/compressors/__init__.py +0 -0
- langflow/base/compressors/model.py +0 -60
- langflow/base/constants.py +0 -46
- langflow/base/curl/__init__.py +0 -0
- langflow/base/curl/parse.py +0 -188
- langflow/base/data/base_file.py +0 -685
- langflow/base/data/docling_utils.py +0 -245
- langflow/base/document_transformers/__init__.py +0 -0
- langflow/base/document_transformers/model.py +0 -43
- langflow/base/embeddings/aiml_embeddings.py +0 -62
- langflow/base/embeddings/model.py +0 -26
- langflow/base/flow_processing/__init__.py +0 -0
- langflow/base/flow_processing/utils.py +0 -86
- langflow/base/huggingface/__init__.py +0 -0
- langflow/base/huggingface/model_bridge.py +0 -133
- langflow/base/langchain_utilities/__init__.py +0 -0
- langflow/base/langchain_utilities/model.py +0 -35
- langflow/base/langchain_utilities/spider_constants.py +0 -1
- langflow/base/langwatch/__init__.py +0 -0
- langflow/base/langwatch/utils.py +0 -18
- langflow/base/mcp/__init__.py +0 -0
- langflow/base/mcp/constants.py +0 -2
- langflow/base/mcp/util.py +0 -1524
- langflow/base/memory/memory.py +0 -49
- langflow/base/memory/model.py +0 -38
- langflow/base/models/aiml_constants.py +0 -51
- langflow/base/models/anthropic_constants.py +0 -47
- langflow/base/models/aws_constants.py +0 -151
- langflow/base/models/chat_result.py +0 -76
- langflow/base/models/google_generative_ai_constants.py +0 -70
- langflow/base/models/groq_constants.py +0 -134
- langflow/base/models/model.py +0 -375
- langflow/base/models/model_input_constants.py +0 -299
- langflow/base/models/model_metadata.py +0 -41
- langflow/base/models/model_utils.py +0 -8
- langflow/base/models/novita_constants.py +0 -35
- langflow/base/models/ollama_constants.py +0 -49
- langflow/base/models/sambanova_constants.py +0 -18
- langflow/base/processing/__init__.py +0 -0
- langflow/base/prompts/utils.py +0 -61
- langflow/base/textsplitters/model.py +0 -28
- langflow/base/tools/base.py +0 -26
- langflow/base/tools/component_tool.py +0 -324
- langflow/base/tools/constants.py +0 -49
- langflow/base/tools/flow_tool.py +0 -131
- langflow/base/tools/run_flow.py +0 -227
- langflow/base/vectorstores/model.py +0 -193
- langflow/base/vectorstores/utils.py +0 -22
- langflow/base/vectorstores/vector_store_connection_decorator.py +0 -52
- langflow/components/FAISS/__init__.py +0 -34
- langflow/components/FAISS/faiss.py +0 -111
- langflow/components/Notion/__init__.py +0 -19
- langflow/components/Notion/add_content_to_page.py +0 -269
- langflow/components/Notion/create_page.py +0 -94
- langflow/components/Notion/list_database_properties.py +0 -68
- langflow/components/Notion/list_pages.py +0 -122
- langflow/components/Notion/list_users.py +0 -77
- langflow/components/Notion/page_content_viewer.py +0 -93
- langflow/components/Notion/search.py +0 -111
- langflow/components/Notion/update_page_property.py +0 -114
- langflow/components/_importing.py +0 -37
- langflow/components/agentql/__init__.py +0 -3
- langflow/components/agentql/agentql_api.py +0 -151
- langflow/components/agents/__init__.py +0 -4
- langflow/components/agents/agent.py +0 -554
- langflow/components/agents/mcp_component.py +0 -501
- langflow/components/aiml/__init__.py +0 -37
- langflow/components/aiml/aiml.py +0 -112
- langflow/components/aiml/aiml_embeddings.py +0 -37
- langflow/components/amazon/__init__.py +0 -36
- langflow/components/amazon/amazon_bedrock_embedding.py +0 -109
- langflow/components/amazon/amazon_bedrock_model.py +0 -124
- langflow/components/amazon/s3_bucket_uploader.py +0 -211
- langflow/components/anthropic/__init__.py +0 -34
- langflow/components/anthropic/anthropic.py +0 -187
- langflow/components/apify/__init__.py +0 -5
- langflow/components/apify/apify_actor.py +0 -325
- langflow/components/arxiv/__init__.py +0 -3
- langflow/components/arxiv/arxiv.py +0 -163
- langflow/components/assemblyai/__init__.py +0 -46
- langflow/components/assemblyai/assemblyai_get_subtitles.py +0 -83
- langflow/components/assemblyai/assemblyai_lemur.py +0 -183
- langflow/components/assemblyai/assemblyai_list_transcripts.py +0 -95
- langflow/components/assemblyai/assemblyai_poll_transcript.py +0 -72
- langflow/components/assemblyai/assemblyai_start_transcript.py +0 -188
- langflow/components/azure/__init__.py +0 -37
- langflow/components/azure/azure_openai.py +0 -95
- langflow/components/azure/azure_openai_embeddings.py +0 -83
- langflow/components/baidu/__init__.py +0 -32
- langflow/components/baidu/baidu_qianfan_chat.py +0 -113
- langflow/components/bing/__init__.py +0 -3
- langflow/components/bing/bing_search_api.py +0 -61
- langflow/components/cassandra/__init__.py +0 -40
- langflow/components/cassandra/cassandra.py +0 -264
- langflow/components/cassandra/cassandra_chat.py +0 -92
- langflow/components/cassandra/cassandra_graph.py +0 -238
- langflow/components/chains/__init__.py +0 -0
- langflow/components/chroma/__init__.py +0 -34
- langflow/components/chroma/chroma.py +0 -167
- langflow/components/cleanlab/__init__.py +0 -40
- langflow/components/cleanlab/cleanlab_evaluator.py +0 -157
- langflow/components/cleanlab/cleanlab_rag_evaluator.py +0 -254
- langflow/components/cleanlab/cleanlab_remediator.py +0 -131
- langflow/components/clickhouse/__init__.py +0 -34
- langflow/components/clickhouse/clickhouse.py +0 -135
- langflow/components/cloudflare/__init__.py +0 -32
- langflow/components/cloudflare/cloudflare.py +0 -81
- langflow/components/cohere/__init__.py +0 -40
- langflow/components/cohere/cohere_embeddings.py +0 -81
- langflow/components/cohere/cohere_models.py +0 -46
- langflow/components/cohere/cohere_rerank.py +0 -51
- langflow/components/composio/__init__.py +0 -73
- langflow/components/composio/composio_api.py +0 -268
- langflow/components/composio/dropbox_compnent.py +0 -11
- langflow/components/composio/github_composio.py +0 -11
- langflow/components/composio/gmail_composio.py +0 -38
- langflow/components/composio/googlecalendar_composio.py +0 -11
- langflow/components/composio/googlemeet_composio.py +0 -11
- langflow/components/composio/googletasks_composio.py +0 -8
- langflow/components/composio/linear_composio.py +0 -11
- langflow/components/composio/outlook_composio.py +0 -11
- langflow/components/composio/reddit_composio.py +0 -11
- langflow/components/composio/slack_composio.py +0 -11
- langflow/components/composio/slackbot_composio.py +0 -11
- langflow/components/composio/supabase_composio.py +0 -11
- langflow/components/composio/todoist_composio.py +0 -11
- langflow/components/composio/youtube_composio.py +0 -11
- langflow/components/confluence/__init__.py +0 -3
- langflow/components/confluence/confluence.py +0 -84
- langflow/components/couchbase/__init__.py +0 -34
- langflow/components/couchbase/couchbase.py +0 -102
- langflow/components/crewai/__init__.py +0 -49
- langflow/components/crewai/crewai.py +0 -107
- langflow/components/crewai/hierarchical_crew.py +0 -46
- langflow/components/crewai/hierarchical_task.py +0 -44
- langflow/components/crewai/sequential_crew.py +0 -52
- langflow/components/crewai/sequential_task.py +0 -73
- langflow/components/crewai/sequential_task_agent.py +0 -143
- langflow/components/custom_component/__init__.py +0 -34
- langflow/components/custom_component/custom_component.py +0 -31
- langflow/components/data/__init__.py +0 -25
- langflow/components/data/api_request.py +0 -545
- langflow/components/data/csv_to_data.py +0 -95
- langflow/components/data/directory.py +0 -113
- langflow/components/data/file.py +0 -586
- langflow/components/data/json_to_data.py +0 -98
- langflow/components/data/news_search.py +0 -164
- langflow/components/data/rss.py +0 -69
- langflow/components/data/sql_executor.py +0 -99
- langflow/components/data/url.py +0 -299
- langflow/components/data/web_search.py +0 -112
- langflow/components/data/webhook.py +0 -56
- langflow/components/datastax/__init__.py +0 -70
- langflow/components/datastax/astra_assistant_manager.py +0 -306
- langflow/components/datastax/astra_db.py +0 -69
- langflow/components/datastax/astra_vectorize.py +0 -124
- langflow/components/datastax/astradb_cql.py +0 -314
- langflow/components/datastax/astradb_graph.py +0 -319
- langflow/components/datastax/astradb_tool.py +0 -414
- langflow/components/datastax/astradb_vectorstore.py +0 -1285
- langflow/components/datastax/create_assistant.py +0 -58
- langflow/components/datastax/create_thread.py +0 -32
- langflow/components/datastax/dotenv.py +0 -35
- langflow/components/datastax/get_assistant.py +0 -37
- langflow/components/datastax/getenvvar.py +0 -30
- langflow/components/datastax/graph_rag.py +0 -141
- langflow/components/datastax/hcd.py +0 -314
- langflow/components/datastax/list_assistants.py +0 -25
- langflow/components/datastax/run.py +0 -89
- langflow/components/deactivated/__init__.py +0 -19
- langflow/components/deactivated/amazon_kendra.py +0 -66
- langflow/components/deactivated/chat_litellm_model.py +0 -158
- langflow/components/deactivated/code_block_extractor.py +0 -26
- langflow/components/deactivated/documents_to_data.py +0 -22
- langflow/components/deactivated/embed.py +0 -16
- langflow/components/deactivated/extract_key_from_data.py +0 -46
- langflow/components/deactivated/json_document_builder.py +0 -59
- langflow/components/deactivated/list_flows.py +0 -20
- langflow/components/deactivated/mcp_sse.py +0 -61
- langflow/components/deactivated/mcp_stdio.py +0 -62
- langflow/components/deactivated/merge_data.py +0 -93
- langflow/components/deactivated/message.py +0 -37
- langflow/components/deactivated/metal.py +0 -54
- langflow/components/deactivated/multi_query.py +0 -59
- langflow/components/deactivated/retriever.py +0 -43
- langflow/components/deactivated/selective_passthrough.py +0 -77
- langflow/components/deactivated/should_run_next.py +0 -40
- langflow/components/deactivated/split_text.py +0 -63
- langflow/components/deactivated/store_message.py +0 -24
- langflow/components/deactivated/sub_flow.py +0 -124
- langflow/components/deactivated/vectara_self_query.py +0 -76
- langflow/components/deactivated/vector_store.py +0 -24
- langflow/components/deepseek/__init__.py +0 -34
- langflow/components/deepseek/deepseek.py +0 -136
- langflow/components/docling/__init__.py +0 -43
- langflow/components/docling/chunk_docling_document.py +0 -186
- langflow/components/docling/docling_inline.py +0 -235
- langflow/components/docling/docling_remote.py +0 -193
- langflow/components/docling/export_docling_document.py +0 -117
- langflow/components/documentloaders/__init__.py +0 -0
- langflow/components/duckduckgo/__init__.py +0 -3
- langflow/components/duckduckgo/duck_duck_go_search_run.py +0 -92
- langflow/components/elastic/__init__.py +0 -37
- langflow/components/elastic/elasticsearch.py +0 -267
- langflow/components/elastic/opensearch.py +0 -243
- langflow/components/embeddings/__init__.py +0 -37
- langflow/components/embeddings/similarity.py +0 -76
- langflow/components/embeddings/text_embedder.py +0 -64
- langflow/components/exa/__init__.py +0 -3
- langflow/components/exa/exa_search.py +0 -68
- langflow/components/firecrawl/__init__.py +0 -43
- langflow/components/firecrawl/firecrawl_crawl_api.py +0 -88
- langflow/components/firecrawl/firecrawl_extract_api.py +0 -136
- langflow/components/firecrawl/firecrawl_map_api.py +0 -89
- langflow/components/firecrawl/firecrawl_scrape_api.py +0 -73
- langflow/components/git/__init__.py +0 -4
- langflow/components/git/git.py +0 -262
- langflow/components/git/gitextractor.py +0 -196
- langflow/components/glean/__init__.py +0 -3
- langflow/components/glean/glean_search_api.py +0 -173
- langflow/components/google/__init__.py +0 -17
- langflow/components/google/gmail.py +0 -192
- langflow/components/google/google_bq_sql_executor.py +0 -157
- langflow/components/google/google_drive.py +0 -92
- langflow/components/google/google_drive_search.py +0 -152
- langflow/components/google/google_generative_ai.py +0 -147
- langflow/components/google/google_generative_ai_embeddings.py +0 -141
- langflow/components/google/google_oauth_token.py +0 -89
- langflow/components/google/google_search_api_core.py +0 -68
- langflow/components/google/google_serper_api_core.py +0 -74
- langflow/components/groq/__init__.py +0 -34
- langflow/components/groq/groq.py +0 -140
- langflow/components/helpers/__init__.py +0 -52
- langflow/components/helpers/calculator_core.py +0 -89
- langflow/components/helpers/create_list.py +0 -40
- langflow/components/helpers/current_date.py +0 -42
- langflow/components/helpers/id_generator.py +0 -42
- langflow/components/helpers/memory.py +0 -251
- langflow/components/helpers/output_parser.py +0 -45
- langflow/components/helpers/store_message.py +0 -90
- langflow/components/homeassistant/__init__.py +0 -7
- langflow/components/homeassistant/home_assistant_control.py +0 -152
- langflow/components/homeassistant/list_home_assistant_states.py +0 -137
- langflow/components/huggingface/__init__.py +0 -37
- langflow/components/huggingface/huggingface.py +0 -197
- langflow/components/huggingface/huggingface_inference_api.py +0 -106
- langflow/components/ibm/__init__.py +0 -34
- langflow/components/ibm/watsonx.py +0 -203
- langflow/components/ibm/watsonx_embeddings.py +0 -135
- langflow/components/icosacomputing/__init__.py +0 -5
- langflow/components/icosacomputing/combinatorial_reasoner.py +0 -84
- langflow/components/input_output/__init__.py +0 -38
- langflow/components/input_output/chat.py +0 -120
- langflow/components/input_output/chat_output.py +0 -200
- langflow/components/input_output/text.py +0 -27
- langflow/components/input_output/text_output.py +0 -29
- langflow/components/jigsawstack/__init__.py +0 -23
- langflow/components/jigsawstack/ai_scrape.py +0 -126
- langflow/components/jigsawstack/ai_web_search.py +0 -136
- langflow/components/jigsawstack/file_read.py +0 -115
- langflow/components/jigsawstack/file_upload.py +0 -94
- langflow/components/jigsawstack/image_generation.py +0 -205
- langflow/components/jigsawstack/nsfw.py +0 -60
- langflow/components/jigsawstack/object_detection.py +0 -124
- langflow/components/jigsawstack/sentiment.py +0 -112
- langflow/components/jigsawstack/text_to_sql.py +0 -90
- langflow/components/jigsawstack/text_translate.py +0 -77
- langflow/components/jigsawstack/vocr.py +0 -107
- langflow/components/langchain_utilities/__init__.py +0 -109
- langflow/components/langchain_utilities/character.py +0 -53
- langflow/components/langchain_utilities/conversation.py +0 -52
- langflow/components/langchain_utilities/csv_agent.py +0 -107
- langflow/components/langchain_utilities/fake_embeddings.py +0 -26
- langflow/components/langchain_utilities/html_link_extractor.py +0 -35
- langflow/components/langchain_utilities/json_agent.py +0 -45
- langflow/components/langchain_utilities/langchain_hub.py +0 -126
- langflow/components/langchain_utilities/language_recursive.py +0 -49
- langflow/components/langchain_utilities/language_semantic.py +0 -138
- langflow/components/langchain_utilities/llm_checker.py +0 -39
- langflow/components/langchain_utilities/llm_math.py +0 -42
- langflow/components/langchain_utilities/natural_language.py +0 -61
- langflow/components/langchain_utilities/openai_tools.py +0 -53
- langflow/components/langchain_utilities/openapi.py +0 -48
- langflow/components/langchain_utilities/recursive_character.py +0 -60
- langflow/components/langchain_utilities/retrieval_qa.py +0 -83
- langflow/components/langchain_utilities/runnable_executor.py +0 -137
- langflow/components/langchain_utilities/self_query.py +0 -80
- langflow/components/langchain_utilities/spider.py +0 -142
- langflow/components/langchain_utilities/sql.py +0 -40
- langflow/components/langchain_utilities/sql_database.py +0 -35
- langflow/components/langchain_utilities/sql_generator.py +0 -78
- langflow/components/langchain_utilities/tool_calling.py +0 -59
- langflow/components/langchain_utilities/vector_store_info.py +0 -49
- langflow/components/langchain_utilities/vector_store_router.py +0 -33
- langflow/components/langchain_utilities/xml_agent.py +0 -71
- langflow/components/langwatch/__init__.py +0 -3
- langflow/components/langwatch/langwatch.py +0 -278
- langflow/components/link_extractors/__init__.py +0 -0
- langflow/components/lmstudio/__init__.py +0 -34
- langflow/components/lmstudio/lmstudioembeddings.py +0 -89
- langflow/components/lmstudio/lmstudiomodel.py +0 -129
- langflow/components/logic/__init__.py +0 -52
- langflow/components/logic/conditional_router.py +0 -171
- langflow/components/logic/data_conditional_router.py +0 -125
- langflow/components/logic/flow_tool.py +0 -110
- langflow/components/logic/listen.py +0 -29
- langflow/components/logic/loop.py +0 -125
- langflow/components/logic/notify.py +0 -88
- langflow/components/logic/pass_message.py +0 -35
- langflow/components/logic/run_flow.py +0 -71
- langflow/components/logic/sub_flow.py +0 -114
- langflow/components/maritalk/__init__.py +0 -32
- langflow/components/maritalk/maritalk.py +0 -52
- langflow/components/mem0/__init__.py +0 -3
- langflow/components/mem0/mem0_chat_memory.py +0 -136
- langflow/components/milvus/__init__.py +0 -34
- langflow/components/milvus/milvus.py +0 -115
- langflow/components/mistral/__init__.py +0 -37
- langflow/components/mistral/mistral.py +0 -114
- langflow/components/mistral/mistral_embeddings.py +0 -58
- langflow/components/models/__init__.py +0 -34
- langflow/components/models/embedding_model.py +0 -114
- langflow/components/models/language_model.py +0 -144
- langflow/components/mongodb/__init__.py +0 -34
- langflow/components/mongodb/mongodb_atlas.py +0 -213
- langflow/components/needle/__init__.py +0 -3
- langflow/components/needle/needle.py +0 -104
- langflow/components/notdiamond/__init__.py +0 -36
- langflow/components/notdiamond/notdiamond.py +0 -228
- langflow/components/novita/__init__.py +0 -32
- langflow/components/novita/novita.py +0 -130
- langflow/components/nvidia/__init__.py +0 -57
- langflow/components/nvidia/nvidia.py +0 -157
- langflow/components/nvidia/nvidia_embedding.py +0 -77
- langflow/components/nvidia/nvidia_ingest.py +0 -317
- langflow/components/nvidia/nvidia_rerank.py +0 -63
- langflow/components/nvidia/system_assist.py +0 -65
- langflow/components/olivya/__init__.py +0 -3
- langflow/components/olivya/olivya.py +0 -116
- langflow/components/ollama/__init__.py +0 -37
- langflow/components/ollama/ollama.py +0 -330
- langflow/components/ollama/ollama_embeddings.py +0 -106
- langflow/components/openai/__init__.py +0 -37
- langflow/components/openai/openai.py +0 -100
- langflow/components/openai/openai_chat_model.py +0 -158
- langflow/components/openrouter/__init__.py +0 -32
- langflow/components/openrouter/openrouter.py +0 -202
- langflow/components/output_parsers/__init__.py +0 -0
- langflow/components/perplexity/__init__.py +0 -34
- langflow/components/perplexity/perplexity.py +0 -75
- langflow/components/pgvector/__init__.py +0 -34
- langflow/components/pgvector/pgvector.py +0 -72
- langflow/components/pinecone/__init__.py +0 -34
- langflow/components/pinecone/pinecone.py +0 -134
- langflow/components/processing/alter_metadata.py +0 -108
- langflow/components/processing/batch_run.py +0 -205
- langflow/components/processing/combine_text.py +0 -39
- langflow/components/processing/create_data.py +0 -110
- langflow/components/processing/data_operations.py +0 -438
- langflow/components/processing/data_to_dataframe.py +0 -70
- langflow/components/processing/dataframe_operations.py +0 -321
- langflow/components/processing/extract_key.py +0 -53
- langflow/components/processing/filter_data.py +0 -42
- langflow/components/processing/filter_data_values.py +0 -88
- langflow/components/processing/json_cleaner.py +0 -103
- langflow/components/processing/lambda_filter.py +0 -154
- langflow/components/processing/llm_router.py +0 -499
- langflow/components/processing/merge_data.py +0 -90
- langflow/components/processing/message_to_data.py +0 -36
- langflow/components/processing/parse_data.py +0 -70
- langflow/components/processing/parse_dataframe.py +0 -68
- langflow/components/processing/parse_json_data.py +0 -90
- langflow/components/processing/parser.py +0 -143
- langflow/components/processing/prompt.py +0 -67
- langflow/components/processing/python_repl_core.py +0 -98
- langflow/components/processing/regex.py +0 -82
- langflow/components/processing/save_file.py +0 -208
- langflow/components/processing/select_data.py +0 -48
- langflow/components/processing/split_text.py +0 -141
- langflow/components/processing/structured_output.py +0 -202
- langflow/components/processing/update_data.py +0 -160
- langflow/components/prototypes/__init__.py +0 -34
- langflow/components/prototypes/python_function.py +0 -73
- langflow/components/qdrant/__init__.py +0 -34
- langflow/components/qdrant/qdrant.py +0 -109
- langflow/components/redis/__init__.py +0 -37
- langflow/components/redis/redis.py +0 -89
- langflow/components/redis/redis_chat.py +0 -43
- langflow/components/sambanova/__init__.py +0 -32
- langflow/components/sambanova/sambanova.py +0 -84
- langflow/components/scrapegraph/__init__.py +0 -40
- langflow/components/scrapegraph/scrapegraph_markdownify_api.py +0 -64
- langflow/components/scrapegraph/scrapegraph_search_api.py +0 -64
- langflow/components/scrapegraph/scrapegraph_smart_scraper_api.py +0 -71
- langflow/components/searchapi/__init__.py +0 -36
- langflow/components/searchapi/search.py +0 -79
- langflow/components/serpapi/__init__.py +0 -3
- langflow/components/serpapi/serp.py +0 -115
- langflow/components/serper/__init__.py +0 -3
- langflow/components/serper/google_serper_api_core.py +0 -74
- langflow/components/supabase/__init__.py +0 -37
- langflow/components/supabase/supabase.py +0 -76
- langflow/components/tavily/__init__.py +0 -4
- langflow/components/tavily/tavily_extract.py +0 -117
- langflow/components/tavily/tavily_search.py +0 -212
- langflow/components/textsplitters/__init__.py +0 -0
- langflow/components/toolkits/__init__.py +0 -0
- langflow/components/tools/__init__.py +0 -72
- langflow/components/tools/calculator.py +0 -103
- langflow/components/tools/google_search_api.py +0 -45
- langflow/components/tools/google_serper_api.py +0 -115
- langflow/components/tools/python_code_structured_tool.py +0 -327
- langflow/components/tools/python_repl.py +0 -97
- langflow/components/tools/search_api.py +0 -87
- langflow/components/tools/searxng.py +0 -145
- langflow/components/tools/serp_api.py +0 -119
- langflow/components/tools/tavily_search_tool.py +0 -344
- langflow/components/tools/wikidata_api.py +0 -102
- langflow/components/tools/wikipedia_api.py +0 -49
- langflow/components/tools/yahoo_finance.py +0 -124
- langflow/components/twelvelabs/__init__.py +0 -52
- langflow/components/twelvelabs/convert_astra_results.py +0 -84
- langflow/components/twelvelabs/pegasus_index.py +0 -311
- langflow/components/twelvelabs/split_video.py +0 -291
- langflow/components/twelvelabs/text_embeddings.py +0 -57
- langflow/components/twelvelabs/twelvelabs_pegasus.py +0 -408
- langflow/components/twelvelabs/video_embeddings.py +0 -100
- langflow/components/twelvelabs/video_file.py +0 -179
- langflow/components/unstructured/__init__.py +0 -3
- langflow/components/unstructured/unstructured.py +0 -121
- langflow/components/upstash/__init__.py +0 -34
- langflow/components/upstash/upstash.py +0 -124
- langflow/components/vectara/__init__.py +0 -37
- langflow/components/vectara/vectara.py +0 -97
- langflow/components/vectara/vectara_rag.py +0 -164
- langflow/components/vectorstores/__init__.py +0 -34
- langflow/components/vectorstores/local_db.py +0 -261
- langflow/components/vertexai/__init__.py +0 -37
- langflow/components/vertexai/vertexai.py +0 -71
- langflow/components/vertexai/vertexai_embeddings.py +0 -67
- langflow/components/weaviate/__init__.py +0 -34
- langflow/components/weaviate/weaviate.py +0 -89
- langflow/components/wikipedia/__init__.py +0 -4
- langflow/components/wikipedia/wikidata.py +0 -86
- langflow/components/wikipedia/wikipedia.py +0 -53
- langflow/components/wolframalpha/__init__.py +0 -3
- langflow/components/wolframalpha/wolfram_alpha_api.py +0 -54
- langflow/components/xai/__init__.py +0 -32
- langflow/components/xai/xai.py +0 -167
- langflow/components/yahoosearch/__init__.py +0 -3
- langflow/components/yahoosearch/yahoo.py +0 -137
- langflow/components/youtube/__init__.py +0 -52
- langflow/components/youtube/channel.py +0 -227
- langflow/components/youtube/comments.py +0 -231
- langflow/components/youtube/playlist.py +0 -33
- langflow/components/youtube/search.py +0 -120
- langflow/components/youtube/trending.py +0 -285
- langflow/components/youtube/video_details.py +0 -263
- langflow/components/youtube/youtube_transcripts.py +0 -118
- langflow/components/zep/__init__.py +0 -3
- langflow/components/zep/zep.py +0 -44
- langflow/custom/attributes.py +0 -86
- langflow/custom/code_parser/__init__.py +0 -3
- langflow/custom/code_parser/code_parser.py +0 -361
- langflow/custom/custom_component/base_component.py +0 -118
- langflow/custom/dependency_analyzer.py +0 -165
- langflow/custom/directory_reader/__init__.py +0 -3
- langflow/custom/directory_reader/directory_reader.py +0 -359
- langflow/custom/directory_reader/utils.py +0 -171
- langflow/custom/eval.py +0 -12
- langflow/custom/schema.py +0 -32
- langflow/custom/tree_visitor.py +0 -21
- langflow/frontend/assets/lazyIconImports-Ci-S9xBA.js +0 -2
- langflow/graph/edge/__init__.py +0 -0
- langflow/graph/edge/base.py +0 -277
- langflow/graph/edge/schema.py +0 -119
- langflow/graph/edge/utils.py +0 -0
- langflow/graph/graph/__init__.py +0 -0
- langflow/graph/graph/ascii.py +0 -202
- langflow/graph/graph/base.py +0 -2185
- langflow/graph/graph/constants.py +0 -58
- langflow/graph/graph/runnable_vertices_manager.py +0 -133
- langflow/graph/graph/schema.py +0 -53
- langflow/graph/graph/state_model.py +0 -66
- langflow/graph/graph/utils.py +0 -1024
- langflow/graph/schema.py +0 -75
- langflow/graph/state/__init__.py +0 -0
- langflow/graph/state/model.py +0 -237
- langflow/graph/utils.py +0 -229
- langflow/graph/vertex/__init__.py +0 -0
- langflow/graph/vertex/base.py +0 -811
- langflow/graph/vertex/constants.py +0 -0
- langflow/graph/vertex/exceptions.py +0 -4
- langflow/graph/vertex/param_handler.py +0 -255
- langflow/graph/vertex/schema.py +0 -26
- langflow/graph/vertex/utils.py +0 -19
- langflow/graph/vertex/vertex_types.py +0 -489
- langflow/legacy_custom/__init__.py +0 -0
- langflow/legacy_custom/customs.py +0 -16
- langflow/load/load.py +0 -250
- langflow/logging/logger.py +0 -369
- langflow/processing/utils.py +0 -25
- langflow/schema/openai_responses_schemas.py +0 -74
- langflow/schema/serialize.py +0 -13
- langflow/services/chat/config.py +0 -2
- langflow/services/settings/auth.py +0 -130
- langflow/services/settings/constants.py +0 -31
- langflow/services/settings/manager.py +0 -49
- langflow/services/settings/utils.py +0 -40
- langflow/template/field/prompt.py +0 -2
- langflow/template/frontend_node/__init__.py +0 -6
- langflow/template/frontend_node/base.py +0 -212
- langflow/template/frontend_node/constants.py +0 -65
- langflow/template/frontend_node/custom_components.py +0 -97
- langflow/template/template/__init__.py +0 -0
- langflow/template/template/base.py +0 -99
- langflow/utils/async_helpers.py +0 -42
- langflow/utils/concurrency.py +0 -60
- langflow/utils/util_strings.py +0 -56
- langflow_base_nightly-0.5.1.dev2.dist-info/RECORD +0 -1159
- {langflow_base_nightly-0.5.1.dev2.dist-info → langflow_base_nightly-0.5.1.dev4.dist-info}/WHEEL +0 -0
- {langflow_base_nightly-0.5.1.dev2.dist-info → langflow_base_nightly-0.5.1.dev4.dist-info}/entry_points.txt +0 -0
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
from langchain_core.output_parsers import CommaSeparatedListOutputParser
|
|
2
|
-
|
|
3
|
-
from langflow.custom.custom_component.component import Component
|
|
4
|
-
from langflow.field_typing.constants import OutputParser
|
|
5
|
-
from langflow.io import DropdownInput, Output
|
|
6
|
-
from langflow.schema.message import Message
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
class OutputParserComponent(Component):
|
|
10
|
-
display_name = "Output Parser"
|
|
11
|
-
description = "Transforms the output of an LLM into a specified format."
|
|
12
|
-
icon = "type"
|
|
13
|
-
name = "OutputParser"
|
|
14
|
-
legacy = True
|
|
15
|
-
|
|
16
|
-
inputs = [
|
|
17
|
-
DropdownInput(
|
|
18
|
-
name="parser_type",
|
|
19
|
-
display_name="Parser",
|
|
20
|
-
options=["CSV"],
|
|
21
|
-
value="CSV",
|
|
22
|
-
),
|
|
23
|
-
]
|
|
24
|
-
|
|
25
|
-
outputs = [
|
|
26
|
-
Output(
|
|
27
|
-
display_name="Format Instructions",
|
|
28
|
-
name="format_instructions",
|
|
29
|
-
info="Pass to a prompt template to include formatting instructions for LLM responses.",
|
|
30
|
-
method="format_instructions",
|
|
31
|
-
),
|
|
32
|
-
Output(display_name="Output Parser", name="output_parser", method="build_parser"),
|
|
33
|
-
]
|
|
34
|
-
|
|
35
|
-
def build_parser(self) -> OutputParser:
|
|
36
|
-
if self.parser_type == "CSV":
|
|
37
|
-
return CommaSeparatedListOutputParser()
|
|
38
|
-
msg = "Unsupported or missing parser"
|
|
39
|
-
raise ValueError(msg)
|
|
40
|
-
|
|
41
|
-
def format_instructions(self) -> Message:
|
|
42
|
-
if self.parser_type == "CSV":
|
|
43
|
-
return Message(text=CommaSeparatedListOutputParser().get_format_instructions())
|
|
44
|
-
msg = "Unsupported or missing parser"
|
|
45
|
-
raise ValueError(msg)
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
from langflow.custom.custom_component.component import Component
|
|
2
|
-
from langflow.inputs.inputs import (
|
|
3
|
-
HandleInput,
|
|
4
|
-
MessageTextInput,
|
|
5
|
-
)
|
|
6
|
-
from langflow.memory import aget_messages, astore_message
|
|
7
|
-
from langflow.schema.message import Message
|
|
8
|
-
from langflow.template.field.base import Output
|
|
9
|
-
from langflow.utils.constants import MESSAGE_SENDER_AI, MESSAGE_SENDER_NAME_AI
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
class MessageStoreComponent(Component):
|
|
13
|
-
display_name = "Message Store"
|
|
14
|
-
description = "Stores a chat message or text into Langflow tables or an external memory."
|
|
15
|
-
icon = "message-square-text"
|
|
16
|
-
name = "StoreMessage"
|
|
17
|
-
legacy = True
|
|
18
|
-
|
|
19
|
-
inputs = [
|
|
20
|
-
MessageTextInput(
|
|
21
|
-
name="message", display_name="Message", info="The chat message to be stored.", required=True, tool_mode=True
|
|
22
|
-
),
|
|
23
|
-
HandleInput(
|
|
24
|
-
name="memory",
|
|
25
|
-
display_name="External Memory",
|
|
26
|
-
input_types=["Memory"],
|
|
27
|
-
info="The external memory to store the message. If empty, it will use the Langflow tables.",
|
|
28
|
-
),
|
|
29
|
-
MessageTextInput(
|
|
30
|
-
name="sender",
|
|
31
|
-
display_name="Sender",
|
|
32
|
-
info="The sender of the message. Might be Machine or User. "
|
|
33
|
-
"If empty, the current sender parameter will be used.",
|
|
34
|
-
advanced=True,
|
|
35
|
-
),
|
|
36
|
-
MessageTextInput(
|
|
37
|
-
name="sender_name",
|
|
38
|
-
display_name="Sender Name",
|
|
39
|
-
info="The name of the sender. Might be AI or User. If empty, the current sender parameter will be used.",
|
|
40
|
-
advanced=True,
|
|
41
|
-
),
|
|
42
|
-
MessageTextInput(
|
|
43
|
-
name="session_id",
|
|
44
|
-
display_name="Session ID",
|
|
45
|
-
info="The session ID of the chat. If empty, the current session ID parameter will be used.",
|
|
46
|
-
value="",
|
|
47
|
-
advanced=True,
|
|
48
|
-
),
|
|
49
|
-
]
|
|
50
|
-
|
|
51
|
-
outputs = [
|
|
52
|
-
Output(display_name="Stored Messages", name="stored_messages", method="store_message", hidden=True),
|
|
53
|
-
]
|
|
54
|
-
|
|
55
|
-
async def store_message(self) -> Message:
|
|
56
|
-
message = Message(text=self.message) if isinstance(self.message, str) else self.message
|
|
57
|
-
|
|
58
|
-
message.session_id = self.session_id or message.session_id
|
|
59
|
-
message.sender = self.sender or message.sender or MESSAGE_SENDER_AI
|
|
60
|
-
message.sender_name = self.sender_name or message.sender_name or MESSAGE_SENDER_NAME_AI
|
|
61
|
-
|
|
62
|
-
stored_messages: list[Message] = []
|
|
63
|
-
|
|
64
|
-
if self.memory:
|
|
65
|
-
self.memory.session_id = message.session_id
|
|
66
|
-
lc_message = message.to_lc_message()
|
|
67
|
-
await self.memory.aadd_messages([lc_message])
|
|
68
|
-
|
|
69
|
-
stored_messages = await self.memory.aget_messages() or []
|
|
70
|
-
|
|
71
|
-
stored_messages = [Message.from_lc_message(m) for m in stored_messages] if stored_messages else []
|
|
72
|
-
|
|
73
|
-
if message.sender:
|
|
74
|
-
stored_messages = [m for m in stored_messages if m.sender == message.sender]
|
|
75
|
-
else:
|
|
76
|
-
await astore_message(message, flow_id=self.graph.flow_id)
|
|
77
|
-
stored_messages = (
|
|
78
|
-
await aget_messages(
|
|
79
|
-
session_id=message.session_id, sender_name=message.sender_name, sender=message.sender
|
|
80
|
-
)
|
|
81
|
-
or []
|
|
82
|
-
)
|
|
83
|
-
|
|
84
|
-
if not stored_messages:
|
|
85
|
-
msg = "No messages were stored. Please ensure that the session ID and sender are properly set."
|
|
86
|
-
raise ValueError(msg)
|
|
87
|
-
|
|
88
|
-
stored_message = stored_messages[0]
|
|
89
|
-
self.status = stored_message
|
|
90
|
-
return stored_message
|
|
@@ -1,152 +0,0 @@
|
|
|
1
|
-
import json
|
|
2
|
-
from typing import Any
|
|
3
|
-
|
|
4
|
-
import requests
|
|
5
|
-
from langchain.tools import StructuredTool
|
|
6
|
-
from pydantic import BaseModel, Field
|
|
7
|
-
|
|
8
|
-
from langflow.base.langchain_utilities.model import LCToolComponent
|
|
9
|
-
from langflow.field_typing import Tool
|
|
10
|
-
from langflow.inputs.inputs import SecretStrInput, StrInput
|
|
11
|
-
from langflow.schema.data import Data
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
class HomeAssistantControl(LCToolComponent):
|
|
15
|
-
"""This tool is used to control Home Assistant devices.
|
|
16
|
-
|
|
17
|
-
A very simple tool to control Home Assistant devices.
|
|
18
|
-
- The agent only needs to provide action (turn_on, turn_off, toggle) + entity_id (e.g., switch.xxx, light.xxx).
|
|
19
|
-
- The domain (e.g., 'switch', 'light') is automatically extracted from entity_id.
|
|
20
|
-
"""
|
|
21
|
-
|
|
22
|
-
display_name: str = "Home Assistant Control"
|
|
23
|
-
description: str = (
|
|
24
|
-
"A very simple tool to control Home Assistant devices. "
|
|
25
|
-
"Only action (turn_on, turn_off, toggle) and entity_id need to be provided."
|
|
26
|
-
)
|
|
27
|
-
documentation: str = "https://developers.home-assistant.io/docs/api/rest/"
|
|
28
|
-
icon: str = "HomeAssistant"
|
|
29
|
-
|
|
30
|
-
# --- Input fields for LangFlow UI (token, URL) ---
|
|
31
|
-
inputs = [
|
|
32
|
-
SecretStrInput(
|
|
33
|
-
name="ha_token",
|
|
34
|
-
display_name="Home Assistant Token",
|
|
35
|
-
info="Home Assistant Long-Lived Access Token",
|
|
36
|
-
required=True,
|
|
37
|
-
),
|
|
38
|
-
StrInput(
|
|
39
|
-
name="base_url",
|
|
40
|
-
display_name="Home Assistant URL",
|
|
41
|
-
info="e.g., http://192.168.0.10:8123",
|
|
42
|
-
required=True,
|
|
43
|
-
),
|
|
44
|
-
StrInput(
|
|
45
|
-
name="default_action",
|
|
46
|
-
display_name="Default Action (Optional)",
|
|
47
|
-
info="One of turn_on, turn_off, toggle",
|
|
48
|
-
required=False,
|
|
49
|
-
),
|
|
50
|
-
StrInput(
|
|
51
|
-
name="default_entity_id",
|
|
52
|
-
display_name="Default Entity ID (Optional)",
|
|
53
|
-
info="Default entity ID to control (e.g., switch.unknown_switch_3)",
|
|
54
|
-
required=False,
|
|
55
|
-
),
|
|
56
|
-
]
|
|
57
|
-
|
|
58
|
-
# --- Parameters exposed to the agent (Pydantic schema) ---
|
|
59
|
-
class ToolSchema(BaseModel):
|
|
60
|
-
"""Parameters to be passed by the agent: action, entity_id only."""
|
|
61
|
-
|
|
62
|
-
action: str = Field(..., description="Home Assistant service name. (One of turn_on, turn_off, toggle)")
|
|
63
|
-
entity_id: str = Field(
|
|
64
|
-
...,
|
|
65
|
-
description="Entity ID to control (e.g., switch.xxx, light.xxx, cover.xxx, etc.)."
|
|
66
|
-
"Do not infer; use the list_homeassistant_states tool to retrieve it.",
|
|
67
|
-
)
|
|
68
|
-
|
|
69
|
-
def run_model(self) -> Data:
|
|
70
|
-
"""Used when the 'Run' button is clicked in LangFlow.
|
|
71
|
-
|
|
72
|
-
- Uses default_action and default_entity_id entered in the UI.
|
|
73
|
-
"""
|
|
74
|
-
action = self.default_action or "turn_off"
|
|
75
|
-
entity_id = self.default_entity_id or "switch.unknown_switch_3"
|
|
76
|
-
|
|
77
|
-
result = self._control_device(
|
|
78
|
-
ha_token=self.ha_token,
|
|
79
|
-
base_url=self.base_url,
|
|
80
|
-
action=action,
|
|
81
|
-
entity_id=entity_id,
|
|
82
|
-
)
|
|
83
|
-
return self._make_data_response(result)
|
|
84
|
-
|
|
85
|
-
def build_tool(self) -> Tool:
|
|
86
|
-
"""Returns a tool to be used by the agent (LLM).
|
|
87
|
-
|
|
88
|
-
- The agent can only pass action and entity_id as arguments.
|
|
89
|
-
"""
|
|
90
|
-
return StructuredTool.from_function(
|
|
91
|
-
name="home_assistant_control",
|
|
92
|
-
description=(
|
|
93
|
-
"A tool to control Home Assistant devices easily. "
|
|
94
|
-
"Parameters: action ('turn_on'/'turn_off'/'toggle'), entity_id ('switch.xxx', etc.)."
|
|
95
|
-
"Entity ID must be obtained using the list_homeassistant_states tool and not guessed."
|
|
96
|
-
),
|
|
97
|
-
func=self._control_device_for_tool, # Wrapper function below
|
|
98
|
-
args_schema=self.ToolSchema,
|
|
99
|
-
)
|
|
100
|
-
|
|
101
|
-
def _control_device_for_tool(self, action: str, entity_id: str) -> dict[str, Any] | str:
|
|
102
|
-
"""Function called by the agent.
|
|
103
|
-
|
|
104
|
-
-> Internally calls _control_device.
|
|
105
|
-
"""
|
|
106
|
-
return self._control_device(
|
|
107
|
-
ha_token=self.ha_token,
|
|
108
|
-
base_url=self.base_url,
|
|
109
|
-
action=action,
|
|
110
|
-
entity_id=entity_id,
|
|
111
|
-
)
|
|
112
|
-
|
|
113
|
-
def _control_device(
|
|
114
|
-
self,
|
|
115
|
-
ha_token: str,
|
|
116
|
-
base_url: str,
|
|
117
|
-
action: str,
|
|
118
|
-
entity_id: str,
|
|
119
|
-
) -> dict[str, Any] | str:
|
|
120
|
-
"""Actual logic to call the Home Assistant service.
|
|
121
|
-
|
|
122
|
-
The domain is extracted from the beginning of the entity_id.
|
|
123
|
-
Example: entity_id="switch.unknown_switch_3" -> domain="switch".
|
|
124
|
-
"""
|
|
125
|
-
try:
|
|
126
|
-
domain = entity_id.split(".")[0] # switch, light, cover, etc.
|
|
127
|
-
url = f"{base_url}/api/services/{domain}/{action}"
|
|
128
|
-
|
|
129
|
-
headers = {
|
|
130
|
-
"Authorization": f"Bearer {ha_token}",
|
|
131
|
-
"Content-Type": "application/json",
|
|
132
|
-
}
|
|
133
|
-
payload = {"entity_id": entity_id}
|
|
134
|
-
|
|
135
|
-
response = requests.post(url, headers=headers, json=payload, timeout=10)
|
|
136
|
-
response.raise_for_status()
|
|
137
|
-
|
|
138
|
-
return response.json() # HA response JSON on success
|
|
139
|
-
except requests.exceptions.RequestException as e:
|
|
140
|
-
return f"Error: Failed to call service. {e}"
|
|
141
|
-
except Exception as e: # noqa: BLE001
|
|
142
|
-
return f"An unexpected error occurred: {e}"
|
|
143
|
-
|
|
144
|
-
def _make_data_response(self, result: dict[str, Any] | str) -> Data:
|
|
145
|
-
"""Returns a response in the LangFlow Data format."""
|
|
146
|
-
if isinstance(result, str):
|
|
147
|
-
# Handle error messages
|
|
148
|
-
return Data(text=result)
|
|
149
|
-
|
|
150
|
-
# Convert dict to JSON string
|
|
151
|
-
formatted_json = json.dumps(result, indent=2, ensure_ascii=False)
|
|
152
|
-
return Data(data=result, text=formatted_json)
|
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
import json
|
|
2
|
-
from typing import Any
|
|
3
|
-
|
|
4
|
-
import requests
|
|
5
|
-
from langchain.tools import StructuredTool
|
|
6
|
-
from pydantic import BaseModel, Field
|
|
7
|
-
|
|
8
|
-
from langflow.base.langchain_utilities.model import LCToolComponent
|
|
9
|
-
from langflow.field_typing import Tool
|
|
10
|
-
from langflow.inputs.inputs import SecretStrInput, StrInput
|
|
11
|
-
from langflow.schema.data import Data
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
class ListHomeAssistantStates(LCToolComponent):
|
|
15
|
-
display_name: str = "List Home Assistant States"
|
|
16
|
-
description: str = (
|
|
17
|
-
"Retrieve states from Home Assistant. "
|
|
18
|
-
"The agent only needs to specify 'filter_domain' (optional). "
|
|
19
|
-
"Token and base_url are not exposed to the agent."
|
|
20
|
-
)
|
|
21
|
-
documentation: str = "https://developers.home-assistant.io/docs/api/rest/"
|
|
22
|
-
icon = "HomeAssistant"
|
|
23
|
-
|
|
24
|
-
# 1) Define fields to be received in LangFlow UI
|
|
25
|
-
inputs = [
|
|
26
|
-
SecretStrInput(
|
|
27
|
-
name="ha_token",
|
|
28
|
-
display_name="Home Assistant Token",
|
|
29
|
-
info="Home Assistant Long-Lived Access Token",
|
|
30
|
-
required=True,
|
|
31
|
-
),
|
|
32
|
-
StrInput(
|
|
33
|
-
name="base_url",
|
|
34
|
-
display_name="Home Assistant URL",
|
|
35
|
-
info="e.g., http://192.168.0.10:8123",
|
|
36
|
-
required=True,
|
|
37
|
-
),
|
|
38
|
-
StrInput(
|
|
39
|
-
name="filter_domain",
|
|
40
|
-
display_name="Default Filter Domain (Optional)",
|
|
41
|
-
info="light, switch, sensor, etc. (Leave empty to fetch all)",
|
|
42
|
-
required=False,
|
|
43
|
-
),
|
|
44
|
-
]
|
|
45
|
-
|
|
46
|
-
# 2) Pydantic schema containing only parameters exposed to the agent
|
|
47
|
-
class ToolSchema(BaseModel):
|
|
48
|
-
"""Parameters to be passed by the agent: filter_domain only."""
|
|
49
|
-
|
|
50
|
-
filter_domain: str = Field("", description="Filter domain (e.g., 'light'). If empty, returns all.")
|
|
51
|
-
|
|
52
|
-
def run_model(self) -> Data:
|
|
53
|
-
"""Execute the LangFlow component.
|
|
54
|
-
|
|
55
|
-
Uses self.ha_token, self.base_url, self.filter_domain as entered in the UI.
|
|
56
|
-
Triggered when 'Run' is clicked directly without an agent.
|
|
57
|
-
"""
|
|
58
|
-
filter_domain = self.filter_domain or "" # Use "" for fetching all states
|
|
59
|
-
result = self._list_states(
|
|
60
|
-
ha_token=self.ha_token,
|
|
61
|
-
base_url=self.base_url,
|
|
62
|
-
filter_domain=filter_domain,
|
|
63
|
-
)
|
|
64
|
-
return self._make_data_response(result)
|
|
65
|
-
|
|
66
|
-
def build_tool(self) -> Tool:
|
|
67
|
-
"""Build a tool object to be used by the agent.
|
|
68
|
-
|
|
69
|
-
The agent can only pass 'filter_domain' as a parameter.
|
|
70
|
-
'ha_token' and 'base_url' are not exposed (stored as self attributes).
|
|
71
|
-
"""
|
|
72
|
-
return StructuredTool.from_function(
|
|
73
|
-
name="list_homeassistant_states",
|
|
74
|
-
description=(
|
|
75
|
-
"Retrieve states from Home Assistant. "
|
|
76
|
-
"You can provide filter_domain='light', 'switch', etc. to narrow results."
|
|
77
|
-
),
|
|
78
|
-
func=self._list_states_for_tool, # Wrapper function below
|
|
79
|
-
args_schema=self.ToolSchema, # Requires only filter_domain
|
|
80
|
-
)
|
|
81
|
-
|
|
82
|
-
def _list_states_for_tool(self, filter_domain: str = "") -> list[Any] | str:
|
|
83
|
-
"""Execute the tool when called by the agent.
|
|
84
|
-
|
|
85
|
-
'ha_token' and 'base_url' are stored in self (not exposed).
|
|
86
|
-
"""
|
|
87
|
-
return self._list_states(
|
|
88
|
-
ha_token=self.ha_token,
|
|
89
|
-
base_url=self.base_url,
|
|
90
|
-
filter_domain=filter_domain,
|
|
91
|
-
)
|
|
92
|
-
|
|
93
|
-
def _list_states(
|
|
94
|
-
self,
|
|
95
|
-
ha_token: str,
|
|
96
|
-
base_url: str,
|
|
97
|
-
filter_domain: str = "",
|
|
98
|
-
) -> list[Any] | str:
|
|
99
|
-
"""Call the Home Assistant /api/states endpoint."""
|
|
100
|
-
try:
|
|
101
|
-
headers = {
|
|
102
|
-
"Authorization": f"Bearer {ha_token}",
|
|
103
|
-
"Content-Type": "application/json",
|
|
104
|
-
}
|
|
105
|
-
url = f"{base_url}/api/states"
|
|
106
|
-
response = requests.get(url, headers=headers, timeout=10)
|
|
107
|
-
response.raise_for_status()
|
|
108
|
-
|
|
109
|
-
all_states = response.json()
|
|
110
|
-
if filter_domain:
|
|
111
|
-
return [st for st in all_states if st.get("entity_id", "").startswith(f"{filter_domain}.")]
|
|
112
|
-
|
|
113
|
-
except requests.exceptions.RequestException as e:
|
|
114
|
-
return f"Error: Failed to fetch states. {e}"
|
|
115
|
-
except (ValueError, TypeError) as e:
|
|
116
|
-
return f"Error processing response: {e}"
|
|
117
|
-
return all_states
|
|
118
|
-
|
|
119
|
-
def _make_data_response(self, result: list[Any] | str | dict) -> Data:
|
|
120
|
-
"""Format the response into a Data object."""
|
|
121
|
-
try:
|
|
122
|
-
if isinstance(result, list):
|
|
123
|
-
# Wrap list data into a dictionary and convert to text
|
|
124
|
-
wrapped_result = {"result": result}
|
|
125
|
-
return Data(data=wrapped_result, text=json.dumps(wrapped_result, indent=2, ensure_ascii=False))
|
|
126
|
-
if isinstance(result, dict):
|
|
127
|
-
# Return dictionary as-is
|
|
128
|
-
return Data(data=result, text=json.dumps(result, indent=2, ensure_ascii=False))
|
|
129
|
-
if isinstance(result, str):
|
|
130
|
-
# Return error messages or strings
|
|
131
|
-
return Data(data={}, text=result)
|
|
132
|
-
|
|
133
|
-
# Handle unexpected data types
|
|
134
|
-
return Data(data={}, text="Error: Unexpected response format.")
|
|
135
|
-
except (TypeError, ValueError) as e:
|
|
136
|
-
# Handle specific exceptions during formatting
|
|
137
|
-
return Data(data={}, text=f"Error: Failed to process response. Details: {e!s}")
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
|
|
3
|
-
from typing import TYPE_CHECKING, Any
|
|
4
|
-
|
|
5
|
-
from langflow.components._importing import import_mod
|
|
6
|
-
|
|
7
|
-
if TYPE_CHECKING:
|
|
8
|
-
from .huggingface import HuggingFaceEndpointsComponent
|
|
9
|
-
from .huggingface_inference_api import HuggingFaceInferenceAPIEmbeddingsComponent
|
|
10
|
-
|
|
11
|
-
_dynamic_imports = {
|
|
12
|
-
"HuggingFaceEndpointsComponent": "huggingface",
|
|
13
|
-
"HuggingFaceInferenceAPIEmbeddingsComponent": "huggingface_inference_api",
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
__all__ = [
|
|
17
|
-
"HuggingFaceEndpointsComponent",
|
|
18
|
-
"HuggingFaceInferenceAPIEmbeddingsComponent",
|
|
19
|
-
]
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
def __getattr__(attr_name: str) -> Any:
|
|
23
|
-
"""Lazily import huggingface components on attribute access."""
|
|
24
|
-
if attr_name not in _dynamic_imports:
|
|
25
|
-
msg = f"module '{__name__}' has no attribute '{attr_name}'"
|
|
26
|
-
raise AttributeError(msg)
|
|
27
|
-
try:
|
|
28
|
-
result = import_mod(attr_name, _dynamic_imports[attr_name], __spec__.parent)
|
|
29
|
-
except (ModuleNotFoundError, ImportError, AttributeError) as e:
|
|
30
|
-
msg = f"Could not import '{attr_name}' from '{__name__}': {e}"
|
|
31
|
-
raise AttributeError(msg) from e
|
|
32
|
-
globals()[attr_name] = result
|
|
33
|
-
return result
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
def __dir__() -> list[str]:
|
|
37
|
-
return list(__all__)
|
|
@@ -1,197 +0,0 @@
|
|
|
1
|
-
from typing import Any
|
|
2
|
-
|
|
3
|
-
from langchain_community.llms.huggingface_endpoint import HuggingFaceEndpoint
|
|
4
|
-
from tenacity import retry, stop_after_attempt, wait_fixed
|
|
5
|
-
|
|
6
|
-
from langflow.base.models.model import LCModelComponent
|
|
7
|
-
from langflow.field_typing import LanguageModel
|
|
8
|
-
from langflow.field_typing.range_spec import RangeSpec
|
|
9
|
-
from langflow.io import DictInput, DropdownInput, FloatInput, IntInput, SecretStrInput, SliderInput, StrInput
|
|
10
|
-
|
|
11
|
-
# TODO: langchain_community.llms.huggingface_endpoint is depreciated.
|
|
12
|
-
# Need to update to langchain_huggingface, but have dependency with langchain_core 0.3.0
|
|
13
|
-
|
|
14
|
-
# Constants
|
|
15
|
-
DEFAULT_MODEL = "meta-llama/Llama-3.3-70B-Instruct"
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
class HuggingFaceEndpointsComponent(LCModelComponent):
|
|
19
|
-
display_name: str = "Hugging Face"
|
|
20
|
-
description: str = "Generate text using Hugging Face Inference APIs."
|
|
21
|
-
icon = "HuggingFace"
|
|
22
|
-
name = "HuggingFaceModel"
|
|
23
|
-
|
|
24
|
-
inputs = [
|
|
25
|
-
*LCModelComponent._base_inputs,
|
|
26
|
-
DropdownInput(
|
|
27
|
-
name="model_id",
|
|
28
|
-
display_name="Model ID",
|
|
29
|
-
info="Select a model from Hugging Face Hub",
|
|
30
|
-
options=[
|
|
31
|
-
DEFAULT_MODEL,
|
|
32
|
-
"mistralai/Mixtral-8x7B-Instruct-v0.1",
|
|
33
|
-
"mistralai/Mistral-7B-Instruct-v0.3",
|
|
34
|
-
"meta-llama/Llama-3.1-8B-Instruct",
|
|
35
|
-
"Qwen/Qwen2.5-Coder-32B-Instruct",
|
|
36
|
-
"Qwen/QwQ-32B-Preview",
|
|
37
|
-
"openai-community/gpt2",
|
|
38
|
-
"custom",
|
|
39
|
-
],
|
|
40
|
-
value=DEFAULT_MODEL,
|
|
41
|
-
required=True,
|
|
42
|
-
real_time_refresh=True,
|
|
43
|
-
),
|
|
44
|
-
StrInput(
|
|
45
|
-
name="custom_model",
|
|
46
|
-
display_name="Custom Model ID",
|
|
47
|
-
info="Enter a custom model ID from Hugging Face Hub",
|
|
48
|
-
value="",
|
|
49
|
-
show=False,
|
|
50
|
-
required=True,
|
|
51
|
-
),
|
|
52
|
-
IntInput(
|
|
53
|
-
name="max_new_tokens", display_name="Max New Tokens", value=512, info="Maximum number of generated tokens"
|
|
54
|
-
),
|
|
55
|
-
IntInput(
|
|
56
|
-
name="top_k",
|
|
57
|
-
display_name="Top K",
|
|
58
|
-
advanced=True,
|
|
59
|
-
info="The number of highest probability vocabulary tokens to keep for top-k-filtering",
|
|
60
|
-
),
|
|
61
|
-
FloatInput(
|
|
62
|
-
name="top_p",
|
|
63
|
-
display_name="Top P",
|
|
64
|
-
value=0.95,
|
|
65
|
-
advanced=True,
|
|
66
|
-
info=(
|
|
67
|
-
"If set to < 1, only the smallest set of most probable tokens with "
|
|
68
|
-
"probabilities that add up to `top_p` or higher are kept for generation"
|
|
69
|
-
),
|
|
70
|
-
),
|
|
71
|
-
FloatInput(
|
|
72
|
-
name="typical_p",
|
|
73
|
-
display_name="Typical P",
|
|
74
|
-
value=0.95,
|
|
75
|
-
advanced=True,
|
|
76
|
-
info="Typical Decoding mass.",
|
|
77
|
-
),
|
|
78
|
-
SliderInput(
|
|
79
|
-
name="temperature",
|
|
80
|
-
display_name="Temperature",
|
|
81
|
-
value=0.8,
|
|
82
|
-
range_spec=RangeSpec(min=0, max=2, step=0.01),
|
|
83
|
-
info="The value used to module the logits distribution",
|
|
84
|
-
advanced=True,
|
|
85
|
-
),
|
|
86
|
-
FloatInput(
|
|
87
|
-
name="repetition_penalty",
|
|
88
|
-
display_name="Repetition Penalty",
|
|
89
|
-
info="The parameter for repetition penalty. 1.0 means no penalty.",
|
|
90
|
-
advanced=True,
|
|
91
|
-
),
|
|
92
|
-
StrInput(
|
|
93
|
-
name="inference_endpoint",
|
|
94
|
-
display_name="Inference Endpoint",
|
|
95
|
-
value="https://api-inference.huggingface.co/models/",
|
|
96
|
-
info="Custom inference endpoint URL.",
|
|
97
|
-
required=True,
|
|
98
|
-
),
|
|
99
|
-
DropdownInput(
|
|
100
|
-
name="task",
|
|
101
|
-
display_name="Task",
|
|
102
|
-
options=["text2text-generation", "text-generation", "summarization", "translation"],
|
|
103
|
-
value="text-generation",
|
|
104
|
-
advanced=True,
|
|
105
|
-
info="The task to call the model with. Should be a task that returns `generated_text` or `summary_text`.",
|
|
106
|
-
),
|
|
107
|
-
SecretStrInput(name="huggingfacehub_api_token", display_name="API Token", password=True, required=True),
|
|
108
|
-
DictInput(name="model_kwargs", display_name="Model Keyword Arguments", advanced=True),
|
|
109
|
-
IntInput(name="retry_attempts", display_name="Retry Attempts", value=1, advanced=True),
|
|
110
|
-
]
|
|
111
|
-
|
|
112
|
-
def get_api_url(self) -> str:
|
|
113
|
-
if "huggingface" in self.inference_endpoint.lower():
|
|
114
|
-
if self.model_id == "custom":
|
|
115
|
-
if not self.custom_model:
|
|
116
|
-
error_msg = "Custom model ID is required when 'custom' is selected"
|
|
117
|
-
raise ValueError(error_msg)
|
|
118
|
-
return f"{self.inference_endpoint}{self.custom_model}"
|
|
119
|
-
return f"{self.inference_endpoint}{self.model_id}"
|
|
120
|
-
return self.inference_endpoint
|
|
121
|
-
|
|
122
|
-
async def update_build_config(self, build_config: dict, field_value: Any, field_name: str | None = None) -> dict:
|
|
123
|
-
"""Update build configuration based on field updates."""
|
|
124
|
-
try:
|
|
125
|
-
if field_name is None or field_name == "model_id":
|
|
126
|
-
# If model_id is custom, show custom model field
|
|
127
|
-
if field_value == "custom":
|
|
128
|
-
build_config["custom_model"]["show"] = True
|
|
129
|
-
build_config["custom_model"]["required"] = True
|
|
130
|
-
else:
|
|
131
|
-
build_config["custom_model"]["show"] = False
|
|
132
|
-
build_config["custom_model"]["value"] = ""
|
|
133
|
-
|
|
134
|
-
except (KeyError, AttributeError) as e:
|
|
135
|
-
self.log(f"Error updating build config: {e!s}")
|
|
136
|
-
return build_config
|
|
137
|
-
|
|
138
|
-
def create_huggingface_endpoint(
|
|
139
|
-
self,
|
|
140
|
-
task: str | None,
|
|
141
|
-
huggingfacehub_api_token: str | None,
|
|
142
|
-
model_kwargs: dict[str, Any],
|
|
143
|
-
max_new_tokens: int,
|
|
144
|
-
top_k: int | None,
|
|
145
|
-
top_p: float,
|
|
146
|
-
typical_p: float | None,
|
|
147
|
-
temperature: float | None,
|
|
148
|
-
repetition_penalty: float | None,
|
|
149
|
-
) -> HuggingFaceEndpoint:
|
|
150
|
-
retry_attempts = self.retry_attempts
|
|
151
|
-
endpoint_url = self.get_api_url()
|
|
152
|
-
|
|
153
|
-
@retry(stop=stop_after_attempt(retry_attempts), wait=wait_fixed(2))
|
|
154
|
-
def _attempt_create():
|
|
155
|
-
return HuggingFaceEndpoint(
|
|
156
|
-
endpoint_url=endpoint_url,
|
|
157
|
-
task=task,
|
|
158
|
-
huggingfacehub_api_token=huggingfacehub_api_token,
|
|
159
|
-
model_kwargs=model_kwargs,
|
|
160
|
-
max_new_tokens=max_new_tokens,
|
|
161
|
-
top_k=top_k,
|
|
162
|
-
top_p=top_p,
|
|
163
|
-
typical_p=typical_p,
|
|
164
|
-
temperature=temperature,
|
|
165
|
-
repetition_penalty=repetition_penalty,
|
|
166
|
-
)
|
|
167
|
-
|
|
168
|
-
return _attempt_create()
|
|
169
|
-
|
|
170
|
-
def build_model(self) -> LanguageModel:
|
|
171
|
-
task = self.task or None
|
|
172
|
-
huggingfacehub_api_token = self.huggingfacehub_api_token
|
|
173
|
-
model_kwargs = self.model_kwargs or {}
|
|
174
|
-
max_new_tokens = self.max_new_tokens
|
|
175
|
-
top_k = self.top_k or None
|
|
176
|
-
top_p = self.top_p
|
|
177
|
-
typical_p = self.typical_p or None
|
|
178
|
-
temperature = self.temperature or 0.8
|
|
179
|
-
repetition_penalty = self.repetition_penalty or None
|
|
180
|
-
|
|
181
|
-
try:
|
|
182
|
-
llm = self.create_huggingface_endpoint(
|
|
183
|
-
task=task,
|
|
184
|
-
huggingfacehub_api_token=huggingfacehub_api_token,
|
|
185
|
-
model_kwargs=model_kwargs,
|
|
186
|
-
max_new_tokens=max_new_tokens,
|
|
187
|
-
top_k=top_k,
|
|
188
|
-
top_p=top_p,
|
|
189
|
-
typical_p=typical_p,
|
|
190
|
-
temperature=temperature,
|
|
191
|
-
repetition_penalty=repetition_penalty,
|
|
192
|
-
)
|
|
193
|
-
except Exception as e:
|
|
194
|
-
msg = "Could not connect to Hugging Face Endpoints API."
|
|
195
|
-
raise ValueError(msg) from e
|
|
196
|
-
|
|
197
|
-
return llm
|