langflow-base-nightly 0.5.1.dev3__py3-none-any.whl → 0.5.1.dev5__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- langflow/__init__.py +215 -0
- langflow/__main__.py +16 -2
- langflow/alembic/versions/006b3990db50_add_unique_constraints.py +4 -7
- langflow/alembic/versions/012fb73ac359_add_folder_table.py +4 -5
- langflow/alembic/versions/0ae3a2674f32_update_the_columns_that_need_to_change_.py +11 -20
- langflow/alembic/versions/0b8757876a7c_.py +4 -7
- langflow/alembic/versions/0d60fcbd4e8e_create_vertex_builds_table.py +4 -6
- langflow/alembic/versions/1a110b568907_replace_credential_table_with_variable.py +4 -5
- langflow/alembic/versions/1b8b740a6fa3_remove_fk_constraint_in_message_.py +32 -27
- langflow/alembic/versions/1c79524817ed_add_unique_constraints_per_user_in_.py +4 -5
- langflow/alembic/versions/1d90f8a0efe1_update_description_columns_type.py +4 -5
- langflow/alembic/versions/1eab2c3eb45e_event_error.py +14 -15
- langflow/alembic/versions/1ef9c4f3765d_.py +5 -10
- langflow/alembic/versions/1f4d6df60295_add_default_fields_column.py +4 -5
- langflow/alembic/versions/260dbcc8b680_adds_tables.py +4 -5
- langflow/alembic/versions/29fe8f1f806b_add_missing_index.py +4 -5
- langflow/alembic/versions/2ac71eb9c3ae_adds_credential_table.py +4 -7
- langflow/alembic/versions/3bb0ddf32dfb_add_unique_constraints_per_user_in_flow_.py +4 -5
- langflow/alembic/versions/4e5980a44eaa_fix_date_times_again.py +1 -2
- langflow/alembic/versions/58b28437a398_modify_nullable.py +1 -2
- langflow/alembic/versions/5ace73a7f223_new_remove_table_upgrade_op.py +6 -12
- langflow/alembic/versions/631faacf5da2_add_webhook_columns.py +4 -5
- langflow/alembic/versions/63b9c451fd30_add_icon_and_icon_bg_color_to_flow.py +4 -5
- langflow/alembic/versions/66f72f04a1de_add_mcp_support_with_project_settings_.py +21 -23
- langflow/alembic/versions/67cc006d50bf_add_profile_image_column.py +4 -5
- langflow/alembic/versions/6e7b581b5648_fix_nullable.py +4 -5
- langflow/alembic/versions/7843803a87b5_store_updates.py +4 -6
- langflow/alembic/versions/79e675cb6752_change_datetime_type.py +1 -2
- langflow/alembic/versions/7d2162acc8b2_adds_updated_at_and_folder_cols.py +4 -10
- langflow/alembic/versions/90be8e2ed91e_create_transactions_table.py +4 -6
- langflow/alembic/versions/93e2705fa8d6_add_column_save_path_to_flow.py +7 -9
- langflow/alembic/versions/a72f5cf9c2f9_add_endpoint_name_col.py +4 -5
- langflow/alembic/versions/b2fa308044b5_add_unique_constraints.py +1 -2
- langflow/alembic/versions/bc2f01c40e4a_new_fixes.py +4 -5
- langflow/alembic/versions/c153816fd85f_set_name_and_value_to_not_nullable.py +4 -5
- langflow/alembic/versions/d066bfd22890_add_message_table.py +4 -4
- langflow/alembic/versions/d2d475a1f7c0_add_tags_column_to_flow.py +12 -13
- langflow/alembic/versions/d3dbf656a499_add_gradient_column_in_flow.py +12 -12
- langflow/alembic/versions/d9a6ea21edcd_rename_default_folder.py +7 -10
- langflow/alembic/versions/dd9e0804ebd1_add_v2_file_table.py +8 -7
- langflow/alembic/versions/e3162c1804e6_add_persistent_locked_state.py +10 -10
- langflow/alembic/versions/e3bc869fa272_fix_nullable.py +4 -5
- langflow/alembic/versions/e56d87f8994a_add_optins_column_to_user.py +13 -14
- langflow/alembic/versions/e5a65ecff2cd_nullable_in_vertex_build.py +4 -5
- langflow/alembic/versions/eb5866d51fd2_change_columns_to_be_nullable.py +4 -5
- langflow/alembic/versions/eb5e72293a8e_add_error_and_edit_flags_to_message.py +4 -5
- langflow/alembic/versions/f3b2d1f1002d_add_column_access_type_to_flow.py +19 -15
- langflow/alembic/versions/f5ee9749d1a6_user_id_can_be_null_in_flow.py +4 -6
- langflow/alembic/versions/fd531f8868b1_fix_credential_table.py +5 -8
- langflow/api/build.py +5 -4
- langflow/api/health_check_router.py +1 -1
- langflow/api/limited_background_tasks.py +1 -1
- langflow/api/log_router.py +1 -2
- langflow/api/utils.py +2 -2
- langflow/api/v1/base.py +1 -2
- langflow/api/v1/callback.py +4 -9
- langflow/api/v1/chat.py +6 -7
- langflow/api/v1/endpoints.py +15 -15
- langflow/api/v1/files.py +1 -1
- langflow/api/v1/flows.py +1 -1
- langflow/api/v1/knowledge_bases.py +1 -1
- langflow/api/v1/mcp.py +1 -1
- langflow/api/v1/mcp_projects.py +14 -5
- langflow/api/v1/mcp_utils.py +3 -3
- langflow/api/v1/openai_responses.py +4 -4
- langflow/api/v1/schemas.py +3 -38
- langflow/api/v1/starter_projects.py +61 -3
- langflow/api/v1/store.py +1 -1
- langflow/api/v1/validate.py +3 -3
- langflow/api/v1/voice_mode.py +2 -2
- langflow/api/v2/files.py +1 -1
- langflow/api/v2/mcp.py +2 -2
- langflow/base/__init__.py +11 -0
- langflow/base/agents/__init__.py +3 -0
- langflow/base/data/__init__.py +2 -4
- langflow/base/data/utils.py +2 -197
- langflow/base/embeddings/__init__.py +3 -0
- langflow/base/io/__init__.py +7 -0
- langflow/base/io/chat.py +5 -18
- langflow/base/io/text.py +2 -21
- langflow/base/knowledge_bases/__init__.py +3 -0
- langflow/base/memory/__init__.py +3 -0
- langflow/base/models/__init__.py +2 -2
- langflow/base/models/openai_constants.py +6 -120
- langflow/base/prompts/__init__.py +3 -0
- langflow/base/prompts/api_utils.py +2 -223
- langflow/base/textsplitters/__init__.py +3 -0
- langflow/base/tools/__init__.py +3 -0
- langflow/base/vectorstores/__init__.py +3 -0
- langflow/components/__init__.py +7 -259
- langflow/components/agents.py +6 -0
- langflow/components/anthropic.py +6 -0
- langflow/components/data.py +6 -0
- langflow/components/helpers.py +6 -0
- langflow/components/knowledge_bases/ingestion.py +13 -14
- langflow/components/knowledge_bases/retrieval.py +8 -7
- langflow/components/openai.py +6 -0
- langflow/components/processing/__init__.py +1 -117
- langflow/components/processing/converter.py +3 -149
- langflow/custom/__init__.py +26 -3
- langflow/custom/custom_component/__init__.py +4 -0
- langflow/custom/custom_component/component.py +20 -1738
- langflow/custom/custom_component/component_with_cache.py +1 -8
- langflow/custom/custom_component/custom_component.py +1 -552
- langflow/custom/utils.py +1 -872
- langflow/custom/validate.py +1 -0
- langflow/events/event_manager.py +18 -108
- langflow/field_typing/__init__.py +6 -6
- langflow/field_typing/constants.py +87 -122
- langflow/field_typing/range_spec.py +2 -32
- langflow/frontend/assets/{SlackIcon-Cc7Qnzki.js → SlackIcon-v88osOTA.js} +1 -1
- langflow/frontend/assets/{Wikipedia-7ulMZY46.js → Wikipedia-DD_S2k00.js} +1 -1
- langflow/frontend/assets/{Wolfram-By9PGsHS.js → Wolfram-EO2C5noN.js} +1 -1
- langflow/frontend/assets/{index-DVLIDc2_.js → index-1Gv1mfvk.js} +1 -1
- langflow/frontend/assets/{index-MVW4HTEk.js → index-7v-bzlzf.js} +1 -1
- langflow/frontend/assets/{index-CUzlcce2.js → index-9CbMazbV.js} +1 -1
- langflow/frontend/assets/{index-CU16NJD7.js → index-B8ZHP8g2.js} +1 -1
- langflow/frontend/assets/{index-v8eXbWlM.js → index-B8y2e6vN.js} +1 -1
- langflow/frontend/assets/{index-BX_asvRB.js → index-BBRUGsyr.js} +1 -1
- langflow/frontend/assets/{index-9FL5xjkL.js → index-BGwqQwlh.js} +1 -1
- langflow/frontend/assets/{index-BAn-AzCS.js → index-BIq-k-FG.js} +1 -1
- langflow/frontend/assets/{index-D5c2nNvp.js → index-BSN73YP8.js} +1 -1
- langflow/frontend/assets/{index-DMCerPJM.js → index-BU8R8jRn.js} +1 -1
- langflow/frontend/assets/{index-CvSoff-8.js → index-BV6yx8ey.js} +1 -1
- langflow/frontend/assets/{index-BISPW-f6.js → index-BYIsg-Eh.js} +1 -1
- langflow/frontend/assets/{index-GzOGB_fo.js → index-B_ksDBSQ.js} +1 -1
- langflow/frontend/assets/{index-BIqEYjNT.js → index-Ba1UOZ9A.js} +1 -1
- langflow/frontend/assets/{index-ByxGmq5p.js → index-Ba9tKRQg.js} +1 -1
- langflow/frontend/assets/{index-BLEWsL1U.js → index-Bbfaw8ca.js} +1 -1
- langflow/frontend/assets/{index-C_MhBX6R.js → index-BbuGqvAx.js} +1 -1
- langflow/frontend/assets/{index-RH_I78z_.js → index-BeoXu1YX.js} +1 -1
- langflow/frontend/assets/{index-cYFKmtmg.js → index-BfjZmOnH.js} +1 -1
- langflow/frontend/assets/{index-Bm9i8F4W.js → index-Bjzy_HZB.js} +1 -1
- langflow/frontend/assets/{index-_szO7sta.js → index-BofEkpYB.js} +1 -1
- langflow/frontend/assets/{index-DP1oE6QB.js → index-Bp7Mty2H.js} +1 -1
- langflow/frontend/assets/{index-CeswGUz3.js → index-BqX1H6yK.js} +1 -1
- langflow/frontend/assets/{index-C8pI0lzi.js → index-BqtBAJAN.js} +1 -1
- langflow/frontend/assets/{index-BusCv3bR.js → index-Bsfraj7A.js} +1 -1
- langflow/frontend/assets/{index-BWnKMRFJ.js → index-BtFl7fER.js} +1 -1
- langflow/frontend/assets/{index-DnlVWWU8.js → index-BvX993Sv.js} +1 -1
- langflow/frontend/assets/{index-C676MS3I.js → index-BvgQ2vzM.js} +1 -1
- langflow/frontend/assets/{index-DJ6HD14g.js → index-BwY98u8n.js} +1 -1
- langflow/frontend/assets/{index-C51yNvIL.js → index-C-RIJAOS.js} +1 -1
- langflow/frontend/assets/{index-DiblXWmk.js → index-C1K6A38P.js} +1 -1
- langflow/frontend/assets/{index-Co__gFM1.js → index-C3Vwhx0t.js} +1 -1
- langflow/frontend/assets/{index-Coi86oqP.js → index-C5XUG_gr.js} +1 -1
- langflow/frontend/assets/{index-jwzN3Jd_.js → index-C6ouLG9o.js} +1 -1
- langflow/frontend/assets/{index-CQQ-4XMS.js → index-C7ZJ_Z6f.js} +1 -1
- langflow/frontend/assets/{index-Bl7RpmrB.js → index-CCOGIwGY.js} +1 -1
- langflow/frontend/assets/{index-CVkIdc6y.js → index-CCcye2rt.js} +1 -1
- langflow/frontend/assets/{index-bMhyLtgS.js → index-CFR4yJQB.js} +1 -1
- langflow/frontend/assets/{index-aAgSKWb3.js → index-CIGmPP0H.js} +1 -1
- langflow/frontend/assets/{index-BGt6jQ4x.js → index-CJmMEa6d.js} +1 -1
- langflow/frontend/assets/{index-DX7JcSMz.js → index-CJxD7lyU.js} +1 -1
- langflow/frontend/assets/{index-BZ-A4K98.js → index-CL_vu6ut.js} +1 -1
- langflow/frontend/assets/{index-BMpKFGhI.js → index-COf3UnBn.js} +1 -1
- langflow/frontend/assets/{index-xN8ogFdo.js → index-CV9650h_.js} +1 -1
- langflow/frontend/assets/{index-OsUvqIUr.js → index-CVDzych0.js} +1 -1
- langflow/frontend/assets/{index-BH7AyHxp.js → index-CWIHsC4D.js} +1 -1
- langflow/frontend/assets/{index-mjwtJmkP.js → index-CXCnFZ0L.js} +1 -1
- langflow/frontend/assets/{index-3jlSQi5Y.js → index-Ca_Pw_Dn.js} +1 -1
- langflow/frontend/assets/{index-D-SnFlhU.js → index-Cbb3bX9e.js} +1 -1
- langflow/frontend/assets/{index--e0oQqZh.js → index-CcJtOz-Z.js} +1 -1
- langflow/frontend/assets/{index-S-sc0Cm9.js → index-CfTbTHEv.js} +1 -1
- langflow/frontend/assets/{index-Deu8rlaZ.js → index-ChoxDAgX.js} +1 -1
- langflow/frontend/assets/{index-lnF9Eqr2.js → index-Cn4gw8aE.js} +1 -1
- langflow/frontend/assets/{index-C_NwzK6j.js → index-CnpLg4zX.js} +1 -1
- langflow/frontend/assets/{index-DznH7Jbq.js → index-Cpao2omG.js} +1 -1
- langflow/frontend/assets/{index-DpWrk8mA.js → index-CqoxM01j.js} +1 -1
- langflow/frontend/assets/{index-Bw-TIIC6.js → index-CrHf2Ic1.js} +1 -1
- langflow/frontend/assets/{index-DmYLDQag.js → index-CrV0uIjp.js} +1 -1
- langflow/frontend/assets/{index-Dp7ZQyL3.js → index-CssADaak.js} +1 -1
- langflow/frontend/assets/{index-CNh0rwur.js → index-CtJdNLy9.js} +1 -1
- langflow/frontend/assets/{index-Ca1b7Iag.js → index-CyeWD2dh.js} +1 -1
- langflow/frontend/assets/{index-DcApTyZ7.js → index-D1xzD7uc.js} +1 -1
- langflow/frontend/assets/{index-B3GvPjhD.js → index-D6MuXC4L.js} +1 -1
- langflow/frontend/assets/{index-Cw0UComa.js → index-D8w9zvIF.js} +1 -1
- langflow/frontend/assets/{index-C-2MRYoJ.js → index-D98Gn0A6.js} +1 -1
- langflow/frontend/assets/{index-aWnZIwHd.js → index-DBhjpWkf.js} +1 -1
- langflow/frontend/assets/{index-nw3WF9lY.js → index-DCCRJzcY.js} +1 -1
- langflow/frontend/assets/{index-RjeC0kaX.js → index-DCTRSkEW.js} +1 -1
- langflow/frontend/assets/{index-B_kBTgxV.js → index-DCUfitVj.js} +1 -1
- langflow/frontend/assets/{index-ChsGhZn3.js → index-DDdz-Xcl.js} +1 -1
- langflow/frontend/assets/{index-7yAHPRxv.js → index-DGdMwZjG.js} +1 -1
- langflow/frontend/assets/{index-DjQElpEg.js → index-DGtl2vMw.js} +1 -1
- langflow/frontend/assets/{index-BCXhKCOK.js → index-DHVdkrni.js} +1 -1
- langflow/frontend/assets/{index-S8uJXTOq.js → index-DJBWwjgl.js} +1 -1
- langflow/frontend/assets/{index-qiVTWUuf.js → index-DMAkJ_qX.js} +1 -1
- langflow/frontend/assets/{index-D-WStJI6.js → index-DMEvEQI5.js} +1 -1
- langflow/frontend/assets/{index-BhqVw9WQ.js → index-DNGRoOsp.js} +1 -1
- langflow/frontend/assets/{index-Cu7vC48Y.js → index-DNT_TUTa.js} +1 -1
- langflow/frontend/assets/{index-Bhcv5M0n.js → index-DQKOH_9K.js} +1 -1
- langflow/frontend/assets/{index-CLcaktde.js → index-DQhqqtqQ.js} +1 -1
- langflow/frontend/assets/{index-DZVgPCio.js → index-DRM7KKnG.js} +1 -1
- langflow/frontend/assets/{index-uybez8MR.js → index-DSCtl3a5.js} +1 -1
- langflow/frontend/assets/{index-CJ5A6STv.js → index-DSLNlm0Z.js} +1 -1
- langflow/frontend/assets/{index-Drg8me2a.js → index-DT-PspE-.js} +1 -1
- langflow/frontend/assets/{index-DsEZjOcp.js → index-DTpbH-p8.js} +1 -1
- langflow/frontend/assets/{index-DrXXKzpD.js → index-DWV6MsIq.js} +1 -1
- langflow/frontend/assets/{index-4JIEdyIM.js → index-DWeL4US_.js} +1 -1
- langflow/frontend/assets/{index-BlDsBQ_1.js → index-DYKZHhpU.js} +1 -1
- langflow/frontend/assets/{index-DFY8YFbC.js → index-DZyQHiMR.js} +1 -1
- langflow/frontend/assets/{index-CKPZpkQk.js → index-Dc6qVuSa.js} +1 -1
- langflow/frontend/assets/{index-yyAaYjLR.js → index-DkYuicnC.js} +1 -1
- langflow/frontend/assets/{index-DmVt5Jlx.js → index-Dlj_2mMs.js} +1 -1
- langflow/frontend/assets/{index-BvRIG6P5.js → index-DmGJUrEp.js} +1 -1
- langflow/frontend/assets/{index-BWFIrwW1.js → index-Dn6hpCAZ.js} +1 -1
- langflow/frontend/assets/{index-Cb5G9Ifd.js → index-DrJU8Fgb.js} +1 -1
- langflow/frontend/assets/{index-COoTCxvs.js → index-DsWfdCzp.js} +1 -1
- langflow/frontend/assets/{index-ZjeocHyu.js → index-DvCPWs2_.js} +1 -1
- langflow/frontend/assets/{index-B5LHnuQR.js → index-DvPVq7OP.js} +1 -1
- langflow/frontend/assets/{index-BnCnYnao.js → index-Dw71ufW4.js} +1 -1
- langflow/frontend/assets/{index-AALDfCyt.js → index-DxkJactf.js} +1 -1
- langflow/frontend/assets/{index-k9jP5chN.js → index-Dz2GTphU.js} +1 -1
- langflow/frontend/assets/{index-BdjfHsrf.js → index-Fvd524_c.js} +1 -1
- langflow/frontend/assets/{index-AKVkmT4S.js → index-GAQ0Mk2M.js} +1 -1
- langflow/frontend/assets/{index-BZSa2qz7.js → index-Hm5-4ItD.js} +1 -1
- langflow/frontend/assets/{index-DbfS_UH-.js → index-IT67FzsK.js} +1 -1
- langflow/frontend/assets/{index-BLXN681C.js → index-ItYiij1i.js} +1 -1
- langflow/frontend/assets/{index-CiklyQU3.js → index-IuR_FEdB.js} +1 -1
- langflow/frontend/assets/{index-xV6ystWy.js → index-Jj60FQkv.js} +1 -1
- langflow/frontend/assets/{index-C_157Mb-.js → index-LlvshmVz.js} +1 -1
- langflow/frontend/assets/{index-CDphUsa3.js → index-LwKh3I_W.js} +1 -1
- langflow/frontend/assets/{index-BrDz-PxE.js → index-N-xxmKKH.js} +1 -1
- langflow/frontend/assets/{index-BsdLyYMY.js → index-RwpaHIAH.js} +1 -1
- langflow/frontend/assets/{index-Cu2Xr6_j.js → index-TVvsp-xh.js} +1 -1
- langflow/frontend/assets/{index-CPiM2oyj.js → index-TdE2u9zP.js} +1 -1
- langflow/frontend/assets/{index-DOj_QWqG.js → index-_x-NkYeW.js} +1 -1
- langflow/frontend/assets/{index-YJsAl7vm.js → index-a-YclEbW.js} +1 -1
- langflow/frontend/assets/{index-5-CSw2-z.js → index-e9MFKUCo.js} +1 -1
- langflow/frontend/assets/{index-BSwBVwyF.js → index-krPr8f2F.js} +1 -1
- langflow/frontend/assets/{index-Df6psZEj.js → index-kveiUWuL.js} +1 -1
- langflow/frontend/assets/{index-CF4_Og1m.js → index-lE3oSjJi.js} +1 -1
- langflow/frontend/assets/{index-C6nzdeYx.js → index-lM3UYg7F.js} +1 -1
- langflow/frontend/assets/{index-C-wnbBBY.js → index-nsRk3qgA.js} +1 -1
- langflow/frontend/assets/{index-D234yKNJ.js → index-pBO0SZLD.js} +4 -4
- langflow/frontend/assets/{index-BMvp94tO.js → index-pbZHsbuE.js} +1 -1
- langflow/frontend/assets/{index-hg2y9OAt.js → index-sfX3aWyp.js} +1 -1
- langflow/frontend/assets/{index-DTCrijba.js → index-xQz-VJ0-.js} +1 -1
- langflow/frontend/assets/{index-SB4rw8D5.js → index-yfcsaHS6.js} +1 -1
- langflow/frontend/assets/{index-C-bjC2sz.js → index-zcGjo9fx.js} +1 -1
- langflow/frontend/assets/lazyIconImports-BjqDmNYG.js +2 -0
- langflow/frontend/assets/{use-post-add-user-JUeLDErC.js → use-post-add-user-w3vpKSOB.js} +1 -1
- langflow/frontend/index.html +1 -1
- langflow/graph/__init__.py +4 -4
- langflow/helpers/data.py +2 -2
- langflow/helpers/flow.py +9 -7
- langflow/helpers/user.py +2 -2
- langflow/initial_setup/setup.py +9 -9
- langflow/initial_setup/starter_projects/Basic Prompt Chaining.json +119 -41
- langflow/initial_setup/starter_projects/Basic Prompting.json +45 -19
- langflow/initial_setup/starter_projects/Blog Writer.json +53 -21
- langflow/initial_setup/starter_projects/Custom Component Generator.json +121 -97
- langflow/initial_setup/starter_projects/Document Q&A.json +46 -18
- langflow/initial_setup/starter_projects/Financial Report Parser.json +49 -17
- langflow/initial_setup/starter_projects/Hybrid Search RAG.json +89 -50
- langflow/initial_setup/starter_projects/Image Sentiment Analysis.json +86 -22
- langflow/initial_setup/starter_projects/Instagram Copywriter.json +210 -57
- langflow/initial_setup/starter_projects/Invoice Summarizer.json +132 -35
- langflow/initial_setup/starter_projects/Knowledge Ingestion.json +8 -8
- langflow/initial_setup/starter_projects/Knowledge Retrieval.json +8 -8
- langflow/initial_setup/starter_projects/Market Research.json +174 -48
- langflow/initial_setup/starter_projects/Meeting Summary.json +102 -38
- langflow/initial_setup/starter_projects/Memory Chatbot.json +49 -21
- langflow/initial_setup/starter_projects/News Aggregator.json +140 -39
- langflow/initial_setup/starter_projects/Nvidia Remix.json +153 -181
- langflow/initial_setup/starter_projects/Pok/303/251dex Agent.json" +132 -35
- langflow/initial_setup/starter_projects/Portfolio Website Code Generator.json +106 -43
- langflow/initial_setup/starter_projects/Price Deal Finder.json +136 -39
- langflow/initial_setup/starter_projects/Research Agent.json +206 -53
- langflow/initial_setup/starter_projects/Research Translation Loop.json +66 -34
- langflow/initial_setup/starter_projects/SEO Keyword Generator.json +41 -15
- langflow/initial_setup/starter_projects/SaaS Pricing.json +128 -31
- langflow/initial_setup/starter_projects/Search agent.json +132 -35
- langflow/initial_setup/starter_projects/Sequential Tasks Agents.json +422 -98
- langflow/initial_setup/starter_projects/Simple Agent.json +150 -42
- langflow/initial_setup/starter_projects/Social Media Agent.json +150 -42
- langflow/initial_setup/starter_projects/Text Sentiment Analysis.json +120 -24
- langflow/initial_setup/starter_projects/Travel Planning Agents.json +418 -94
- langflow/initial_setup/starter_projects/Twitter Thread Generator.json +69 -37
- langflow/initial_setup/starter_projects/Vector Store RAG.json +66 -38
- langflow/initial_setup/starter_projects/Youtube Analysis.json +191 -51
- langflow/initial_setup/starter_projects/basic_prompting.py +4 -4
- langflow/initial_setup/starter_projects/blog_writer.py +5 -5
- langflow/initial_setup/starter_projects/complex_agent.py +8 -8
- langflow/initial_setup/starter_projects/document_qa.py +5 -5
- langflow/initial_setup/starter_projects/hierarchical_tasks_agent.py +8 -8
- langflow/initial_setup/starter_projects/memory_chatbot.py +6 -6
- langflow/initial_setup/starter_projects/sequential_tasks_agent.py +7 -7
- langflow/initial_setup/starter_projects/vector_store_rag.py +8 -8
- langflow/inputs/__init__.py +3 -2
- langflow/inputs/constants.py +3 -2
- langflow/inputs/input_mixin.py +49 -310
- langflow/inputs/inputs.py +72 -703
- langflow/inputs/validators.py +2 -18
- langflow/interface/__init__.py +4 -0
- langflow/interface/components.py +3 -491
- langflow/interface/initialize/loading.py +7 -6
- langflow/interface/listing.py +3 -25
- langflow/interface/run.py +1 -1
- langflow/interface/utils.py +3 -111
- langflow/io/__init__.py +2 -2
- langflow/io/schema.py +11 -302
- langflow/load/__init__.py +4 -2
- langflow/load/utils.py +2 -96
- langflow/logging/__init__.py +2 -1
- langflow/logging/setup.py +1 -1
- langflow/main.py +8 -5
- langflow/memory.py +12 -6
- langflow/middleware.py +1 -1
- langflow/processing/process.py +7 -7
- langflow/schema/__init__.py +22 -5
- langflow/schema/artifact.py +1 -1
- langflow/schema/data.py +5 -303
- langflow/schema/dataframe.py +2 -205
- langflow/schema/graph.py +4 -45
- langflow/schema/image.py +2 -67
- langflow/schema/message.py +6 -470
- langflow/schema/playground_events.py +5 -6
- langflow/schema/schema.py +24 -117
- langflow/serialization/constants.py +3 -2
- langflow/serialization/serialization.py +1 -1
- langflow/server.py +1 -2
- langflow/services/__init__.py +1 -2
- langflow/services/auth/mcp_encryption.py +1 -1
- langflow/services/auth/service.py +1 -1
- langflow/services/auth/utils.py +5 -5
- langflow/services/cache/disk.py +2 -2
- langflow/services/cache/factory.py +2 -2
- langflow/services/cache/service.py +2 -2
- langflow/services/cache/utils.py +0 -11
- langflow/services/database/factory.py +1 -1
- langflow/services/database/models/flow/model.py +1 -1
- langflow/services/database/models/message/crud.py +2 -1
- langflow/services/database/models/transactions/crud.py +1 -1
- langflow/services/database/models/user/crud.py +1 -1
- langflow/services/database/service.py +2 -2
- langflow/services/database/utils.py +1 -2
- langflow/services/deps.py +12 -17
- langflow/services/enhanced_manager.py +71 -0
- langflow/services/factory.py +14 -7
- langflow/services/flow/flow_runner.py +4 -4
- langflow/services/job_queue/service.py +2 -1
- langflow/services/manager.py +14 -130
- langflow/services/schema.py +0 -1
- langflow/services/session/service.py +3 -2
- langflow/services/settings/__init__.py +0 -3
- langflow/services/settings/base.py +16 -549
- langflow/services/settings/factory.py +2 -21
- langflow/services/settings/feature_flags.py +2 -11
- langflow/services/settings/service.py +2 -31
- langflow/services/shared_component_cache/factory.py +1 -1
- langflow/services/socket/service.py +1 -1
- langflow/services/socket/utils.py +1 -8
- langflow/services/state/factory.py +1 -1
- langflow/services/state/service.py +3 -2
- langflow/services/storage/factory.py +2 -2
- langflow/services/storage/local.py +1 -2
- langflow/services/storage/s3.py +1 -2
- langflow/services/storage/service.py +2 -1
- langflow/services/store/factory.py +1 -1
- langflow/services/store/service.py +2 -2
- langflow/services/store/utils.py +1 -2
- langflow/services/task/service.py +2 -1
- langflow/services/task/temp_flow_cleanup.py +1 -1
- langflow/services/telemetry/factory.py +1 -1
- langflow/services/telemetry/service.py +2 -3
- langflow/services/tracing/arize_phoenix.py +3 -3
- langflow/services/tracing/base.py +1 -1
- langflow/services/tracing/factory.py +1 -1
- langflow/services/tracing/langfuse.py +2 -2
- langflow/services/tracing/langsmith.py +2 -2
- langflow/services/tracing/langwatch.py +4 -4
- langflow/services/tracing/opik.py +2 -2
- langflow/services/tracing/service.py +17 -11
- langflow/services/tracing/traceloop.py +2 -2
- langflow/services/tracing/utils.py +1 -1
- langflow/services/utils.py +54 -9
- langflow/services/variable/factory.py +1 -1
- langflow/services/variable/kubernetes.py +2 -3
- langflow/services/variable/kubernetes_secrets.py +1 -2
- langflow/services/variable/service.py +2 -3
- langflow/template/__init__.py +2 -9
- langflow/template/field/__init__.py +3 -0
- langflow/template/field/base.py +2 -256
- langflow/template/frontend_node.py +3 -0
- langflow/template/utils.py +2 -216
- langflow/utils/constants.py +28 -204
- langflow/utils/lazy_load.py +3 -14
- langflow/utils/schemas.py +2 -3
- langflow/utils/template_validation.py +2 -2
- langflow/utils/util.py +59 -479
- langflow/utils/validate.py +2 -488
- langflow/utils/voice_utils.py +1 -2
- langflow/worker.py +1 -1
- {langflow_base_nightly-0.5.1.dev3.dist-info → langflow_base_nightly-0.5.1.dev5.dist-info}/METADATA +2 -1
- langflow_base_nightly-0.5.1.dev5.dist-info/RECORD +633 -0
- langflow/base/agents/agent.py +0 -267
- langflow/base/agents/callback.py +0 -130
- langflow/base/agents/context.py +0 -109
- langflow/base/agents/crewai/__init__.py +0 -0
- langflow/base/agents/crewai/crew.py +0 -231
- langflow/base/agents/crewai/tasks.py +0 -12
- langflow/base/agents/default_prompts.py +0 -23
- langflow/base/agents/errors.py +0 -15
- langflow/base/agents/events.py +0 -346
- langflow/base/agents/utils.py +0 -205
- langflow/base/astra_assistants/__init__.py +0 -0
- langflow/base/astra_assistants/util.py +0 -171
- langflow/base/chains/__init__.py +0 -0
- langflow/base/chains/model.py +0 -19
- langflow/base/composio/__init__.py +0 -0
- langflow/base/composio/composio_base.py +0 -1297
- langflow/base/compressors/__init__.py +0 -0
- langflow/base/compressors/model.py +0 -60
- langflow/base/constants.py +0 -46
- langflow/base/curl/__init__.py +0 -0
- langflow/base/curl/parse.py +0 -188
- langflow/base/data/base_file.py +0 -685
- langflow/base/data/docling_utils.py +0 -245
- langflow/base/document_transformers/__init__.py +0 -0
- langflow/base/document_transformers/model.py +0 -43
- langflow/base/embeddings/aiml_embeddings.py +0 -62
- langflow/base/embeddings/model.py +0 -26
- langflow/base/flow_processing/__init__.py +0 -0
- langflow/base/flow_processing/utils.py +0 -86
- langflow/base/huggingface/__init__.py +0 -0
- langflow/base/huggingface/model_bridge.py +0 -133
- langflow/base/langchain_utilities/__init__.py +0 -0
- langflow/base/langchain_utilities/model.py +0 -35
- langflow/base/langchain_utilities/spider_constants.py +0 -1
- langflow/base/langwatch/__init__.py +0 -0
- langflow/base/langwatch/utils.py +0 -18
- langflow/base/mcp/__init__.py +0 -0
- langflow/base/mcp/constants.py +0 -2
- langflow/base/mcp/util.py +0 -1524
- langflow/base/memory/memory.py +0 -49
- langflow/base/memory/model.py +0 -38
- langflow/base/models/aiml_constants.py +0 -51
- langflow/base/models/anthropic_constants.py +0 -47
- langflow/base/models/aws_constants.py +0 -151
- langflow/base/models/chat_result.py +0 -76
- langflow/base/models/google_generative_ai_constants.py +0 -70
- langflow/base/models/groq_constants.py +0 -134
- langflow/base/models/model.py +0 -375
- langflow/base/models/model_input_constants.py +0 -299
- langflow/base/models/model_metadata.py +0 -41
- langflow/base/models/model_utils.py +0 -8
- langflow/base/models/novita_constants.py +0 -35
- langflow/base/models/ollama_constants.py +0 -49
- langflow/base/models/sambanova_constants.py +0 -18
- langflow/base/processing/__init__.py +0 -0
- langflow/base/prompts/utils.py +0 -61
- langflow/base/textsplitters/model.py +0 -28
- langflow/base/tools/base.py +0 -26
- langflow/base/tools/component_tool.py +0 -324
- langflow/base/tools/constants.py +0 -49
- langflow/base/tools/flow_tool.py +0 -131
- langflow/base/tools/run_flow.py +0 -227
- langflow/base/vectorstores/model.py +0 -193
- langflow/base/vectorstores/utils.py +0 -22
- langflow/base/vectorstores/vector_store_connection_decorator.py +0 -52
- langflow/components/FAISS/__init__.py +0 -34
- langflow/components/FAISS/faiss.py +0 -111
- langflow/components/Notion/__init__.py +0 -19
- langflow/components/Notion/add_content_to_page.py +0 -269
- langflow/components/Notion/create_page.py +0 -94
- langflow/components/Notion/list_database_properties.py +0 -68
- langflow/components/Notion/list_pages.py +0 -122
- langflow/components/Notion/list_users.py +0 -77
- langflow/components/Notion/page_content_viewer.py +0 -93
- langflow/components/Notion/search.py +0 -111
- langflow/components/Notion/update_page_property.py +0 -114
- langflow/components/_importing.py +0 -37
- langflow/components/agentql/__init__.py +0 -3
- langflow/components/agentql/agentql_api.py +0 -151
- langflow/components/agents/__init__.py +0 -4
- langflow/components/agents/agent.py +0 -554
- langflow/components/agents/mcp_component.py +0 -501
- langflow/components/aiml/__init__.py +0 -37
- langflow/components/aiml/aiml.py +0 -112
- langflow/components/aiml/aiml_embeddings.py +0 -37
- langflow/components/amazon/__init__.py +0 -36
- langflow/components/amazon/amazon_bedrock_embedding.py +0 -109
- langflow/components/amazon/amazon_bedrock_model.py +0 -124
- langflow/components/amazon/s3_bucket_uploader.py +0 -211
- langflow/components/anthropic/__init__.py +0 -34
- langflow/components/anthropic/anthropic.py +0 -187
- langflow/components/apify/__init__.py +0 -5
- langflow/components/apify/apify_actor.py +0 -325
- langflow/components/arxiv/__init__.py +0 -3
- langflow/components/arxiv/arxiv.py +0 -163
- langflow/components/assemblyai/__init__.py +0 -46
- langflow/components/assemblyai/assemblyai_get_subtitles.py +0 -83
- langflow/components/assemblyai/assemblyai_lemur.py +0 -183
- langflow/components/assemblyai/assemblyai_list_transcripts.py +0 -95
- langflow/components/assemblyai/assemblyai_poll_transcript.py +0 -72
- langflow/components/assemblyai/assemblyai_start_transcript.py +0 -188
- langflow/components/azure/__init__.py +0 -37
- langflow/components/azure/azure_openai.py +0 -95
- langflow/components/azure/azure_openai_embeddings.py +0 -83
- langflow/components/baidu/__init__.py +0 -32
- langflow/components/baidu/baidu_qianfan_chat.py +0 -113
- langflow/components/bing/__init__.py +0 -3
- langflow/components/bing/bing_search_api.py +0 -61
- langflow/components/cassandra/__init__.py +0 -40
- langflow/components/cassandra/cassandra.py +0 -264
- langflow/components/cassandra/cassandra_chat.py +0 -92
- langflow/components/cassandra/cassandra_graph.py +0 -238
- langflow/components/chains/__init__.py +0 -0
- langflow/components/chroma/__init__.py +0 -34
- langflow/components/chroma/chroma.py +0 -167
- langflow/components/cleanlab/__init__.py +0 -40
- langflow/components/cleanlab/cleanlab_evaluator.py +0 -157
- langflow/components/cleanlab/cleanlab_rag_evaluator.py +0 -254
- langflow/components/cleanlab/cleanlab_remediator.py +0 -131
- langflow/components/clickhouse/__init__.py +0 -34
- langflow/components/clickhouse/clickhouse.py +0 -135
- langflow/components/cloudflare/__init__.py +0 -32
- langflow/components/cloudflare/cloudflare.py +0 -81
- langflow/components/cohere/__init__.py +0 -40
- langflow/components/cohere/cohere_embeddings.py +0 -81
- langflow/components/cohere/cohere_models.py +0 -46
- langflow/components/cohere/cohere_rerank.py +0 -51
- langflow/components/composio/__init__.py +0 -73
- langflow/components/composio/composio_api.py +0 -268
- langflow/components/composio/dropbox_compnent.py +0 -11
- langflow/components/composio/github_composio.py +0 -11
- langflow/components/composio/gmail_composio.py +0 -38
- langflow/components/composio/googlecalendar_composio.py +0 -11
- langflow/components/composio/googlemeet_composio.py +0 -11
- langflow/components/composio/googletasks_composio.py +0 -8
- langflow/components/composio/linear_composio.py +0 -11
- langflow/components/composio/outlook_composio.py +0 -11
- langflow/components/composio/reddit_composio.py +0 -11
- langflow/components/composio/slack_composio.py +0 -11
- langflow/components/composio/slackbot_composio.py +0 -11
- langflow/components/composio/supabase_composio.py +0 -11
- langflow/components/composio/todoist_composio.py +0 -11
- langflow/components/composio/youtube_composio.py +0 -11
- langflow/components/confluence/__init__.py +0 -3
- langflow/components/confluence/confluence.py +0 -84
- langflow/components/couchbase/__init__.py +0 -34
- langflow/components/couchbase/couchbase.py +0 -102
- langflow/components/crewai/__init__.py +0 -49
- langflow/components/crewai/crewai.py +0 -107
- langflow/components/crewai/hierarchical_crew.py +0 -46
- langflow/components/crewai/hierarchical_task.py +0 -44
- langflow/components/crewai/sequential_crew.py +0 -52
- langflow/components/crewai/sequential_task.py +0 -73
- langflow/components/crewai/sequential_task_agent.py +0 -143
- langflow/components/custom_component/__init__.py +0 -34
- langflow/components/custom_component/custom_component.py +0 -31
- langflow/components/data/__init__.py +0 -25
- langflow/components/data/api_request.py +0 -545
- langflow/components/data/csv_to_data.py +0 -95
- langflow/components/data/directory.py +0 -113
- langflow/components/data/file.py +0 -586
- langflow/components/data/json_to_data.py +0 -98
- langflow/components/data/news_search.py +0 -164
- langflow/components/data/rss.py +0 -69
- langflow/components/data/sql_executor.py +0 -99
- langflow/components/data/url.py +0 -299
- langflow/components/data/web_search.py +0 -112
- langflow/components/data/webhook.py +0 -56
- langflow/components/datastax/__init__.py +0 -70
- langflow/components/datastax/astra_assistant_manager.py +0 -306
- langflow/components/datastax/astra_db.py +0 -69
- langflow/components/datastax/astra_vectorize.py +0 -124
- langflow/components/datastax/astradb_cql.py +0 -314
- langflow/components/datastax/astradb_graph.py +0 -319
- langflow/components/datastax/astradb_tool.py +0 -414
- langflow/components/datastax/astradb_vectorstore.py +0 -1285
- langflow/components/datastax/create_assistant.py +0 -58
- langflow/components/datastax/create_thread.py +0 -32
- langflow/components/datastax/dotenv.py +0 -35
- langflow/components/datastax/get_assistant.py +0 -37
- langflow/components/datastax/getenvvar.py +0 -30
- langflow/components/datastax/graph_rag.py +0 -141
- langflow/components/datastax/hcd.py +0 -314
- langflow/components/datastax/list_assistants.py +0 -25
- langflow/components/datastax/run.py +0 -89
- langflow/components/deactivated/__init__.py +0 -19
- langflow/components/deactivated/amazon_kendra.py +0 -66
- langflow/components/deactivated/chat_litellm_model.py +0 -158
- langflow/components/deactivated/code_block_extractor.py +0 -26
- langflow/components/deactivated/documents_to_data.py +0 -22
- langflow/components/deactivated/embed.py +0 -16
- langflow/components/deactivated/extract_key_from_data.py +0 -46
- langflow/components/deactivated/json_document_builder.py +0 -59
- langflow/components/deactivated/list_flows.py +0 -20
- langflow/components/deactivated/mcp_sse.py +0 -61
- langflow/components/deactivated/mcp_stdio.py +0 -62
- langflow/components/deactivated/merge_data.py +0 -93
- langflow/components/deactivated/message.py +0 -37
- langflow/components/deactivated/metal.py +0 -54
- langflow/components/deactivated/multi_query.py +0 -59
- langflow/components/deactivated/retriever.py +0 -43
- langflow/components/deactivated/selective_passthrough.py +0 -77
- langflow/components/deactivated/should_run_next.py +0 -40
- langflow/components/deactivated/split_text.py +0 -63
- langflow/components/deactivated/store_message.py +0 -24
- langflow/components/deactivated/sub_flow.py +0 -124
- langflow/components/deactivated/vectara_self_query.py +0 -76
- langflow/components/deactivated/vector_store.py +0 -24
- langflow/components/deepseek/__init__.py +0 -34
- langflow/components/deepseek/deepseek.py +0 -136
- langflow/components/docling/__init__.py +0 -43
- langflow/components/docling/chunk_docling_document.py +0 -186
- langflow/components/docling/docling_inline.py +0 -235
- langflow/components/docling/docling_remote.py +0 -193
- langflow/components/docling/export_docling_document.py +0 -117
- langflow/components/documentloaders/__init__.py +0 -0
- langflow/components/duckduckgo/__init__.py +0 -3
- langflow/components/duckduckgo/duck_duck_go_search_run.py +0 -92
- langflow/components/elastic/__init__.py +0 -37
- langflow/components/elastic/elasticsearch.py +0 -267
- langflow/components/elastic/opensearch.py +0 -243
- langflow/components/embeddings/__init__.py +0 -37
- langflow/components/embeddings/similarity.py +0 -76
- langflow/components/embeddings/text_embedder.py +0 -64
- langflow/components/exa/__init__.py +0 -3
- langflow/components/exa/exa_search.py +0 -68
- langflow/components/firecrawl/__init__.py +0 -43
- langflow/components/firecrawl/firecrawl_crawl_api.py +0 -88
- langflow/components/firecrawl/firecrawl_extract_api.py +0 -136
- langflow/components/firecrawl/firecrawl_map_api.py +0 -89
- langflow/components/firecrawl/firecrawl_scrape_api.py +0 -73
- langflow/components/git/__init__.py +0 -4
- langflow/components/git/git.py +0 -262
- langflow/components/git/gitextractor.py +0 -196
- langflow/components/glean/__init__.py +0 -3
- langflow/components/glean/glean_search_api.py +0 -173
- langflow/components/google/__init__.py +0 -17
- langflow/components/google/gmail.py +0 -192
- langflow/components/google/google_bq_sql_executor.py +0 -157
- langflow/components/google/google_drive.py +0 -92
- langflow/components/google/google_drive_search.py +0 -152
- langflow/components/google/google_generative_ai.py +0 -147
- langflow/components/google/google_generative_ai_embeddings.py +0 -141
- langflow/components/google/google_oauth_token.py +0 -89
- langflow/components/google/google_search_api_core.py +0 -68
- langflow/components/google/google_serper_api_core.py +0 -74
- langflow/components/groq/__init__.py +0 -34
- langflow/components/groq/groq.py +0 -140
- langflow/components/helpers/__init__.py +0 -52
- langflow/components/helpers/calculator_core.py +0 -89
- langflow/components/helpers/create_list.py +0 -40
- langflow/components/helpers/current_date.py +0 -42
- langflow/components/helpers/id_generator.py +0 -42
- langflow/components/helpers/memory.py +0 -251
- langflow/components/helpers/output_parser.py +0 -45
- langflow/components/helpers/store_message.py +0 -90
- langflow/components/homeassistant/__init__.py +0 -7
- langflow/components/homeassistant/home_assistant_control.py +0 -152
- langflow/components/homeassistant/list_home_assistant_states.py +0 -137
- langflow/components/huggingface/__init__.py +0 -37
- langflow/components/huggingface/huggingface.py +0 -197
- langflow/components/huggingface/huggingface_inference_api.py +0 -106
- langflow/components/ibm/__init__.py +0 -34
- langflow/components/ibm/watsonx.py +0 -203
- langflow/components/ibm/watsonx_embeddings.py +0 -135
- langflow/components/icosacomputing/__init__.py +0 -5
- langflow/components/icosacomputing/combinatorial_reasoner.py +0 -84
- langflow/components/input_output/__init__.py +0 -38
- langflow/components/input_output/chat.py +0 -120
- langflow/components/input_output/chat_output.py +0 -200
- langflow/components/input_output/text.py +0 -27
- langflow/components/input_output/text_output.py +0 -29
- langflow/components/jigsawstack/__init__.py +0 -23
- langflow/components/jigsawstack/ai_scrape.py +0 -126
- langflow/components/jigsawstack/ai_web_search.py +0 -136
- langflow/components/jigsawstack/file_read.py +0 -115
- langflow/components/jigsawstack/file_upload.py +0 -94
- langflow/components/jigsawstack/image_generation.py +0 -205
- langflow/components/jigsawstack/nsfw.py +0 -60
- langflow/components/jigsawstack/object_detection.py +0 -124
- langflow/components/jigsawstack/sentiment.py +0 -112
- langflow/components/jigsawstack/text_to_sql.py +0 -90
- langflow/components/jigsawstack/text_translate.py +0 -77
- langflow/components/jigsawstack/vocr.py +0 -107
- langflow/components/langchain_utilities/__init__.py +0 -109
- langflow/components/langchain_utilities/character.py +0 -53
- langflow/components/langchain_utilities/conversation.py +0 -52
- langflow/components/langchain_utilities/csv_agent.py +0 -107
- langflow/components/langchain_utilities/fake_embeddings.py +0 -26
- langflow/components/langchain_utilities/html_link_extractor.py +0 -35
- langflow/components/langchain_utilities/json_agent.py +0 -45
- langflow/components/langchain_utilities/langchain_hub.py +0 -126
- langflow/components/langchain_utilities/language_recursive.py +0 -49
- langflow/components/langchain_utilities/language_semantic.py +0 -138
- langflow/components/langchain_utilities/llm_checker.py +0 -39
- langflow/components/langchain_utilities/llm_math.py +0 -42
- langflow/components/langchain_utilities/natural_language.py +0 -61
- langflow/components/langchain_utilities/openai_tools.py +0 -53
- langflow/components/langchain_utilities/openapi.py +0 -48
- langflow/components/langchain_utilities/recursive_character.py +0 -60
- langflow/components/langchain_utilities/retrieval_qa.py +0 -83
- langflow/components/langchain_utilities/runnable_executor.py +0 -137
- langflow/components/langchain_utilities/self_query.py +0 -80
- langflow/components/langchain_utilities/spider.py +0 -142
- langflow/components/langchain_utilities/sql.py +0 -40
- langflow/components/langchain_utilities/sql_database.py +0 -35
- langflow/components/langchain_utilities/sql_generator.py +0 -78
- langflow/components/langchain_utilities/tool_calling.py +0 -59
- langflow/components/langchain_utilities/vector_store_info.py +0 -49
- langflow/components/langchain_utilities/vector_store_router.py +0 -33
- langflow/components/langchain_utilities/xml_agent.py +0 -71
- langflow/components/langwatch/__init__.py +0 -3
- langflow/components/langwatch/langwatch.py +0 -278
- langflow/components/link_extractors/__init__.py +0 -0
- langflow/components/lmstudio/__init__.py +0 -34
- langflow/components/lmstudio/lmstudioembeddings.py +0 -89
- langflow/components/lmstudio/lmstudiomodel.py +0 -129
- langflow/components/logic/__init__.py +0 -52
- langflow/components/logic/conditional_router.py +0 -171
- langflow/components/logic/data_conditional_router.py +0 -125
- langflow/components/logic/flow_tool.py +0 -110
- langflow/components/logic/listen.py +0 -29
- langflow/components/logic/loop.py +0 -125
- langflow/components/logic/notify.py +0 -88
- langflow/components/logic/pass_message.py +0 -35
- langflow/components/logic/run_flow.py +0 -71
- langflow/components/logic/sub_flow.py +0 -114
- langflow/components/maritalk/__init__.py +0 -32
- langflow/components/maritalk/maritalk.py +0 -52
- langflow/components/mem0/__init__.py +0 -3
- langflow/components/mem0/mem0_chat_memory.py +0 -136
- langflow/components/milvus/__init__.py +0 -34
- langflow/components/milvus/milvus.py +0 -115
- langflow/components/mistral/__init__.py +0 -37
- langflow/components/mistral/mistral.py +0 -114
- langflow/components/mistral/mistral_embeddings.py +0 -58
- langflow/components/models/__init__.py +0 -34
- langflow/components/models/embedding_model.py +0 -114
- langflow/components/models/language_model.py +0 -144
- langflow/components/mongodb/__init__.py +0 -34
- langflow/components/mongodb/mongodb_atlas.py +0 -213
- langflow/components/needle/__init__.py +0 -3
- langflow/components/needle/needle.py +0 -104
- langflow/components/notdiamond/__init__.py +0 -36
- langflow/components/notdiamond/notdiamond.py +0 -228
- langflow/components/novita/__init__.py +0 -32
- langflow/components/novita/novita.py +0 -130
- langflow/components/nvidia/__init__.py +0 -57
- langflow/components/nvidia/nvidia.py +0 -157
- langflow/components/nvidia/nvidia_embedding.py +0 -77
- langflow/components/nvidia/nvidia_ingest.py +0 -317
- langflow/components/nvidia/nvidia_rerank.py +0 -63
- langflow/components/nvidia/system_assist.py +0 -65
- langflow/components/olivya/__init__.py +0 -3
- langflow/components/olivya/olivya.py +0 -116
- langflow/components/ollama/__init__.py +0 -37
- langflow/components/ollama/ollama.py +0 -330
- langflow/components/ollama/ollama_embeddings.py +0 -106
- langflow/components/openai/__init__.py +0 -37
- langflow/components/openai/openai.py +0 -100
- langflow/components/openai/openai_chat_model.py +0 -158
- langflow/components/openrouter/__init__.py +0 -32
- langflow/components/openrouter/openrouter.py +0 -202
- langflow/components/output_parsers/__init__.py +0 -0
- langflow/components/perplexity/__init__.py +0 -34
- langflow/components/perplexity/perplexity.py +0 -75
- langflow/components/pgvector/__init__.py +0 -34
- langflow/components/pgvector/pgvector.py +0 -72
- langflow/components/pinecone/__init__.py +0 -34
- langflow/components/pinecone/pinecone.py +0 -134
- langflow/components/processing/alter_metadata.py +0 -108
- langflow/components/processing/batch_run.py +0 -205
- langflow/components/processing/combine_text.py +0 -39
- langflow/components/processing/create_data.py +0 -110
- langflow/components/processing/data_operations.py +0 -438
- langflow/components/processing/data_to_dataframe.py +0 -70
- langflow/components/processing/dataframe_operations.py +0 -321
- langflow/components/processing/extract_key.py +0 -53
- langflow/components/processing/filter_data.py +0 -42
- langflow/components/processing/filter_data_values.py +0 -88
- langflow/components/processing/json_cleaner.py +0 -103
- langflow/components/processing/lambda_filter.py +0 -154
- langflow/components/processing/llm_router.py +0 -499
- langflow/components/processing/merge_data.py +0 -90
- langflow/components/processing/message_to_data.py +0 -36
- langflow/components/processing/parse_data.py +0 -70
- langflow/components/processing/parse_dataframe.py +0 -68
- langflow/components/processing/parse_json_data.py +0 -90
- langflow/components/processing/parser.py +0 -143
- langflow/components/processing/prompt.py +0 -67
- langflow/components/processing/python_repl_core.py +0 -98
- langflow/components/processing/regex.py +0 -82
- langflow/components/processing/save_file.py +0 -208
- langflow/components/processing/select_data.py +0 -48
- langflow/components/processing/split_text.py +0 -141
- langflow/components/processing/structured_output.py +0 -202
- langflow/components/processing/update_data.py +0 -160
- langflow/components/prototypes/__init__.py +0 -34
- langflow/components/prototypes/python_function.py +0 -73
- langflow/components/qdrant/__init__.py +0 -34
- langflow/components/qdrant/qdrant.py +0 -109
- langflow/components/redis/__init__.py +0 -37
- langflow/components/redis/redis.py +0 -89
- langflow/components/redis/redis_chat.py +0 -43
- langflow/components/sambanova/__init__.py +0 -32
- langflow/components/sambanova/sambanova.py +0 -84
- langflow/components/scrapegraph/__init__.py +0 -40
- langflow/components/scrapegraph/scrapegraph_markdownify_api.py +0 -64
- langflow/components/scrapegraph/scrapegraph_search_api.py +0 -64
- langflow/components/scrapegraph/scrapegraph_smart_scraper_api.py +0 -71
- langflow/components/searchapi/__init__.py +0 -36
- langflow/components/searchapi/search.py +0 -79
- langflow/components/serpapi/__init__.py +0 -3
- langflow/components/serpapi/serp.py +0 -115
- langflow/components/serper/__init__.py +0 -3
- langflow/components/serper/google_serper_api_core.py +0 -74
- langflow/components/supabase/__init__.py +0 -37
- langflow/components/supabase/supabase.py +0 -76
- langflow/components/tavily/__init__.py +0 -4
- langflow/components/tavily/tavily_extract.py +0 -117
- langflow/components/tavily/tavily_search.py +0 -212
- langflow/components/textsplitters/__init__.py +0 -0
- langflow/components/toolkits/__init__.py +0 -0
- langflow/components/tools/__init__.py +0 -72
- langflow/components/tools/calculator.py +0 -103
- langflow/components/tools/google_search_api.py +0 -45
- langflow/components/tools/google_serper_api.py +0 -115
- langflow/components/tools/python_code_structured_tool.py +0 -327
- langflow/components/tools/python_repl.py +0 -97
- langflow/components/tools/search_api.py +0 -87
- langflow/components/tools/searxng.py +0 -145
- langflow/components/tools/serp_api.py +0 -119
- langflow/components/tools/tavily_search_tool.py +0 -344
- langflow/components/tools/wikidata_api.py +0 -102
- langflow/components/tools/wikipedia_api.py +0 -49
- langflow/components/tools/yahoo_finance.py +0 -124
- langflow/components/twelvelabs/__init__.py +0 -52
- langflow/components/twelvelabs/convert_astra_results.py +0 -84
- langflow/components/twelvelabs/pegasus_index.py +0 -311
- langflow/components/twelvelabs/split_video.py +0 -291
- langflow/components/twelvelabs/text_embeddings.py +0 -57
- langflow/components/twelvelabs/twelvelabs_pegasus.py +0 -408
- langflow/components/twelvelabs/video_embeddings.py +0 -100
- langflow/components/twelvelabs/video_file.py +0 -179
- langflow/components/unstructured/__init__.py +0 -3
- langflow/components/unstructured/unstructured.py +0 -121
- langflow/components/upstash/__init__.py +0 -34
- langflow/components/upstash/upstash.py +0 -124
- langflow/components/vectara/__init__.py +0 -37
- langflow/components/vectara/vectara.py +0 -97
- langflow/components/vectara/vectara_rag.py +0 -164
- langflow/components/vectorstores/__init__.py +0 -34
- langflow/components/vectorstores/local_db.py +0 -261
- langflow/components/vertexai/__init__.py +0 -37
- langflow/components/vertexai/vertexai.py +0 -71
- langflow/components/vertexai/vertexai_embeddings.py +0 -67
- langflow/components/weaviate/__init__.py +0 -34
- langflow/components/weaviate/weaviate.py +0 -89
- langflow/components/wikipedia/__init__.py +0 -4
- langflow/components/wikipedia/wikidata.py +0 -86
- langflow/components/wikipedia/wikipedia.py +0 -53
- langflow/components/wolframalpha/__init__.py +0 -3
- langflow/components/wolframalpha/wolfram_alpha_api.py +0 -54
- langflow/components/xai/__init__.py +0 -32
- langflow/components/xai/xai.py +0 -167
- langflow/components/yahoosearch/__init__.py +0 -3
- langflow/components/yahoosearch/yahoo.py +0 -137
- langflow/components/youtube/__init__.py +0 -52
- langflow/components/youtube/channel.py +0 -227
- langflow/components/youtube/comments.py +0 -231
- langflow/components/youtube/playlist.py +0 -33
- langflow/components/youtube/search.py +0 -120
- langflow/components/youtube/trending.py +0 -285
- langflow/components/youtube/video_details.py +0 -263
- langflow/components/youtube/youtube_transcripts.py +0 -118
- langflow/components/zep/__init__.py +0 -3
- langflow/components/zep/zep.py +0 -44
- langflow/custom/attributes.py +0 -86
- langflow/custom/code_parser/__init__.py +0 -3
- langflow/custom/code_parser/code_parser.py +0 -361
- langflow/custom/custom_component/base_component.py +0 -118
- langflow/custom/dependency_analyzer.py +0 -165
- langflow/custom/directory_reader/__init__.py +0 -3
- langflow/custom/directory_reader/directory_reader.py +0 -359
- langflow/custom/directory_reader/utils.py +0 -171
- langflow/custom/eval.py +0 -12
- langflow/custom/schema.py +0 -32
- langflow/custom/tree_visitor.py +0 -21
- langflow/frontend/assets/lazyIconImports-Ci-S9xBA.js +0 -2
- langflow/graph/edge/__init__.py +0 -0
- langflow/graph/edge/base.py +0 -277
- langflow/graph/edge/schema.py +0 -119
- langflow/graph/edge/utils.py +0 -0
- langflow/graph/graph/__init__.py +0 -0
- langflow/graph/graph/ascii.py +0 -202
- langflow/graph/graph/base.py +0 -2185
- langflow/graph/graph/constants.py +0 -58
- langflow/graph/graph/runnable_vertices_manager.py +0 -133
- langflow/graph/graph/schema.py +0 -53
- langflow/graph/graph/state_model.py +0 -66
- langflow/graph/graph/utils.py +0 -1024
- langflow/graph/schema.py +0 -75
- langflow/graph/state/__init__.py +0 -0
- langflow/graph/state/model.py +0 -237
- langflow/graph/utils.py +0 -229
- langflow/graph/vertex/__init__.py +0 -0
- langflow/graph/vertex/base.py +0 -811
- langflow/graph/vertex/constants.py +0 -0
- langflow/graph/vertex/exceptions.py +0 -4
- langflow/graph/vertex/param_handler.py +0 -255
- langflow/graph/vertex/schema.py +0 -26
- langflow/graph/vertex/utils.py +0 -19
- langflow/graph/vertex/vertex_types.py +0 -489
- langflow/legacy_custom/__init__.py +0 -0
- langflow/legacy_custom/customs.py +0 -16
- langflow/load/load.py +0 -250
- langflow/logging/logger.py +0 -369
- langflow/processing/utils.py +0 -25
- langflow/schema/openai_responses_schemas.py +0 -74
- langflow/schema/serialize.py +0 -13
- langflow/services/chat/config.py +0 -2
- langflow/services/settings/auth.py +0 -130
- langflow/services/settings/constants.py +0 -31
- langflow/services/settings/manager.py +0 -49
- langflow/services/settings/utils.py +0 -40
- langflow/template/field/prompt.py +0 -2
- langflow/template/frontend_node/__init__.py +0 -6
- langflow/template/frontend_node/base.py +0 -212
- langflow/template/frontend_node/constants.py +0 -65
- langflow/template/frontend_node/custom_components.py +0 -97
- langflow/template/template/__init__.py +0 -0
- langflow/template/template/base.py +0 -99
- langflow/utils/async_helpers.py +0 -42
- langflow/utils/concurrency.py +0 -60
- langflow/utils/util_strings.py +0 -56
- langflow_base_nightly-0.5.1.dev3.dist-info/RECORD +0 -1159
- {langflow_base_nightly-0.5.1.dev3.dist-info → langflow_base_nightly-0.5.1.dev5.dist-info}/WHEEL +0 -0
- {langflow_base_nightly-0.5.1.dev3.dist-info → langflow_base_nightly-0.5.1.dev5.dist-info}/entry_points.txt +0 -0
langflow/base/models/model.py
DELETED
|
@@ -1,375 +0,0 @@
|
|
|
1
|
-
import importlib
|
|
2
|
-
import json
|
|
3
|
-
import warnings
|
|
4
|
-
from abc import abstractmethod
|
|
5
|
-
|
|
6
|
-
from langchain_core.language_models import BaseChatModel
|
|
7
|
-
from langchain_core.language_models.llms import LLM
|
|
8
|
-
from langchain_core.messages import AIMessage, BaseMessage, HumanMessage, SystemMessage
|
|
9
|
-
from langchain_core.output_parsers import BaseOutputParser
|
|
10
|
-
|
|
11
|
-
from langflow.base.constants import STREAM_INFO_TEXT
|
|
12
|
-
from langflow.custom.custom_component.component import Component
|
|
13
|
-
from langflow.field_typing import LanguageModel
|
|
14
|
-
from langflow.inputs.inputs import BoolInput, InputTypes, MessageInput, MultilineInput
|
|
15
|
-
from langflow.schema.message import Message
|
|
16
|
-
from langflow.template.field.base import Output
|
|
17
|
-
from langflow.utils.constants import MESSAGE_SENDER_AI
|
|
18
|
-
|
|
19
|
-
# Enabled detailed thinking for NVIDIA reasoning models.
|
|
20
|
-
#
|
|
21
|
-
# Models are trained with this exact string. Do not update.
|
|
22
|
-
DETAILED_THINKING_PREFIX = "detailed thinking on\n\n"
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
class LCModelComponent(Component):
|
|
26
|
-
display_name: str = "Model Name"
|
|
27
|
-
description: str = "Model Description"
|
|
28
|
-
trace_type = "llm"
|
|
29
|
-
metadata = {
|
|
30
|
-
"keywords": [
|
|
31
|
-
"model",
|
|
32
|
-
"llm",
|
|
33
|
-
"language model",
|
|
34
|
-
"large language model",
|
|
35
|
-
],
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
# Optional output parser to pass to the runnable. Subclasses may allow the user to input an `output_parser`
|
|
39
|
-
output_parser: BaseOutputParser | None = None
|
|
40
|
-
|
|
41
|
-
_base_inputs: list[InputTypes] = [
|
|
42
|
-
MessageInput(name="input_value", display_name="Input"),
|
|
43
|
-
MultilineInput(
|
|
44
|
-
name="system_message",
|
|
45
|
-
display_name="System Message",
|
|
46
|
-
info="System message to pass to the model.",
|
|
47
|
-
advanced=False,
|
|
48
|
-
),
|
|
49
|
-
BoolInput(name="stream", display_name="Stream", info=STREAM_INFO_TEXT, advanced=True),
|
|
50
|
-
]
|
|
51
|
-
|
|
52
|
-
outputs = [
|
|
53
|
-
Output(display_name="Model Response", name="text_output", method="text_response"),
|
|
54
|
-
Output(display_name="Language Model", name="model_output", method="build_model"),
|
|
55
|
-
]
|
|
56
|
-
|
|
57
|
-
def _get_exception_message(self, e: Exception):
|
|
58
|
-
return str(e)
|
|
59
|
-
|
|
60
|
-
def supports_tool_calling(self, model: LanguageModel) -> bool:
|
|
61
|
-
try:
|
|
62
|
-
# Check if the bind_tools method is the same as the base class's method
|
|
63
|
-
if model.bind_tools is BaseChatModel.bind_tools:
|
|
64
|
-
return False
|
|
65
|
-
|
|
66
|
-
def test_tool(x: int) -> int:
|
|
67
|
-
return x
|
|
68
|
-
|
|
69
|
-
model_with_tool = model.bind_tools([test_tool])
|
|
70
|
-
return hasattr(model_with_tool, "tools") and len(model_with_tool.tools) > 0
|
|
71
|
-
except (AttributeError, TypeError, ValueError):
|
|
72
|
-
return False
|
|
73
|
-
|
|
74
|
-
def _validate_outputs(self) -> None:
|
|
75
|
-
# At least these two outputs must be defined
|
|
76
|
-
required_output_methods = ["text_response", "build_model"]
|
|
77
|
-
output_names = [output.name for output in self.outputs]
|
|
78
|
-
for method_name in required_output_methods:
|
|
79
|
-
if method_name not in output_names:
|
|
80
|
-
msg = f"Output with name '{method_name}' must be defined."
|
|
81
|
-
raise ValueError(msg)
|
|
82
|
-
if not hasattr(self, method_name):
|
|
83
|
-
msg = f"Method '{method_name}' must be defined."
|
|
84
|
-
raise ValueError(msg)
|
|
85
|
-
|
|
86
|
-
async def text_response(self) -> Message:
|
|
87
|
-
output = self.build_model()
|
|
88
|
-
result = await self.get_chat_result(
|
|
89
|
-
runnable=output, stream=self.stream, input_value=self.input_value, system_message=self.system_message
|
|
90
|
-
)
|
|
91
|
-
self.status = result
|
|
92
|
-
return result
|
|
93
|
-
|
|
94
|
-
def get_result(self, *, runnable: LLM, stream: bool, input_value: str):
|
|
95
|
-
"""Retrieves the result from the output of a Runnable object.
|
|
96
|
-
|
|
97
|
-
Args:
|
|
98
|
-
runnable (Runnable): The runnable to retrieve the result from.
|
|
99
|
-
stream (bool): Indicates whether to use streaming or invocation mode.
|
|
100
|
-
input_value (str): The input value to pass to the output object.
|
|
101
|
-
|
|
102
|
-
Returns:
|
|
103
|
-
The result obtained from the output object.
|
|
104
|
-
"""
|
|
105
|
-
try:
|
|
106
|
-
if stream:
|
|
107
|
-
result = runnable.stream(input_value)
|
|
108
|
-
else:
|
|
109
|
-
message = runnable.invoke(input_value)
|
|
110
|
-
result = message.content if hasattr(message, "content") else message
|
|
111
|
-
self.status = result
|
|
112
|
-
except Exception as e:
|
|
113
|
-
if message := self._get_exception_message(e):
|
|
114
|
-
raise ValueError(message) from e
|
|
115
|
-
raise
|
|
116
|
-
|
|
117
|
-
return result
|
|
118
|
-
|
|
119
|
-
def build_status_message(self, message: AIMessage):
|
|
120
|
-
"""Builds a status message from an AIMessage object.
|
|
121
|
-
|
|
122
|
-
Args:
|
|
123
|
-
message (AIMessage): The AIMessage object to build the status message from.
|
|
124
|
-
|
|
125
|
-
Returns:
|
|
126
|
-
The status message.
|
|
127
|
-
"""
|
|
128
|
-
if message.response_metadata:
|
|
129
|
-
# Build a well formatted status message
|
|
130
|
-
content = message.content
|
|
131
|
-
response_metadata = message.response_metadata
|
|
132
|
-
openai_keys = ["token_usage", "model_name", "finish_reason"]
|
|
133
|
-
inner_openai_keys = ["completion_tokens", "prompt_tokens", "total_tokens"]
|
|
134
|
-
anthropic_keys = ["model", "usage", "stop_reason"]
|
|
135
|
-
inner_anthropic_keys = ["input_tokens", "output_tokens"]
|
|
136
|
-
if all(key in response_metadata for key in openai_keys) and all(
|
|
137
|
-
key in response_metadata["token_usage"] for key in inner_openai_keys
|
|
138
|
-
):
|
|
139
|
-
token_usage = response_metadata["token_usage"]
|
|
140
|
-
status_message = {
|
|
141
|
-
"tokens": {
|
|
142
|
-
"input": token_usage["prompt_tokens"],
|
|
143
|
-
"output": token_usage["completion_tokens"],
|
|
144
|
-
"total": token_usage["total_tokens"],
|
|
145
|
-
"stop_reason": response_metadata["finish_reason"],
|
|
146
|
-
"response": content,
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
elif all(key in response_metadata for key in anthropic_keys) and all(
|
|
151
|
-
key in response_metadata["usage"] for key in inner_anthropic_keys
|
|
152
|
-
):
|
|
153
|
-
usage = response_metadata["usage"]
|
|
154
|
-
status_message = {
|
|
155
|
-
"tokens": {
|
|
156
|
-
"input": usage["input_tokens"],
|
|
157
|
-
"output": usage["output_tokens"],
|
|
158
|
-
"stop_reason": response_metadata["stop_reason"],
|
|
159
|
-
"response": content,
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
else:
|
|
163
|
-
status_message = f"Response: {content}" # type: ignore[assignment]
|
|
164
|
-
else:
|
|
165
|
-
status_message = f"Response: {message.content}" # type: ignore[assignment]
|
|
166
|
-
return status_message
|
|
167
|
-
|
|
168
|
-
async def get_chat_result(
|
|
169
|
-
self,
|
|
170
|
-
*,
|
|
171
|
-
runnable: LanguageModel,
|
|
172
|
-
stream: bool,
|
|
173
|
-
input_value: str | Message,
|
|
174
|
-
system_message: str | None = None,
|
|
175
|
-
) -> Message:
|
|
176
|
-
# NVIDIA reasoning models use detailed thinking
|
|
177
|
-
if getattr(self, "detailed_thinking", False):
|
|
178
|
-
system_message = DETAILED_THINKING_PREFIX + (system_message or "")
|
|
179
|
-
|
|
180
|
-
return await self._get_chat_result(
|
|
181
|
-
runnable=runnable,
|
|
182
|
-
stream=stream,
|
|
183
|
-
input_value=input_value,
|
|
184
|
-
system_message=system_message,
|
|
185
|
-
)
|
|
186
|
-
|
|
187
|
-
async def _get_chat_result(
|
|
188
|
-
self,
|
|
189
|
-
*,
|
|
190
|
-
runnable: LanguageModel,
|
|
191
|
-
stream: bool,
|
|
192
|
-
input_value: str | Message,
|
|
193
|
-
system_message: str | None = None,
|
|
194
|
-
) -> Message:
|
|
195
|
-
"""Get chat result from a language model.
|
|
196
|
-
|
|
197
|
-
This method handles the core logic of getting a response from a language model,
|
|
198
|
-
including handling different input types, streaming, and error handling.
|
|
199
|
-
|
|
200
|
-
Args:
|
|
201
|
-
runnable (LanguageModel): The language model to use for generating responses
|
|
202
|
-
stream (bool): Whether to stream the response
|
|
203
|
-
input_value (str | Message): The input to send to the model
|
|
204
|
-
system_message (str | None, optional): System message to prepend. Defaults to None.
|
|
205
|
-
|
|
206
|
-
Returns:
|
|
207
|
-
The model response, either as a Message object or raw content
|
|
208
|
-
|
|
209
|
-
Raises:
|
|
210
|
-
ValueError: If the input message is empty or if there's an error during model invocation
|
|
211
|
-
"""
|
|
212
|
-
messages: list[BaseMessage] = []
|
|
213
|
-
if not input_value and not system_message:
|
|
214
|
-
msg = "The message you want to send to the model is empty."
|
|
215
|
-
raise ValueError(msg)
|
|
216
|
-
system_message_added = False
|
|
217
|
-
message = None
|
|
218
|
-
if input_value:
|
|
219
|
-
if isinstance(input_value, Message):
|
|
220
|
-
with warnings.catch_warnings():
|
|
221
|
-
warnings.simplefilter("ignore")
|
|
222
|
-
if "prompt" in input_value:
|
|
223
|
-
prompt = input_value.load_lc_prompt()
|
|
224
|
-
if system_message:
|
|
225
|
-
prompt.messages = [
|
|
226
|
-
SystemMessage(content=system_message),
|
|
227
|
-
*prompt.messages, # type: ignore[has-type]
|
|
228
|
-
]
|
|
229
|
-
system_message_added = True
|
|
230
|
-
runnable = prompt | runnable
|
|
231
|
-
else:
|
|
232
|
-
messages.append(input_value.to_lc_message())
|
|
233
|
-
else:
|
|
234
|
-
messages.append(HumanMessage(content=input_value))
|
|
235
|
-
|
|
236
|
-
if system_message and not system_message_added:
|
|
237
|
-
messages.insert(0, SystemMessage(content=system_message))
|
|
238
|
-
inputs: list | dict = messages or {}
|
|
239
|
-
lf_message = None
|
|
240
|
-
try:
|
|
241
|
-
# TODO: Depreciated Feature to be removed in upcoming release
|
|
242
|
-
if hasattr(self, "output_parser") and self.output_parser is not None:
|
|
243
|
-
runnable |= self.output_parser
|
|
244
|
-
|
|
245
|
-
runnable = runnable.with_config(
|
|
246
|
-
{
|
|
247
|
-
"run_name": self.display_name,
|
|
248
|
-
"project_name": self.get_project_name(),
|
|
249
|
-
"callbacks": self.get_langchain_callbacks(),
|
|
250
|
-
}
|
|
251
|
-
)
|
|
252
|
-
if stream:
|
|
253
|
-
lf_message, result = await self._handle_stream(runnable, inputs)
|
|
254
|
-
else:
|
|
255
|
-
message = await runnable.ainvoke(inputs)
|
|
256
|
-
result = message.content if hasattr(message, "content") else message
|
|
257
|
-
if isinstance(message, AIMessage):
|
|
258
|
-
status_message = self.build_status_message(message)
|
|
259
|
-
self.status = status_message
|
|
260
|
-
elif isinstance(result, dict):
|
|
261
|
-
result = json.dumps(message, indent=4)
|
|
262
|
-
self.status = result
|
|
263
|
-
else:
|
|
264
|
-
self.status = result
|
|
265
|
-
except Exception as e:
|
|
266
|
-
if message := self._get_exception_message(e):
|
|
267
|
-
raise ValueError(message) from e
|
|
268
|
-
raise
|
|
269
|
-
return lf_message or Message(text=result)
|
|
270
|
-
|
|
271
|
-
async def _handle_stream(self, runnable, inputs):
|
|
272
|
-
"""Handle streaming responses from the language model.
|
|
273
|
-
|
|
274
|
-
Args:
|
|
275
|
-
runnable: The language model configured for streaming
|
|
276
|
-
inputs: The inputs to send to the model
|
|
277
|
-
|
|
278
|
-
Returns:
|
|
279
|
-
tuple: (Message object if connected to chat output, model result)
|
|
280
|
-
"""
|
|
281
|
-
lf_message = None
|
|
282
|
-
if self.is_connected_to_chat_output():
|
|
283
|
-
# Add a Message
|
|
284
|
-
if hasattr(self, "graph"):
|
|
285
|
-
session_id = self.graph.session_id
|
|
286
|
-
elif hasattr(self, "_session_id"):
|
|
287
|
-
session_id = self._session_id
|
|
288
|
-
else:
|
|
289
|
-
session_id = None
|
|
290
|
-
model_message = Message(
|
|
291
|
-
text=runnable.astream(inputs),
|
|
292
|
-
sender=MESSAGE_SENDER_AI,
|
|
293
|
-
sender_name="AI",
|
|
294
|
-
properties={"icon": self.icon, "state": "partial"},
|
|
295
|
-
session_id=session_id,
|
|
296
|
-
)
|
|
297
|
-
model_message.properties.source = self._build_source(self._id, self.display_name, self)
|
|
298
|
-
lf_message = await self.send_message(model_message)
|
|
299
|
-
result = lf_message.text
|
|
300
|
-
else:
|
|
301
|
-
message = await runnable.ainvoke(inputs)
|
|
302
|
-
result = message.content if hasattr(message, "content") else message
|
|
303
|
-
return lf_message, result
|
|
304
|
-
|
|
305
|
-
@abstractmethod
|
|
306
|
-
def build_model(self) -> LanguageModel: # type: ignore[type-var]
|
|
307
|
-
"""Implement this method to build the model."""
|
|
308
|
-
|
|
309
|
-
def get_llm(self, provider_name: str, model_info: dict[str, dict[str, str | list[InputTypes]]]) -> LanguageModel:
|
|
310
|
-
"""Get LLM model based on provider name and inputs.
|
|
311
|
-
|
|
312
|
-
Args:
|
|
313
|
-
provider_name: Name of the model provider (e.g., "OpenAI", "Azure OpenAI")
|
|
314
|
-
inputs: Dictionary of input parameters for the model
|
|
315
|
-
model_info: Dictionary of model information
|
|
316
|
-
|
|
317
|
-
Returns:
|
|
318
|
-
Built LLM model instance
|
|
319
|
-
"""
|
|
320
|
-
try:
|
|
321
|
-
if provider_name not in [model.get("display_name") for model in model_info.values()]:
|
|
322
|
-
msg = f"Unknown model provider: {provider_name}"
|
|
323
|
-
raise ValueError(msg)
|
|
324
|
-
|
|
325
|
-
# Find the component class name from MODEL_INFO in a single iteration
|
|
326
|
-
component_info, module_name = next(
|
|
327
|
-
((info, key) for key, info in model_info.items() if info.get("display_name") == provider_name),
|
|
328
|
-
(None, None),
|
|
329
|
-
)
|
|
330
|
-
if not component_info:
|
|
331
|
-
msg = f"Component information not found for {provider_name}"
|
|
332
|
-
raise ValueError(msg)
|
|
333
|
-
component_inputs = component_info.get("inputs", [])
|
|
334
|
-
# Get the component class from the models module
|
|
335
|
-
# Ensure component_inputs is a list of the expected types
|
|
336
|
-
if not isinstance(component_inputs, list):
|
|
337
|
-
component_inputs = []
|
|
338
|
-
|
|
339
|
-
import warnings
|
|
340
|
-
|
|
341
|
-
with warnings.catch_warnings():
|
|
342
|
-
warnings.filterwarnings(
|
|
343
|
-
"ignore", message="Support for class-based `config` is deprecated", category=DeprecationWarning
|
|
344
|
-
)
|
|
345
|
-
warnings.filterwarnings("ignore", message="Valid config keys have changed in V2", category=UserWarning)
|
|
346
|
-
models_module = importlib.import_module("langflow.components.models")
|
|
347
|
-
component_class = getattr(models_module, str(module_name))
|
|
348
|
-
component = component_class()
|
|
349
|
-
|
|
350
|
-
return self.build_llm_model_from_inputs(component, component_inputs)
|
|
351
|
-
except Exception as e:
|
|
352
|
-
msg = f"Error building {provider_name} language model"
|
|
353
|
-
raise ValueError(msg) from e
|
|
354
|
-
|
|
355
|
-
def build_llm_model_from_inputs(
|
|
356
|
-
self, component: Component, inputs: list[InputTypes], prefix: str = ""
|
|
357
|
-
) -> LanguageModel:
|
|
358
|
-
"""Build LLM model from component and inputs.
|
|
359
|
-
|
|
360
|
-
Args:
|
|
361
|
-
component: LLM component instance
|
|
362
|
-
inputs: Dictionary of input parameters for the model
|
|
363
|
-
prefix: Prefix for the input names
|
|
364
|
-
Returns:
|
|
365
|
-
Built LLM model instance
|
|
366
|
-
"""
|
|
367
|
-
# Ensure prefix is a string
|
|
368
|
-
prefix = prefix or ""
|
|
369
|
-
# Filter inputs to only include valid component input names
|
|
370
|
-
input_data = {
|
|
371
|
-
str(component_input.name): getattr(self, f"{prefix}{component_input.name}", None)
|
|
372
|
-
for component_input in inputs
|
|
373
|
-
}
|
|
374
|
-
|
|
375
|
-
return component.set(**input_data).build_model()
|
|
@@ -1,299 +0,0 @@
|
|
|
1
|
-
from typing_extensions import TypedDict
|
|
2
|
-
|
|
3
|
-
from langflow.base.models.model import LCModelComponent
|
|
4
|
-
from langflow.components.amazon.amazon_bedrock_model import AmazonBedrockComponent
|
|
5
|
-
from langflow.components.anthropic.anthropic import AnthropicModelComponent
|
|
6
|
-
from langflow.components.azure.azure_openai import AzureChatOpenAIComponent
|
|
7
|
-
from langflow.components.google.google_generative_ai import GoogleGenerativeAIComponent
|
|
8
|
-
from langflow.components.groq.groq import GroqModel
|
|
9
|
-
from langflow.components.nvidia.nvidia import NVIDIAModelComponent
|
|
10
|
-
from langflow.components.openai.openai_chat_model import OpenAIModelComponent
|
|
11
|
-
from langflow.components.sambanova.sambanova import SambaNovaComponent
|
|
12
|
-
from langflow.inputs.inputs import InputTypes, SecretStrInput
|
|
13
|
-
from langflow.template.field.base import Input
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
class ModelProvidersDict(TypedDict):
|
|
17
|
-
fields: dict
|
|
18
|
-
inputs: list[InputTypes]
|
|
19
|
-
prefix: str
|
|
20
|
-
component_class: LCModelComponent
|
|
21
|
-
icon: str
|
|
22
|
-
is_active: bool
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
def get_filtered_inputs(component_class):
|
|
26
|
-
base_input_names = {field.name for field in LCModelComponent._base_inputs}
|
|
27
|
-
component_instance = component_class()
|
|
28
|
-
|
|
29
|
-
return [process_inputs(input_) for input_ in component_instance.inputs if input_.name not in base_input_names]
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
def process_inputs(component_data: Input):
|
|
33
|
-
"""Processes and modifies an input configuration based on its type or name.
|
|
34
|
-
|
|
35
|
-
Adjusts properties such as value, advanced status, real-time refresh, and additional information for specific
|
|
36
|
-
input types or names to ensure correct behavior in the UI and provider integration.
|
|
37
|
-
|
|
38
|
-
Args:
|
|
39
|
-
component_data: The input configuration to process.
|
|
40
|
-
|
|
41
|
-
Returns:
|
|
42
|
-
The modified input configuration.
|
|
43
|
-
"""
|
|
44
|
-
if isinstance(component_data, SecretStrInput):
|
|
45
|
-
component_data.value = ""
|
|
46
|
-
component_data.load_from_db = False
|
|
47
|
-
component_data.real_time_refresh = True
|
|
48
|
-
if component_data.name == "api_key":
|
|
49
|
-
component_data.required = False
|
|
50
|
-
elif component_data.name == "tool_model_enabled":
|
|
51
|
-
component_data.advanced = True
|
|
52
|
-
component_data.value = True
|
|
53
|
-
elif component_data.name in {"temperature", "base_url"}:
|
|
54
|
-
component_data = set_advanced_true(component_data)
|
|
55
|
-
elif component_data.name == "model_name":
|
|
56
|
-
component_data = set_real_time_refresh_false(component_data)
|
|
57
|
-
component_data = add_combobox_true(component_data)
|
|
58
|
-
component_data = add_info(
|
|
59
|
-
component_data,
|
|
60
|
-
"To see the model names, first choose a provider. Then, enter your API key and click the refresh button "
|
|
61
|
-
"next to the model name.",
|
|
62
|
-
)
|
|
63
|
-
return component_data
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
def set_advanced_true(component_input):
|
|
67
|
-
component_input.advanced = True
|
|
68
|
-
return component_input
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
def set_real_time_refresh_false(component_input):
|
|
72
|
-
component_input.real_time_refresh = False
|
|
73
|
-
return component_input
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
def add_info(component_input, info_str: str):
|
|
77
|
-
component_input.info = info_str
|
|
78
|
-
return component_input
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
def add_combobox_true(component_input):
|
|
82
|
-
component_input.combobox = True
|
|
83
|
-
return component_input
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
def create_input_fields_dict(inputs: list[Input], prefix: str) -> dict[str, Input]:
|
|
87
|
-
return {f"{prefix}{input_.name}": input_.to_dict() for input_ in inputs}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
def _get_google_generative_ai_inputs_and_fields():
|
|
91
|
-
try:
|
|
92
|
-
from langflow.components.google.google_generative_ai import GoogleGenerativeAIComponent
|
|
93
|
-
|
|
94
|
-
google_generative_ai_inputs = get_filtered_inputs(GoogleGenerativeAIComponent)
|
|
95
|
-
except ImportError as e:
|
|
96
|
-
msg = (
|
|
97
|
-
"Google Generative AI is not installed. Please install it with "
|
|
98
|
-
"`pip install langchain-google-generative-ai`."
|
|
99
|
-
)
|
|
100
|
-
raise ImportError(msg) from e
|
|
101
|
-
return google_generative_ai_inputs, create_input_fields_dict(google_generative_ai_inputs, "")
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
def _get_openai_inputs_and_fields():
|
|
105
|
-
try:
|
|
106
|
-
from langflow.components.openai.openai_chat_model import OpenAIModelComponent
|
|
107
|
-
|
|
108
|
-
openai_inputs = get_filtered_inputs(OpenAIModelComponent)
|
|
109
|
-
except ImportError as e:
|
|
110
|
-
msg = "OpenAI is not installed. Please install it with `pip install langchain-openai`."
|
|
111
|
-
raise ImportError(msg) from e
|
|
112
|
-
return openai_inputs, create_input_fields_dict(openai_inputs, "")
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
def _get_azure_inputs_and_fields():
|
|
116
|
-
try:
|
|
117
|
-
from langflow.components.azure.azure_openai import AzureChatOpenAIComponent
|
|
118
|
-
|
|
119
|
-
azure_inputs = get_filtered_inputs(AzureChatOpenAIComponent)
|
|
120
|
-
except ImportError as e:
|
|
121
|
-
msg = "Azure OpenAI is not installed. Please install it with `pip install langchain-azure-openai`."
|
|
122
|
-
raise ImportError(msg) from e
|
|
123
|
-
return azure_inputs, create_input_fields_dict(azure_inputs, "")
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
def _get_groq_inputs_and_fields():
|
|
127
|
-
try:
|
|
128
|
-
from langflow.components.groq.groq import GroqModel
|
|
129
|
-
|
|
130
|
-
groq_inputs = get_filtered_inputs(GroqModel)
|
|
131
|
-
except ImportError as e:
|
|
132
|
-
msg = "Groq is not installed. Please install it with `pip install langchain-groq`."
|
|
133
|
-
raise ImportError(msg) from e
|
|
134
|
-
return groq_inputs, create_input_fields_dict(groq_inputs, "")
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
def _get_anthropic_inputs_and_fields():
|
|
138
|
-
try:
|
|
139
|
-
from langflow.components.anthropic.anthropic import AnthropicModelComponent
|
|
140
|
-
|
|
141
|
-
anthropic_inputs = get_filtered_inputs(AnthropicModelComponent)
|
|
142
|
-
except ImportError as e:
|
|
143
|
-
msg = "Anthropic is not installed. Please install it with `pip install langchain-anthropic`."
|
|
144
|
-
raise ImportError(msg) from e
|
|
145
|
-
return anthropic_inputs, create_input_fields_dict(anthropic_inputs, "")
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
def _get_nvidia_inputs_and_fields():
|
|
149
|
-
try:
|
|
150
|
-
from langflow.components.nvidia.nvidia import NVIDIAModelComponent
|
|
151
|
-
|
|
152
|
-
nvidia_inputs = get_filtered_inputs(NVIDIAModelComponent)
|
|
153
|
-
except ImportError as e:
|
|
154
|
-
msg = "NVIDIA is not installed. Please install it with `pip install langchain-nvidia`."
|
|
155
|
-
raise ImportError(msg) from e
|
|
156
|
-
return nvidia_inputs, create_input_fields_dict(nvidia_inputs, "")
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
def _get_amazon_bedrock_inputs_and_fields():
|
|
160
|
-
try:
|
|
161
|
-
from langflow.components.amazon.amazon_bedrock_model import AmazonBedrockComponent
|
|
162
|
-
|
|
163
|
-
amazon_bedrock_inputs = get_filtered_inputs(AmazonBedrockComponent)
|
|
164
|
-
except ImportError as e:
|
|
165
|
-
msg = "Amazon Bedrock is not installed. Please install it with `pip install langchain-amazon-bedrock`."
|
|
166
|
-
raise ImportError(msg) from e
|
|
167
|
-
return amazon_bedrock_inputs, create_input_fields_dict(amazon_bedrock_inputs, "")
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
def _get_sambanova_inputs_and_fields():
|
|
171
|
-
try:
|
|
172
|
-
from langflow.components.sambanova.sambanova import SambaNovaComponent
|
|
173
|
-
|
|
174
|
-
sambanova_inputs = get_filtered_inputs(SambaNovaComponent)
|
|
175
|
-
except ImportError as e:
|
|
176
|
-
msg = "SambaNova is not installed. Please install it with `pip install langchain-sambanova`."
|
|
177
|
-
raise ImportError(msg) from e
|
|
178
|
-
return sambanova_inputs, create_input_fields_dict(sambanova_inputs, "")
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
MODEL_PROVIDERS_DICT: dict[str, ModelProvidersDict] = {}
|
|
182
|
-
|
|
183
|
-
# Try to add each provider
|
|
184
|
-
try:
|
|
185
|
-
openai_inputs, openai_fields = _get_openai_inputs_and_fields()
|
|
186
|
-
MODEL_PROVIDERS_DICT["OpenAI"] = {
|
|
187
|
-
"fields": openai_fields,
|
|
188
|
-
"inputs": openai_inputs,
|
|
189
|
-
"prefix": "",
|
|
190
|
-
"component_class": OpenAIModelComponent(),
|
|
191
|
-
"icon": OpenAIModelComponent.icon,
|
|
192
|
-
"is_active": True,
|
|
193
|
-
}
|
|
194
|
-
except ImportError:
|
|
195
|
-
pass
|
|
196
|
-
|
|
197
|
-
try:
|
|
198
|
-
azure_inputs, azure_fields = _get_azure_inputs_and_fields()
|
|
199
|
-
MODEL_PROVIDERS_DICT["Azure OpenAI"] = {
|
|
200
|
-
"fields": azure_fields,
|
|
201
|
-
"inputs": azure_inputs,
|
|
202
|
-
"prefix": "",
|
|
203
|
-
"component_class": AzureChatOpenAIComponent(),
|
|
204
|
-
"icon": AzureChatOpenAIComponent.icon,
|
|
205
|
-
"is_active": False,
|
|
206
|
-
}
|
|
207
|
-
except ImportError:
|
|
208
|
-
pass
|
|
209
|
-
|
|
210
|
-
try:
|
|
211
|
-
groq_inputs, groq_fields = _get_groq_inputs_and_fields()
|
|
212
|
-
MODEL_PROVIDERS_DICT["Groq"] = {
|
|
213
|
-
"fields": groq_fields,
|
|
214
|
-
"inputs": groq_inputs,
|
|
215
|
-
"prefix": "",
|
|
216
|
-
"component_class": GroqModel(),
|
|
217
|
-
"icon": GroqModel.icon,
|
|
218
|
-
"is_active": True,
|
|
219
|
-
}
|
|
220
|
-
except ImportError:
|
|
221
|
-
pass
|
|
222
|
-
|
|
223
|
-
try:
|
|
224
|
-
anthropic_inputs, anthropic_fields = _get_anthropic_inputs_and_fields()
|
|
225
|
-
MODEL_PROVIDERS_DICT["Anthropic"] = {
|
|
226
|
-
"fields": anthropic_fields,
|
|
227
|
-
"inputs": anthropic_inputs,
|
|
228
|
-
"prefix": "",
|
|
229
|
-
"component_class": AnthropicModelComponent(),
|
|
230
|
-
"icon": AnthropicModelComponent.icon,
|
|
231
|
-
"is_active": True,
|
|
232
|
-
}
|
|
233
|
-
except ImportError:
|
|
234
|
-
pass
|
|
235
|
-
|
|
236
|
-
try:
|
|
237
|
-
nvidia_inputs, nvidia_fields = _get_nvidia_inputs_and_fields()
|
|
238
|
-
MODEL_PROVIDERS_DICT["NVIDIA"] = {
|
|
239
|
-
"fields": nvidia_fields,
|
|
240
|
-
"inputs": nvidia_inputs,
|
|
241
|
-
"prefix": "",
|
|
242
|
-
"component_class": NVIDIAModelComponent(),
|
|
243
|
-
"icon": NVIDIAModelComponent.icon,
|
|
244
|
-
"is_active": False,
|
|
245
|
-
}
|
|
246
|
-
except ImportError:
|
|
247
|
-
pass
|
|
248
|
-
|
|
249
|
-
try:
|
|
250
|
-
bedrock_inputs, bedrock_fields = _get_amazon_bedrock_inputs_and_fields()
|
|
251
|
-
MODEL_PROVIDERS_DICT["Amazon Bedrock"] = {
|
|
252
|
-
"fields": bedrock_fields,
|
|
253
|
-
"inputs": bedrock_inputs,
|
|
254
|
-
"prefix": "",
|
|
255
|
-
"component_class": AmazonBedrockComponent(),
|
|
256
|
-
"icon": AmazonBedrockComponent.icon,
|
|
257
|
-
"is_active": False,
|
|
258
|
-
}
|
|
259
|
-
except ImportError:
|
|
260
|
-
pass
|
|
261
|
-
|
|
262
|
-
try:
|
|
263
|
-
google_generative_ai_inputs, google_generative_ai_fields = _get_google_generative_ai_inputs_and_fields()
|
|
264
|
-
MODEL_PROVIDERS_DICT["Google Generative AI"] = {
|
|
265
|
-
"fields": google_generative_ai_fields,
|
|
266
|
-
"inputs": google_generative_ai_inputs,
|
|
267
|
-
"prefix": "",
|
|
268
|
-
"component_class": GoogleGenerativeAIComponent(),
|
|
269
|
-
"icon": GoogleGenerativeAIComponent.icon,
|
|
270
|
-
"is_active": True,
|
|
271
|
-
}
|
|
272
|
-
except ImportError:
|
|
273
|
-
pass
|
|
274
|
-
|
|
275
|
-
try:
|
|
276
|
-
sambanova_inputs, sambanova_fields = _get_sambanova_inputs_and_fields()
|
|
277
|
-
MODEL_PROVIDERS_DICT["SambaNova"] = {
|
|
278
|
-
"fields": sambanova_fields,
|
|
279
|
-
"inputs": sambanova_inputs,
|
|
280
|
-
"prefix": "",
|
|
281
|
-
"component_class": SambaNovaComponent(),
|
|
282
|
-
"icon": SambaNovaComponent.icon,
|
|
283
|
-
"is_active": False,
|
|
284
|
-
}
|
|
285
|
-
except ImportError:
|
|
286
|
-
pass
|
|
287
|
-
|
|
288
|
-
# Expose only active providers ----------------------------------------------
|
|
289
|
-
ACTIVE_MODEL_PROVIDERS_DICT: dict[str, ModelProvidersDict] = {
|
|
290
|
-
name: prov for name, prov in MODEL_PROVIDERS_DICT.items() if prov.get("is_active", True)
|
|
291
|
-
}
|
|
292
|
-
|
|
293
|
-
MODEL_PROVIDERS: list[str] = list(ACTIVE_MODEL_PROVIDERS_DICT.keys())
|
|
294
|
-
|
|
295
|
-
ALL_PROVIDER_FIELDS: list[str] = [field for prov in ACTIVE_MODEL_PROVIDERS_DICT.values() for field in prov["fields"]]
|
|
296
|
-
|
|
297
|
-
MODEL_DYNAMIC_UPDATE_FIELDS = ["api_key", "model", "tool_model_enabled", "base_url", "model_name"]
|
|
298
|
-
|
|
299
|
-
MODELS_METADATA = {name: {"icon": prov["icon"]} for name, prov in ACTIVE_MODEL_PROVIDERS_DICT.items()}
|