lfx-nightly 0.2.0.dev25__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.

Potentially problematic release.


This version of lfx-nightly might be problematic. Click here for more details.

Files changed (769) hide show
  1. lfx/__init__.py +0 -0
  2. lfx/__main__.py +25 -0
  3. lfx/_assets/component_index.json +1 -0
  4. lfx/base/__init__.py +0 -0
  5. lfx/base/agents/__init__.py +0 -0
  6. lfx/base/agents/agent.py +375 -0
  7. lfx/base/agents/altk_base_agent.py +380 -0
  8. lfx/base/agents/altk_tool_wrappers.py +565 -0
  9. lfx/base/agents/callback.py +130 -0
  10. lfx/base/agents/context.py +109 -0
  11. lfx/base/agents/crewai/__init__.py +0 -0
  12. lfx/base/agents/crewai/crew.py +231 -0
  13. lfx/base/agents/crewai/tasks.py +12 -0
  14. lfx/base/agents/default_prompts.py +23 -0
  15. lfx/base/agents/errors.py +15 -0
  16. lfx/base/agents/events.py +430 -0
  17. lfx/base/agents/utils.py +237 -0
  18. lfx/base/astra_assistants/__init__.py +0 -0
  19. lfx/base/astra_assistants/util.py +171 -0
  20. lfx/base/chains/__init__.py +0 -0
  21. lfx/base/chains/model.py +19 -0
  22. lfx/base/composio/__init__.py +0 -0
  23. lfx/base/composio/composio_base.py +2584 -0
  24. lfx/base/compressors/__init__.py +0 -0
  25. lfx/base/compressors/model.py +60 -0
  26. lfx/base/constants.py +46 -0
  27. lfx/base/curl/__init__.py +0 -0
  28. lfx/base/curl/parse.py +188 -0
  29. lfx/base/data/__init__.py +5 -0
  30. lfx/base/data/base_file.py +810 -0
  31. lfx/base/data/docling_utils.py +338 -0
  32. lfx/base/data/storage_utils.py +192 -0
  33. lfx/base/data/utils.py +362 -0
  34. lfx/base/datastax/__init__.py +5 -0
  35. lfx/base/datastax/astradb_base.py +896 -0
  36. lfx/base/document_transformers/__init__.py +0 -0
  37. lfx/base/document_transformers/model.py +43 -0
  38. lfx/base/embeddings/__init__.py +0 -0
  39. lfx/base/embeddings/aiml_embeddings.py +62 -0
  40. lfx/base/embeddings/embeddings_class.py +113 -0
  41. lfx/base/embeddings/model.py +26 -0
  42. lfx/base/flow_processing/__init__.py +0 -0
  43. lfx/base/flow_processing/utils.py +86 -0
  44. lfx/base/huggingface/__init__.py +0 -0
  45. lfx/base/huggingface/model_bridge.py +133 -0
  46. lfx/base/io/__init__.py +0 -0
  47. lfx/base/io/chat.py +21 -0
  48. lfx/base/io/text.py +22 -0
  49. lfx/base/knowledge_bases/__init__.py +3 -0
  50. lfx/base/knowledge_bases/knowledge_base_utils.py +137 -0
  51. lfx/base/langchain_utilities/__init__.py +0 -0
  52. lfx/base/langchain_utilities/model.py +35 -0
  53. lfx/base/langchain_utilities/spider_constants.py +1 -0
  54. lfx/base/langwatch/__init__.py +0 -0
  55. lfx/base/langwatch/utils.py +18 -0
  56. lfx/base/mcp/__init__.py +0 -0
  57. lfx/base/mcp/constants.py +2 -0
  58. lfx/base/mcp/util.py +1659 -0
  59. lfx/base/memory/__init__.py +0 -0
  60. lfx/base/memory/memory.py +49 -0
  61. lfx/base/memory/model.py +38 -0
  62. lfx/base/models/__init__.py +3 -0
  63. lfx/base/models/aiml_constants.py +51 -0
  64. lfx/base/models/anthropic_constants.py +51 -0
  65. lfx/base/models/aws_constants.py +151 -0
  66. lfx/base/models/chat_result.py +76 -0
  67. lfx/base/models/cometapi_constants.py +54 -0
  68. lfx/base/models/google_generative_ai_constants.py +70 -0
  69. lfx/base/models/google_generative_ai_model.py +38 -0
  70. lfx/base/models/groq_constants.py +150 -0
  71. lfx/base/models/groq_model_discovery.py +265 -0
  72. lfx/base/models/model.py +375 -0
  73. lfx/base/models/model_input_constants.py +378 -0
  74. lfx/base/models/model_metadata.py +41 -0
  75. lfx/base/models/model_utils.py +108 -0
  76. lfx/base/models/novita_constants.py +35 -0
  77. lfx/base/models/ollama_constants.py +52 -0
  78. lfx/base/models/openai_constants.py +129 -0
  79. lfx/base/models/sambanova_constants.py +18 -0
  80. lfx/base/models/watsonx_constants.py +36 -0
  81. lfx/base/processing/__init__.py +0 -0
  82. lfx/base/prompts/__init__.py +0 -0
  83. lfx/base/prompts/api_utils.py +224 -0
  84. lfx/base/prompts/utils.py +61 -0
  85. lfx/base/textsplitters/__init__.py +0 -0
  86. lfx/base/textsplitters/model.py +28 -0
  87. lfx/base/tools/__init__.py +0 -0
  88. lfx/base/tools/base.py +26 -0
  89. lfx/base/tools/component_tool.py +325 -0
  90. lfx/base/tools/constants.py +49 -0
  91. lfx/base/tools/flow_tool.py +132 -0
  92. lfx/base/tools/run_flow.py +698 -0
  93. lfx/base/vectorstores/__init__.py +0 -0
  94. lfx/base/vectorstores/model.py +193 -0
  95. lfx/base/vectorstores/utils.py +22 -0
  96. lfx/base/vectorstores/vector_store_connection_decorator.py +52 -0
  97. lfx/cli/__init__.py +5 -0
  98. lfx/cli/commands.py +327 -0
  99. lfx/cli/common.py +650 -0
  100. lfx/cli/run.py +506 -0
  101. lfx/cli/script_loader.py +289 -0
  102. lfx/cli/serve_app.py +546 -0
  103. lfx/cli/validation.py +69 -0
  104. lfx/components/FAISS/__init__.py +34 -0
  105. lfx/components/FAISS/faiss.py +111 -0
  106. lfx/components/Notion/__init__.py +19 -0
  107. lfx/components/Notion/add_content_to_page.py +269 -0
  108. lfx/components/Notion/create_page.py +94 -0
  109. lfx/components/Notion/list_database_properties.py +68 -0
  110. lfx/components/Notion/list_pages.py +122 -0
  111. lfx/components/Notion/list_users.py +77 -0
  112. lfx/components/Notion/page_content_viewer.py +93 -0
  113. lfx/components/Notion/search.py +111 -0
  114. lfx/components/Notion/update_page_property.py +114 -0
  115. lfx/components/__init__.py +428 -0
  116. lfx/components/_importing.py +42 -0
  117. lfx/components/agentql/__init__.py +3 -0
  118. lfx/components/agentql/agentql_api.py +151 -0
  119. lfx/components/aiml/__init__.py +37 -0
  120. lfx/components/aiml/aiml.py +115 -0
  121. lfx/components/aiml/aiml_embeddings.py +37 -0
  122. lfx/components/altk/__init__.py +34 -0
  123. lfx/components/altk/altk_agent.py +193 -0
  124. lfx/components/amazon/__init__.py +36 -0
  125. lfx/components/amazon/amazon_bedrock_converse.py +195 -0
  126. lfx/components/amazon/amazon_bedrock_embedding.py +109 -0
  127. lfx/components/amazon/amazon_bedrock_model.py +130 -0
  128. lfx/components/amazon/s3_bucket_uploader.py +211 -0
  129. lfx/components/anthropic/__init__.py +34 -0
  130. lfx/components/anthropic/anthropic.py +187 -0
  131. lfx/components/apify/__init__.py +5 -0
  132. lfx/components/apify/apify_actor.py +325 -0
  133. lfx/components/arxiv/__init__.py +3 -0
  134. lfx/components/arxiv/arxiv.py +169 -0
  135. lfx/components/assemblyai/__init__.py +46 -0
  136. lfx/components/assemblyai/assemblyai_get_subtitles.py +83 -0
  137. lfx/components/assemblyai/assemblyai_lemur.py +183 -0
  138. lfx/components/assemblyai/assemblyai_list_transcripts.py +95 -0
  139. lfx/components/assemblyai/assemblyai_poll_transcript.py +72 -0
  140. lfx/components/assemblyai/assemblyai_start_transcript.py +188 -0
  141. lfx/components/azure/__init__.py +37 -0
  142. lfx/components/azure/azure_openai.py +95 -0
  143. lfx/components/azure/azure_openai_embeddings.py +83 -0
  144. lfx/components/baidu/__init__.py +32 -0
  145. lfx/components/baidu/baidu_qianfan_chat.py +113 -0
  146. lfx/components/bing/__init__.py +3 -0
  147. lfx/components/bing/bing_search_api.py +61 -0
  148. lfx/components/cassandra/__init__.py +40 -0
  149. lfx/components/cassandra/cassandra.py +264 -0
  150. lfx/components/cassandra/cassandra_chat.py +92 -0
  151. lfx/components/cassandra/cassandra_graph.py +238 -0
  152. lfx/components/chains/__init__.py +3 -0
  153. lfx/components/chroma/__init__.py +34 -0
  154. lfx/components/chroma/chroma.py +169 -0
  155. lfx/components/cleanlab/__init__.py +40 -0
  156. lfx/components/cleanlab/cleanlab_evaluator.py +155 -0
  157. lfx/components/cleanlab/cleanlab_rag_evaluator.py +254 -0
  158. lfx/components/cleanlab/cleanlab_remediator.py +131 -0
  159. lfx/components/clickhouse/__init__.py +34 -0
  160. lfx/components/clickhouse/clickhouse.py +135 -0
  161. lfx/components/cloudflare/__init__.py +32 -0
  162. lfx/components/cloudflare/cloudflare.py +81 -0
  163. lfx/components/cohere/__init__.py +40 -0
  164. lfx/components/cohere/cohere_embeddings.py +81 -0
  165. lfx/components/cohere/cohere_models.py +46 -0
  166. lfx/components/cohere/cohere_rerank.py +51 -0
  167. lfx/components/cometapi/__init__.py +32 -0
  168. lfx/components/cometapi/cometapi.py +166 -0
  169. lfx/components/composio/__init__.py +222 -0
  170. lfx/components/composio/agentql_composio.py +11 -0
  171. lfx/components/composio/agiled_composio.py +11 -0
  172. lfx/components/composio/airtable_composio.py +11 -0
  173. lfx/components/composio/apollo_composio.py +11 -0
  174. lfx/components/composio/asana_composio.py +11 -0
  175. lfx/components/composio/attio_composio.py +11 -0
  176. lfx/components/composio/bitbucket_composio.py +11 -0
  177. lfx/components/composio/bolna_composio.py +11 -0
  178. lfx/components/composio/brightdata_composio.py +11 -0
  179. lfx/components/composio/calendly_composio.py +11 -0
  180. lfx/components/composio/canva_composio.py +11 -0
  181. lfx/components/composio/canvas_composio.py +11 -0
  182. lfx/components/composio/coda_composio.py +11 -0
  183. lfx/components/composio/composio_api.py +278 -0
  184. lfx/components/composio/contentful_composio.py +11 -0
  185. lfx/components/composio/digicert_composio.py +11 -0
  186. lfx/components/composio/discord_composio.py +11 -0
  187. lfx/components/composio/dropbox_compnent.py +11 -0
  188. lfx/components/composio/elevenlabs_composio.py +11 -0
  189. lfx/components/composio/exa_composio.py +11 -0
  190. lfx/components/composio/figma_composio.py +11 -0
  191. lfx/components/composio/finage_composio.py +11 -0
  192. lfx/components/composio/firecrawl_composio.py +11 -0
  193. lfx/components/composio/fireflies_composio.py +11 -0
  194. lfx/components/composio/fixer_composio.py +11 -0
  195. lfx/components/composio/flexisign_composio.py +11 -0
  196. lfx/components/composio/freshdesk_composio.py +11 -0
  197. lfx/components/composio/github_composio.py +11 -0
  198. lfx/components/composio/gmail_composio.py +38 -0
  199. lfx/components/composio/googlebigquery_composio.py +11 -0
  200. lfx/components/composio/googlecalendar_composio.py +11 -0
  201. lfx/components/composio/googleclassroom_composio.py +11 -0
  202. lfx/components/composio/googledocs_composio.py +11 -0
  203. lfx/components/composio/googlemeet_composio.py +11 -0
  204. lfx/components/composio/googlesheets_composio.py +11 -0
  205. lfx/components/composio/googletasks_composio.py +8 -0
  206. lfx/components/composio/heygen_composio.py +11 -0
  207. lfx/components/composio/instagram_composio.py +11 -0
  208. lfx/components/composio/jira_composio.py +11 -0
  209. lfx/components/composio/jotform_composio.py +11 -0
  210. lfx/components/composio/klaviyo_composio.py +11 -0
  211. lfx/components/composio/linear_composio.py +11 -0
  212. lfx/components/composio/listennotes_composio.py +11 -0
  213. lfx/components/composio/mem0_composio.py +11 -0
  214. lfx/components/composio/miro_composio.py +11 -0
  215. lfx/components/composio/missive_composio.py +11 -0
  216. lfx/components/composio/notion_composio.py +11 -0
  217. lfx/components/composio/onedrive_composio.py +11 -0
  218. lfx/components/composio/outlook_composio.py +11 -0
  219. lfx/components/composio/pandadoc_composio.py +11 -0
  220. lfx/components/composio/peopledatalabs_composio.py +11 -0
  221. lfx/components/composio/perplexityai_composio.py +11 -0
  222. lfx/components/composio/reddit_composio.py +11 -0
  223. lfx/components/composio/serpapi_composio.py +11 -0
  224. lfx/components/composio/slack_composio.py +11 -0
  225. lfx/components/composio/slackbot_composio.py +11 -0
  226. lfx/components/composio/snowflake_composio.py +11 -0
  227. lfx/components/composio/supabase_composio.py +11 -0
  228. lfx/components/composio/tavily_composio.py +11 -0
  229. lfx/components/composio/timelinesai_composio.py +11 -0
  230. lfx/components/composio/todoist_composio.py +11 -0
  231. lfx/components/composio/wrike_composio.py +11 -0
  232. lfx/components/composio/youtube_composio.py +11 -0
  233. lfx/components/confluence/__init__.py +3 -0
  234. lfx/components/confluence/confluence.py +84 -0
  235. lfx/components/couchbase/__init__.py +34 -0
  236. lfx/components/couchbase/couchbase.py +102 -0
  237. lfx/components/crewai/__init__.py +49 -0
  238. lfx/components/crewai/crewai.py +108 -0
  239. lfx/components/crewai/hierarchical_crew.py +47 -0
  240. lfx/components/crewai/hierarchical_task.py +45 -0
  241. lfx/components/crewai/sequential_crew.py +53 -0
  242. lfx/components/crewai/sequential_task.py +74 -0
  243. lfx/components/crewai/sequential_task_agent.py +144 -0
  244. lfx/components/cuga/__init__.py +34 -0
  245. lfx/components/cuga/cuga_agent.py +730 -0
  246. lfx/components/custom_component/__init__.py +34 -0
  247. lfx/components/custom_component/custom_component.py +31 -0
  248. lfx/components/data/__init__.py +114 -0
  249. lfx/components/data_source/__init__.py +58 -0
  250. lfx/components/data_source/api_request.py +577 -0
  251. lfx/components/data_source/csv_to_data.py +101 -0
  252. lfx/components/data_source/json_to_data.py +106 -0
  253. lfx/components/data_source/mock_data.py +398 -0
  254. lfx/components/data_source/news_search.py +166 -0
  255. lfx/components/data_source/rss.py +71 -0
  256. lfx/components/data_source/sql_executor.py +101 -0
  257. lfx/components/data_source/url.py +311 -0
  258. lfx/components/data_source/web_search.py +326 -0
  259. lfx/components/datastax/__init__.py +76 -0
  260. lfx/components/datastax/astradb_assistant_manager.py +307 -0
  261. lfx/components/datastax/astradb_chatmemory.py +40 -0
  262. lfx/components/datastax/astradb_cql.py +288 -0
  263. lfx/components/datastax/astradb_graph.py +217 -0
  264. lfx/components/datastax/astradb_tool.py +378 -0
  265. lfx/components/datastax/astradb_vectorize.py +122 -0
  266. lfx/components/datastax/astradb_vectorstore.py +449 -0
  267. lfx/components/datastax/create_assistant.py +59 -0
  268. lfx/components/datastax/create_thread.py +33 -0
  269. lfx/components/datastax/dotenv.py +36 -0
  270. lfx/components/datastax/get_assistant.py +38 -0
  271. lfx/components/datastax/getenvvar.py +31 -0
  272. lfx/components/datastax/graph_rag.py +141 -0
  273. lfx/components/datastax/hcd.py +315 -0
  274. lfx/components/datastax/list_assistants.py +26 -0
  275. lfx/components/datastax/run.py +90 -0
  276. lfx/components/deactivated/__init__.py +15 -0
  277. lfx/components/deactivated/amazon_kendra.py +66 -0
  278. lfx/components/deactivated/chat_litellm_model.py +158 -0
  279. lfx/components/deactivated/code_block_extractor.py +26 -0
  280. lfx/components/deactivated/documents_to_data.py +22 -0
  281. lfx/components/deactivated/embed.py +16 -0
  282. lfx/components/deactivated/extract_key_from_data.py +46 -0
  283. lfx/components/deactivated/json_document_builder.py +57 -0
  284. lfx/components/deactivated/list_flows.py +20 -0
  285. lfx/components/deactivated/mcp_sse.py +61 -0
  286. lfx/components/deactivated/mcp_stdio.py +62 -0
  287. lfx/components/deactivated/merge_data.py +93 -0
  288. lfx/components/deactivated/message.py +37 -0
  289. lfx/components/deactivated/metal.py +54 -0
  290. lfx/components/deactivated/multi_query.py +59 -0
  291. lfx/components/deactivated/retriever.py +43 -0
  292. lfx/components/deactivated/selective_passthrough.py +77 -0
  293. lfx/components/deactivated/should_run_next.py +40 -0
  294. lfx/components/deactivated/split_text.py +63 -0
  295. lfx/components/deactivated/store_message.py +24 -0
  296. lfx/components/deactivated/sub_flow.py +124 -0
  297. lfx/components/deactivated/vectara_self_query.py +76 -0
  298. lfx/components/deactivated/vector_store.py +24 -0
  299. lfx/components/deepseek/__init__.py +34 -0
  300. lfx/components/deepseek/deepseek.py +136 -0
  301. lfx/components/docling/__init__.py +43 -0
  302. lfx/components/docling/chunk_docling_document.py +186 -0
  303. lfx/components/docling/docling_inline.py +238 -0
  304. lfx/components/docling/docling_remote.py +195 -0
  305. lfx/components/docling/export_docling_document.py +117 -0
  306. lfx/components/documentloaders/__init__.py +3 -0
  307. lfx/components/duckduckgo/__init__.py +3 -0
  308. lfx/components/duckduckgo/duck_duck_go_search_run.py +92 -0
  309. lfx/components/elastic/__init__.py +37 -0
  310. lfx/components/elastic/elasticsearch.py +267 -0
  311. lfx/components/elastic/opensearch.py +789 -0
  312. lfx/components/elastic/opensearch_multimodal.py +1575 -0
  313. lfx/components/embeddings/__init__.py +37 -0
  314. lfx/components/embeddings/similarity.py +77 -0
  315. lfx/components/embeddings/text_embedder.py +65 -0
  316. lfx/components/exa/__init__.py +3 -0
  317. lfx/components/exa/exa_search.py +68 -0
  318. lfx/components/files_and_knowledge/__init__.py +47 -0
  319. lfx/components/files_and_knowledge/directory.py +113 -0
  320. lfx/components/files_and_knowledge/file.py +841 -0
  321. lfx/components/files_and_knowledge/ingestion.py +694 -0
  322. lfx/components/files_and_knowledge/retrieval.py +264 -0
  323. lfx/components/files_and_knowledge/save_file.py +746 -0
  324. lfx/components/firecrawl/__init__.py +43 -0
  325. lfx/components/firecrawl/firecrawl_crawl_api.py +88 -0
  326. lfx/components/firecrawl/firecrawl_extract_api.py +136 -0
  327. lfx/components/firecrawl/firecrawl_map_api.py +89 -0
  328. lfx/components/firecrawl/firecrawl_scrape_api.py +73 -0
  329. lfx/components/flow_controls/__init__.py +58 -0
  330. lfx/components/flow_controls/conditional_router.py +208 -0
  331. lfx/components/flow_controls/data_conditional_router.py +126 -0
  332. lfx/components/flow_controls/flow_tool.py +111 -0
  333. lfx/components/flow_controls/listen.py +29 -0
  334. lfx/components/flow_controls/loop.py +163 -0
  335. lfx/components/flow_controls/notify.py +88 -0
  336. lfx/components/flow_controls/pass_message.py +36 -0
  337. lfx/components/flow_controls/run_flow.py +108 -0
  338. lfx/components/flow_controls/sub_flow.py +115 -0
  339. lfx/components/git/__init__.py +4 -0
  340. lfx/components/git/git.py +262 -0
  341. lfx/components/git/gitextractor.py +196 -0
  342. lfx/components/glean/__init__.py +3 -0
  343. lfx/components/glean/glean_search_api.py +173 -0
  344. lfx/components/google/__init__.py +17 -0
  345. lfx/components/google/gmail.py +193 -0
  346. lfx/components/google/google_bq_sql_executor.py +157 -0
  347. lfx/components/google/google_drive.py +92 -0
  348. lfx/components/google/google_drive_search.py +152 -0
  349. lfx/components/google/google_generative_ai.py +144 -0
  350. lfx/components/google/google_generative_ai_embeddings.py +141 -0
  351. lfx/components/google/google_oauth_token.py +89 -0
  352. lfx/components/google/google_search_api_core.py +68 -0
  353. lfx/components/google/google_serper_api_core.py +74 -0
  354. lfx/components/groq/__init__.py +34 -0
  355. lfx/components/groq/groq.py +143 -0
  356. lfx/components/helpers/__init__.py +154 -0
  357. lfx/components/homeassistant/__init__.py +7 -0
  358. lfx/components/homeassistant/home_assistant_control.py +152 -0
  359. lfx/components/homeassistant/list_home_assistant_states.py +137 -0
  360. lfx/components/huggingface/__init__.py +37 -0
  361. lfx/components/huggingface/huggingface.py +199 -0
  362. lfx/components/huggingface/huggingface_inference_api.py +106 -0
  363. lfx/components/ibm/__init__.py +34 -0
  364. lfx/components/ibm/watsonx.py +207 -0
  365. lfx/components/ibm/watsonx_embeddings.py +135 -0
  366. lfx/components/icosacomputing/__init__.py +5 -0
  367. lfx/components/icosacomputing/combinatorial_reasoner.py +84 -0
  368. lfx/components/input_output/__init__.py +40 -0
  369. lfx/components/input_output/chat.py +109 -0
  370. lfx/components/input_output/chat_output.py +184 -0
  371. lfx/components/input_output/text.py +27 -0
  372. lfx/components/input_output/text_output.py +29 -0
  373. lfx/components/input_output/webhook.py +56 -0
  374. lfx/components/jigsawstack/__init__.py +23 -0
  375. lfx/components/jigsawstack/ai_scrape.py +126 -0
  376. lfx/components/jigsawstack/ai_web_search.py +136 -0
  377. lfx/components/jigsawstack/file_read.py +115 -0
  378. lfx/components/jigsawstack/file_upload.py +94 -0
  379. lfx/components/jigsawstack/image_generation.py +205 -0
  380. lfx/components/jigsawstack/nsfw.py +60 -0
  381. lfx/components/jigsawstack/object_detection.py +124 -0
  382. lfx/components/jigsawstack/sentiment.py +112 -0
  383. lfx/components/jigsawstack/text_to_sql.py +90 -0
  384. lfx/components/jigsawstack/text_translate.py +77 -0
  385. lfx/components/jigsawstack/vocr.py +107 -0
  386. lfx/components/knowledge_bases/__init__.py +89 -0
  387. lfx/components/langchain_utilities/__init__.py +109 -0
  388. lfx/components/langchain_utilities/character.py +53 -0
  389. lfx/components/langchain_utilities/conversation.py +59 -0
  390. lfx/components/langchain_utilities/csv_agent.py +175 -0
  391. lfx/components/langchain_utilities/fake_embeddings.py +26 -0
  392. lfx/components/langchain_utilities/html_link_extractor.py +35 -0
  393. lfx/components/langchain_utilities/json_agent.py +100 -0
  394. lfx/components/langchain_utilities/langchain_hub.py +126 -0
  395. lfx/components/langchain_utilities/language_recursive.py +49 -0
  396. lfx/components/langchain_utilities/language_semantic.py +138 -0
  397. lfx/components/langchain_utilities/llm_checker.py +39 -0
  398. lfx/components/langchain_utilities/llm_math.py +42 -0
  399. lfx/components/langchain_utilities/natural_language.py +61 -0
  400. lfx/components/langchain_utilities/openai_tools.py +53 -0
  401. lfx/components/langchain_utilities/openapi.py +48 -0
  402. lfx/components/langchain_utilities/recursive_character.py +60 -0
  403. lfx/components/langchain_utilities/retrieval_qa.py +83 -0
  404. lfx/components/langchain_utilities/runnable_executor.py +137 -0
  405. lfx/components/langchain_utilities/self_query.py +80 -0
  406. lfx/components/langchain_utilities/spider.py +142 -0
  407. lfx/components/langchain_utilities/sql.py +40 -0
  408. lfx/components/langchain_utilities/sql_database.py +35 -0
  409. lfx/components/langchain_utilities/sql_generator.py +78 -0
  410. lfx/components/langchain_utilities/tool_calling.py +59 -0
  411. lfx/components/langchain_utilities/vector_store_info.py +49 -0
  412. lfx/components/langchain_utilities/vector_store_router.py +33 -0
  413. lfx/components/langchain_utilities/xml_agent.py +71 -0
  414. lfx/components/langwatch/__init__.py +3 -0
  415. lfx/components/langwatch/langwatch.py +278 -0
  416. lfx/components/link_extractors/__init__.py +3 -0
  417. lfx/components/llm_operations/__init__.py +46 -0
  418. lfx/components/llm_operations/batch_run.py +205 -0
  419. lfx/components/llm_operations/lambda_filter.py +218 -0
  420. lfx/components/llm_operations/llm_conditional_router.py +421 -0
  421. lfx/components/llm_operations/llm_selector.py +499 -0
  422. lfx/components/llm_operations/structured_output.py +244 -0
  423. lfx/components/lmstudio/__init__.py +34 -0
  424. lfx/components/lmstudio/lmstudioembeddings.py +89 -0
  425. lfx/components/lmstudio/lmstudiomodel.py +133 -0
  426. lfx/components/logic/__init__.py +181 -0
  427. lfx/components/maritalk/__init__.py +32 -0
  428. lfx/components/maritalk/maritalk.py +52 -0
  429. lfx/components/mem0/__init__.py +3 -0
  430. lfx/components/mem0/mem0_chat_memory.py +147 -0
  431. lfx/components/milvus/__init__.py +34 -0
  432. lfx/components/milvus/milvus.py +115 -0
  433. lfx/components/mistral/__init__.py +37 -0
  434. lfx/components/mistral/mistral.py +114 -0
  435. lfx/components/mistral/mistral_embeddings.py +58 -0
  436. lfx/components/models/__init__.py +89 -0
  437. lfx/components/models_and_agents/__init__.py +49 -0
  438. lfx/components/models_and_agents/agent.py +644 -0
  439. lfx/components/models_and_agents/embedding_model.py +423 -0
  440. lfx/components/models_and_agents/language_model.py +398 -0
  441. lfx/components/models_and_agents/mcp_component.py +594 -0
  442. lfx/components/models_and_agents/memory.py +268 -0
  443. lfx/components/models_and_agents/prompt.py +67 -0
  444. lfx/components/mongodb/__init__.py +34 -0
  445. lfx/components/mongodb/mongodb_atlas.py +213 -0
  446. lfx/components/needle/__init__.py +3 -0
  447. lfx/components/needle/needle.py +104 -0
  448. lfx/components/notdiamond/__init__.py +34 -0
  449. lfx/components/notdiamond/notdiamond.py +228 -0
  450. lfx/components/novita/__init__.py +32 -0
  451. lfx/components/novita/novita.py +130 -0
  452. lfx/components/nvidia/__init__.py +57 -0
  453. lfx/components/nvidia/nvidia.py +151 -0
  454. lfx/components/nvidia/nvidia_embedding.py +77 -0
  455. lfx/components/nvidia/nvidia_ingest.py +317 -0
  456. lfx/components/nvidia/nvidia_rerank.py +63 -0
  457. lfx/components/nvidia/system_assist.py +65 -0
  458. lfx/components/olivya/__init__.py +3 -0
  459. lfx/components/olivya/olivya.py +116 -0
  460. lfx/components/ollama/__init__.py +37 -0
  461. lfx/components/ollama/ollama.py +548 -0
  462. lfx/components/ollama/ollama_embeddings.py +103 -0
  463. lfx/components/openai/__init__.py +37 -0
  464. lfx/components/openai/openai.py +100 -0
  465. lfx/components/openai/openai_chat_model.py +176 -0
  466. lfx/components/openrouter/__init__.py +32 -0
  467. lfx/components/openrouter/openrouter.py +104 -0
  468. lfx/components/output_parsers/__init__.py +3 -0
  469. lfx/components/perplexity/__init__.py +34 -0
  470. lfx/components/perplexity/perplexity.py +75 -0
  471. lfx/components/pgvector/__init__.py +34 -0
  472. lfx/components/pgvector/pgvector.py +72 -0
  473. lfx/components/pinecone/__init__.py +34 -0
  474. lfx/components/pinecone/pinecone.py +134 -0
  475. lfx/components/processing/__init__.py +72 -0
  476. lfx/components/processing/alter_metadata.py +109 -0
  477. lfx/components/processing/combine_text.py +40 -0
  478. lfx/components/processing/converter.py +248 -0
  479. lfx/components/processing/create_data.py +111 -0
  480. lfx/components/processing/create_list.py +40 -0
  481. lfx/components/processing/data_operations.py +528 -0
  482. lfx/components/processing/data_to_dataframe.py +71 -0
  483. lfx/components/processing/dataframe_operations.py +313 -0
  484. lfx/components/processing/dataframe_to_toolset.py +259 -0
  485. lfx/components/processing/dynamic_create_data.py +357 -0
  486. lfx/components/processing/extract_key.py +54 -0
  487. lfx/components/processing/filter_data.py +43 -0
  488. lfx/components/processing/filter_data_values.py +89 -0
  489. lfx/components/processing/json_cleaner.py +104 -0
  490. lfx/components/processing/merge_data.py +91 -0
  491. lfx/components/processing/message_to_data.py +37 -0
  492. lfx/components/processing/output_parser.py +46 -0
  493. lfx/components/processing/parse_data.py +71 -0
  494. lfx/components/processing/parse_dataframe.py +69 -0
  495. lfx/components/processing/parse_json_data.py +91 -0
  496. lfx/components/processing/parser.py +148 -0
  497. lfx/components/processing/regex.py +83 -0
  498. lfx/components/processing/select_data.py +49 -0
  499. lfx/components/processing/split_text.py +141 -0
  500. lfx/components/processing/store_message.py +91 -0
  501. lfx/components/processing/update_data.py +161 -0
  502. lfx/components/prototypes/__init__.py +35 -0
  503. lfx/components/prototypes/python_function.py +73 -0
  504. lfx/components/qdrant/__init__.py +34 -0
  505. lfx/components/qdrant/qdrant.py +109 -0
  506. lfx/components/redis/__init__.py +37 -0
  507. lfx/components/redis/redis.py +89 -0
  508. lfx/components/redis/redis_chat.py +43 -0
  509. lfx/components/sambanova/__init__.py +32 -0
  510. lfx/components/sambanova/sambanova.py +84 -0
  511. lfx/components/scrapegraph/__init__.py +40 -0
  512. lfx/components/scrapegraph/scrapegraph_markdownify_api.py +64 -0
  513. lfx/components/scrapegraph/scrapegraph_search_api.py +64 -0
  514. lfx/components/scrapegraph/scrapegraph_smart_scraper_api.py +71 -0
  515. lfx/components/searchapi/__init__.py +34 -0
  516. lfx/components/searchapi/search.py +79 -0
  517. lfx/components/serpapi/__init__.py +3 -0
  518. lfx/components/serpapi/serp.py +115 -0
  519. lfx/components/supabase/__init__.py +34 -0
  520. lfx/components/supabase/supabase.py +76 -0
  521. lfx/components/tavily/__init__.py +4 -0
  522. lfx/components/tavily/tavily_extract.py +117 -0
  523. lfx/components/tavily/tavily_search.py +212 -0
  524. lfx/components/textsplitters/__init__.py +3 -0
  525. lfx/components/toolkits/__init__.py +3 -0
  526. lfx/components/tools/__init__.py +66 -0
  527. lfx/components/tools/calculator.py +109 -0
  528. lfx/components/tools/google_search_api.py +45 -0
  529. lfx/components/tools/google_serper_api.py +115 -0
  530. lfx/components/tools/python_code_structured_tool.py +328 -0
  531. lfx/components/tools/python_repl.py +98 -0
  532. lfx/components/tools/search_api.py +88 -0
  533. lfx/components/tools/searxng.py +145 -0
  534. lfx/components/tools/serp_api.py +120 -0
  535. lfx/components/tools/tavily_search_tool.py +345 -0
  536. lfx/components/tools/wikidata_api.py +103 -0
  537. lfx/components/tools/wikipedia_api.py +50 -0
  538. lfx/components/tools/yahoo_finance.py +130 -0
  539. lfx/components/twelvelabs/__init__.py +52 -0
  540. lfx/components/twelvelabs/convert_astra_results.py +84 -0
  541. lfx/components/twelvelabs/pegasus_index.py +311 -0
  542. lfx/components/twelvelabs/split_video.py +301 -0
  543. lfx/components/twelvelabs/text_embeddings.py +57 -0
  544. lfx/components/twelvelabs/twelvelabs_pegasus.py +408 -0
  545. lfx/components/twelvelabs/video_embeddings.py +100 -0
  546. lfx/components/twelvelabs/video_file.py +191 -0
  547. lfx/components/unstructured/__init__.py +3 -0
  548. lfx/components/unstructured/unstructured.py +121 -0
  549. lfx/components/upstash/__init__.py +34 -0
  550. lfx/components/upstash/upstash.py +124 -0
  551. lfx/components/utilities/__init__.py +43 -0
  552. lfx/components/utilities/calculator_core.py +89 -0
  553. lfx/components/utilities/current_date.py +42 -0
  554. lfx/components/utilities/id_generator.py +42 -0
  555. lfx/components/utilities/python_repl_core.py +98 -0
  556. lfx/components/vectara/__init__.py +37 -0
  557. lfx/components/vectara/vectara.py +97 -0
  558. lfx/components/vectara/vectara_rag.py +164 -0
  559. lfx/components/vectorstores/__init__.py +34 -0
  560. lfx/components/vectorstores/local_db.py +270 -0
  561. lfx/components/vertexai/__init__.py +37 -0
  562. lfx/components/vertexai/vertexai.py +71 -0
  563. lfx/components/vertexai/vertexai_embeddings.py +67 -0
  564. lfx/components/vlmrun/__init__.py +34 -0
  565. lfx/components/vlmrun/vlmrun_transcription.py +224 -0
  566. lfx/components/weaviate/__init__.py +34 -0
  567. lfx/components/weaviate/weaviate.py +89 -0
  568. lfx/components/wikipedia/__init__.py +4 -0
  569. lfx/components/wikipedia/wikidata.py +86 -0
  570. lfx/components/wikipedia/wikipedia.py +53 -0
  571. lfx/components/wolframalpha/__init__.py +3 -0
  572. lfx/components/wolframalpha/wolfram_alpha_api.py +54 -0
  573. lfx/components/xai/__init__.py +32 -0
  574. lfx/components/xai/xai.py +167 -0
  575. lfx/components/yahoosearch/__init__.py +3 -0
  576. lfx/components/yahoosearch/yahoo.py +137 -0
  577. lfx/components/youtube/__init__.py +52 -0
  578. lfx/components/youtube/channel.py +227 -0
  579. lfx/components/youtube/comments.py +231 -0
  580. lfx/components/youtube/playlist.py +33 -0
  581. lfx/components/youtube/search.py +120 -0
  582. lfx/components/youtube/trending.py +285 -0
  583. lfx/components/youtube/video_details.py +263 -0
  584. lfx/components/youtube/youtube_transcripts.py +206 -0
  585. lfx/components/zep/__init__.py +3 -0
  586. lfx/components/zep/zep.py +45 -0
  587. lfx/constants.py +6 -0
  588. lfx/custom/__init__.py +7 -0
  589. lfx/custom/attributes.py +87 -0
  590. lfx/custom/code_parser/__init__.py +3 -0
  591. lfx/custom/code_parser/code_parser.py +361 -0
  592. lfx/custom/custom_component/__init__.py +0 -0
  593. lfx/custom/custom_component/base_component.py +128 -0
  594. lfx/custom/custom_component/component.py +1890 -0
  595. lfx/custom/custom_component/component_with_cache.py +8 -0
  596. lfx/custom/custom_component/custom_component.py +650 -0
  597. lfx/custom/dependency_analyzer.py +165 -0
  598. lfx/custom/directory_reader/__init__.py +3 -0
  599. lfx/custom/directory_reader/directory_reader.py +359 -0
  600. lfx/custom/directory_reader/utils.py +171 -0
  601. lfx/custom/eval.py +12 -0
  602. lfx/custom/schema.py +32 -0
  603. lfx/custom/tree_visitor.py +21 -0
  604. lfx/custom/utils.py +877 -0
  605. lfx/custom/validate.py +523 -0
  606. lfx/events/__init__.py +1 -0
  607. lfx/events/event_manager.py +110 -0
  608. lfx/exceptions/__init__.py +0 -0
  609. lfx/exceptions/component.py +15 -0
  610. lfx/field_typing/__init__.py +91 -0
  611. lfx/field_typing/constants.py +216 -0
  612. lfx/field_typing/range_spec.py +35 -0
  613. lfx/graph/__init__.py +6 -0
  614. lfx/graph/edge/__init__.py +0 -0
  615. lfx/graph/edge/base.py +300 -0
  616. lfx/graph/edge/schema.py +119 -0
  617. lfx/graph/edge/utils.py +0 -0
  618. lfx/graph/graph/__init__.py +0 -0
  619. lfx/graph/graph/ascii.py +202 -0
  620. lfx/graph/graph/base.py +2298 -0
  621. lfx/graph/graph/constants.py +63 -0
  622. lfx/graph/graph/runnable_vertices_manager.py +133 -0
  623. lfx/graph/graph/schema.py +53 -0
  624. lfx/graph/graph/state_model.py +66 -0
  625. lfx/graph/graph/utils.py +1024 -0
  626. lfx/graph/schema.py +75 -0
  627. lfx/graph/state/__init__.py +0 -0
  628. lfx/graph/state/model.py +250 -0
  629. lfx/graph/utils.py +206 -0
  630. lfx/graph/vertex/__init__.py +0 -0
  631. lfx/graph/vertex/base.py +826 -0
  632. lfx/graph/vertex/constants.py +0 -0
  633. lfx/graph/vertex/exceptions.py +4 -0
  634. lfx/graph/vertex/param_handler.py +316 -0
  635. lfx/graph/vertex/schema.py +26 -0
  636. lfx/graph/vertex/utils.py +19 -0
  637. lfx/graph/vertex/vertex_types.py +489 -0
  638. lfx/helpers/__init__.py +141 -0
  639. lfx/helpers/base_model.py +71 -0
  640. lfx/helpers/custom.py +13 -0
  641. lfx/helpers/data.py +167 -0
  642. lfx/helpers/flow.py +308 -0
  643. lfx/inputs/__init__.py +68 -0
  644. lfx/inputs/constants.py +2 -0
  645. lfx/inputs/input_mixin.py +352 -0
  646. lfx/inputs/inputs.py +718 -0
  647. lfx/inputs/validators.py +19 -0
  648. lfx/interface/__init__.py +6 -0
  649. lfx/interface/components.py +897 -0
  650. lfx/interface/importing/__init__.py +5 -0
  651. lfx/interface/importing/utils.py +39 -0
  652. lfx/interface/initialize/__init__.py +3 -0
  653. lfx/interface/initialize/loading.py +317 -0
  654. lfx/interface/listing.py +26 -0
  655. lfx/interface/run.py +16 -0
  656. lfx/interface/utils.py +111 -0
  657. lfx/io/__init__.py +63 -0
  658. lfx/io/schema.py +295 -0
  659. lfx/load/__init__.py +8 -0
  660. lfx/load/load.py +256 -0
  661. lfx/load/utils.py +99 -0
  662. lfx/log/__init__.py +5 -0
  663. lfx/log/logger.py +411 -0
  664. lfx/logging/__init__.py +11 -0
  665. lfx/logging/logger.py +24 -0
  666. lfx/memory/__init__.py +70 -0
  667. lfx/memory/stubs.py +302 -0
  668. lfx/processing/__init__.py +1 -0
  669. lfx/processing/process.py +238 -0
  670. lfx/processing/utils.py +25 -0
  671. lfx/py.typed +0 -0
  672. lfx/schema/__init__.py +66 -0
  673. lfx/schema/artifact.py +83 -0
  674. lfx/schema/content_block.py +62 -0
  675. lfx/schema/content_types.py +91 -0
  676. lfx/schema/cross_module.py +80 -0
  677. lfx/schema/data.py +309 -0
  678. lfx/schema/dataframe.py +210 -0
  679. lfx/schema/dotdict.py +74 -0
  680. lfx/schema/encoders.py +13 -0
  681. lfx/schema/graph.py +47 -0
  682. lfx/schema/image.py +184 -0
  683. lfx/schema/json_schema.py +186 -0
  684. lfx/schema/log.py +62 -0
  685. lfx/schema/message.py +493 -0
  686. lfx/schema/openai_responses_schemas.py +74 -0
  687. lfx/schema/properties.py +41 -0
  688. lfx/schema/schema.py +180 -0
  689. lfx/schema/serialize.py +13 -0
  690. lfx/schema/table.py +142 -0
  691. lfx/schema/validators.py +114 -0
  692. lfx/serialization/__init__.py +5 -0
  693. lfx/serialization/constants.py +2 -0
  694. lfx/serialization/serialization.py +314 -0
  695. lfx/services/__init__.py +26 -0
  696. lfx/services/base.py +28 -0
  697. lfx/services/cache/__init__.py +6 -0
  698. lfx/services/cache/base.py +183 -0
  699. lfx/services/cache/service.py +166 -0
  700. lfx/services/cache/utils.py +169 -0
  701. lfx/services/chat/__init__.py +1 -0
  702. lfx/services/chat/config.py +2 -0
  703. lfx/services/chat/schema.py +10 -0
  704. lfx/services/database/__init__.py +5 -0
  705. lfx/services/database/service.py +25 -0
  706. lfx/services/deps.py +194 -0
  707. lfx/services/factory.py +19 -0
  708. lfx/services/initialize.py +19 -0
  709. lfx/services/interfaces.py +103 -0
  710. lfx/services/manager.py +185 -0
  711. lfx/services/mcp_composer/__init__.py +6 -0
  712. lfx/services/mcp_composer/factory.py +16 -0
  713. lfx/services/mcp_composer/service.py +1441 -0
  714. lfx/services/schema.py +21 -0
  715. lfx/services/session.py +87 -0
  716. lfx/services/settings/__init__.py +3 -0
  717. lfx/services/settings/auth.py +133 -0
  718. lfx/services/settings/base.py +668 -0
  719. lfx/services/settings/constants.py +43 -0
  720. lfx/services/settings/factory.py +23 -0
  721. lfx/services/settings/feature_flags.py +11 -0
  722. lfx/services/settings/service.py +35 -0
  723. lfx/services/settings/utils.py +40 -0
  724. lfx/services/shared_component_cache/__init__.py +1 -0
  725. lfx/services/shared_component_cache/factory.py +30 -0
  726. lfx/services/shared_component_cache/service.py +9 -0
  727. lfx/services/storage/__init__.py +5 -0
  728. lfx/services/storage/local.py +185 -0
  729. lfx/services/storage/service.py +177 -0
  730. lfx/services/tracing/__init__.py +1 -0
  731. lfx/services/tracing/service.py +21 -0
  732. lfx/settings.py +6 -0
  733. lfx/template/__init__.py +6 -0
  734. lfx/template/field/__init__.py +0 -0
  735. lfx/template/field/base.py +260 -0
  736. lfx/template/field/prompt.py +15 -0
  737. lfx/template/frontend_node/__init__.py +6 -0
  738. lfx/template/frontend_node/base.py +214 -0
  739. lfx/template/frontend_node/constants.py +65 -0
  740. lfx/template/frontend_node/custom_components.py +79 -0
  741. lfx/template/template/__init__.py +0 -0
  742. lfx/template/template/base.py +100 -0
  743. lfx/template/utils.py +217 -0
  744. lfx/type_extraction/__init__.py +19 -0
  745. lfx/type_extraction/type_extraction.py +75 -0
  746. lfx/type_extraction.py +80 -0
  747. lfx/utils/__init__.py +1 -0
  748. lfx/utils/async_helpers.py +42 -0
  749. lfx/utils/component_utils.py +154 -0
  750. lfx/utils/concurrency.py +60 -0
  751. lfx/utils/connection_string_parser.py +11 -0
  752. lfx/utils/constants.py +233 -0
  753. lfx/utils/data_structure.py +212 -0
  754. lfx/utils/exceptions.py +22 -0
  755. lfx/utils/helpers.py +34 -0
  756. lfx/utils/image.py +79 -0
  757. lfx/utils/langflow_utils.py +52 -0
  758. lfx/utils/lazy_load.py +15 -0
  759. lfx/utils/request_utils.py +18 -0
  760. lfx/utils/schemas.py +139 -0
  761. lfx/utils/ssrf_protection.py +384 -0
  762. lfx/utils/util.py +626 -0
  763. lfx/utils/util_strings.py +56 -0
  764. lfx/utils/validate_cloud.py +26 -0
  765. lfx/utils/version.py +24 -0
  766. lfx_nightly-0.2.0.dev25.dist-info/METADATA +312 -0
  767. lfx_nightly-0.2.0.dev25.dist-info/RECORD +769 -0
  768. lfx_nightly-0.2.0.dev25.dist-info/WHEEL +4 -0
  769. lfx_nightly-0.2.0.dev25.dist-info/entry_points.txt +2 -0
@@ -0,0 +1,378 @@
1
+ from typing_extensions import TypedDict
2
+
3
+ from lfx.base.models.model import LCModelComponent
4
+ from lfx.inputs.inputs import InputTypes, SecretStrInput
5
+ from lfx.template.field.base import Input
6
+
7
+
8
+ class ModelProvidersDict(TypedDict):
9
+ fields: dict
10
+ inputs: list[InputTypes]
11
+ prefix: str
12
+ component_class: LCModelComponent
13
+ icon: str
14
+ is_active: bool
15
+
16
+
17
+ def get_filtered_inputs(component_class, provider_name: str | None = None):
18
+ base_input_names = {field.name for field in LCModelComponent.get_base_inputs()}
19
+ component_instance = component_class()
20
+
21
+ return [
22
+ process_inputs(input_, provider_name)
23
+ for input_ in component_instance.inputs
24
+ if input_.name not in base_input_names
25
+ ]
26
+
27
+
28
+ def process_inputs(component_data: Input, provider_name: str | None = None):
29
+ """Processes and modifies an input configuration based on its type or name.
30
+
31
+ Adjusts properties such as value, advanced status, real-time refresh, and additional information for specific
32
+ input types or names to ensure correct behavior in the UI and provider integration.
33
+
34
+ Args:
35
+ component_data: The input configuration to process.
36
+ provider_name: The name of the provider to process the inputs for.
37
+
38
+ Returns:
39
+ The modified input configuration.
40
+ """
41
+ if isinstance(component_data, SecretStrInput):
42
+ component_data.value = ""
43
+ component_data.load_from_db = False
44
+ component_data.real_time_refresh = True
45
+ if component_data.name == "api_key":
46
+ component_data.required = False
47
+ elif component_data.name == "tool_model_enabled":
48
+ component_data.advanced = True
49
+ component_data.value = True
50
+ elif component_data.name in {"temperature", "base_url"}:
51
+ if provider_name not in ["IBM watsonx.ai", "Ollama"]:
52
+ component_data = set_advanced_true(component_data)
53
+ elif component_data.name == "model_name":
54
+ if provider_name not in ["IBM watsonx.ai"]:
55
+ component_data = set_real_time_refresh_false(component_data)
56
+ component_data = add_combobox_true(component_data)
57
+ component_data = add_info(
58
+ component_data,
59
+ "To see the model names, first choose a provider. Then, enter your API key and click the refresh button "
60
+ "next to the model name.",
61
+ )
62
+ return component_data
63
+
64
+
65
+ def set_advanced_true(component_input):
66
+ component_input.advanced = True
67
+ return component_input
68
+
69
+
70
+ def set_real_time_refresh_false(component_input):
71
+ component_input.real_time_refresh = False
72
+ return component_input
73
+
74
+
75
+ def add_info(component_input, info_str: str):
76
+ component_input.info = info_str
77
+ return component_input
78
+
79
+
80
+ def add_combobox_true(component_input):
81
+ component_input.combobox = True
82
+ return component_input
83
+
84
+
85
+ def create_input_fields_dict(inputs: list[Input], prefix: str) -> dict[str, Input]:
86
+ return {f"{prefix}{input_.name}": input_.to_dict() for input_ in inputs}
87
+
88
+
89
+ def _get_ollama_inputs_and_fields():
90
+ try:
91
+ from lfx.components.ollama.ollama import ChatOllamaComponent
92
+
93
+ ollama_inputs = get_filtered_inputs(ChatOllamaComponent, provider_name="Ollama")
94
+ except ImportError as e:
95
+ msg = "Ollama is not installed. Please install it with `pip install langchain-ollama`."
96
+ raise ImportError(msg) from e
97
+ return ollama_inputs, create_input_fields_dict(ollama_inputs, "")
98
+
99
+
100
+ def _get_watsonx_inputs_and_fields():
101
+ try:
102
+ from lfx.components.ibm.watsonx import WatsonxAIComponent
103
+
104
+ watsonx_inputs = get_filtered_inputs(WatsonxAIComponent, provider_name="IBM watsonx.ai")
105
+ except ImportError as e:
106
+ msg = "IBM watsonx.ai is not installed. Please install it with `pip install langchain-ibm-watsonx`."
107
+ raise ImportError(msg) from e
108
+ return watsonx_inputs, create_input_fields_dict(watsonx_inputs, "")
109
+
110
+
111
+ def _get_google_generative_ai_inputs_and_fields():
112
+ try:
113
+ from lfx.components.google.google_generative_ai import GoogleGenerativeAIComponent
114
+
115
+ google_generative_ai_inputs = get_filtered_inputs(GoogleGenerativeAIComponent)
116
+ except ImportError as e:
117
+ msg = (
118
+ "Google Generative AI is not installed. Please install it with "
119
+ "`pip install langchain-google-generative-ai`."
120
+ )
121
+ raise ImportError(msg) from e
122
+ return google_generative_ai_inputs, create_input_fields_dict(google_generative_ai_inputs, "")
123
+
124
+
125
+ def _get_openai_inputs_and_fields():
126
+ try:
127
+ from lfx.components.openai.openai_chat_model import OpenAIModelComponent
128
+
129
+ openai_inputs = get_filtered_inputs(OpenAIModelComponent)
130
+ except ImportError as e:
131
+ msg = "OpenAI is not installed. Please install it with `pip install langchain-openai`."
132
+ raise ImportError(msg) from e
133
+ return openai_inputs, create_input_fields_dict(openai_inputs, "")
134
+
135
+
136
+ def _get_azure_inputs_and_fields():
137
+ try:
138
+ from lfx.components.azure.azure_openai import AzureChatOpenAIComponent
139
+
140
+ azure_inputs = get_filtered_inputs(AzureChatOpenAIComponent)
141
+ except ImportError as e:
142
+ msg = "Azure OpenAI is not installed. Please install it with `pip install langchain-azure-openai`."
143
+ raise ImportError(msg) from e
144
+ return azure_inputs, create_input_fields_dict(azure_inputs, "")
145
+
146
+
147
+ def _get_groq_inputs_and_fields():
148
+ try:
149
+ from lfx.components.groq.groq import GroqModel
150
+
151
+ groq_inputs = get_filtered_inputs(GroqModel)
152
+ except ImportError as e:
153
+ msg = "Groq is not installed. Please install it with `pip install langchain-groq`."
154
+ raise ImportError(msg) from e
155
+ return groq_inputs, create_input_fields_dict(groq_inputs, "")
156
+
157
+
158
+ def _get_anthropic_inputs_and_fields():
159
+ try:
160
+ from lfx.components.anthropic.anthropic import AnthropicModelComponent
161
+
162
+ anthropic_inputs = get_filtered_inputs(AnthropicModelComponent)
163
+ except ImportError as e:
164
+ msg = "Anthropic is not installed. Please install it with `pip install langchain-anthropic`."
165
+ raise ImportError(msg) from e
166
+ return anthropic_inputs, create_input_fields_dict(anthropic_inputs, "")
167
+
168
+
169
+ def _get_nvidia_inputs_and_fields():
170
+ try:
171
+ from lfx.components.nvidia.nvidia import NVIDIAModelComponent
172
+
173
+ nvidia_inputs = get_filtered_inputs(NVIDIAModelComponent)
174
+ except ImportError as e:
175
+ msg = "NVIDIA is not installed. Please install it with `pip install langchain-nvidia`."
176
+ raise ImportError(msg) from e
177
+ return nvidia_inputs, create_input_fields_dict(nvidia_inputs, "")
178
+
179
+
180
+ def _get_amazon_bedrock_inputs_and_fields():
181
+ try:
182
+ from lfx.components.amazon.amazon_bedrock_model import AmazonBedrockComponent
183
+
184
+ amazon_bedrock_inputs = get_filtered_inputs(AmazonBedrockComponent)
185
+ except ImportError as e:
186
+ msg = "Amazon Bedrock is not installed. Please install it with `pip install langchain-amazon-bedrock`."
187
+ raise ImportError(msg) from e
188
+ return amazon_bedrock_inputs, create_input_fields_dict(amazon_bedrock_inputs, "")
189
+
190
+
191
+ def _get_sambanova_inputs_and_fields():
192
+ try:
193
+ from lfx.components.sambanova.sambanova import SambaNovaComponent
194
+
195
+ sambanova_inputs = get_filtered_inputs(SambaNovaComponent)
196
+ except ImportError as e:
197
+ msg = "SambaNova is not installed. Please install it with `pip install langchain-sambanova`."
198
+ raise ImportError(msg) from e
199
+ return sambanova_inputs, create_input_fields_dict(sambanova_inputs, "")
200
+
201
+
202
+ MODEL_PROVIDERS_DICT: dict[str, ModelProvidersDict] = {}
203
+
204
+ # Try to add each provider
205
+ try:
206
+ from lfx.components.openai.openai_chat_model import OpenAIModelComponent
207
+
208
+ openai_inputs, openai_fields = _get_openai_inputs_and_fields()
209
+ MODEL_PROVIDERS_DICT["OpenAI"] = {
210
+ "fields": openai_fields,
211
+ "inputs": openai_inputs,
212
+ "prefix": "",
213
+ "component_class": OpenAIModelComponent(),
214
+ "icon": OpenAIModelComponent.icon,
215
+ "is_active": True,
216
+ }
217
+ except ImportError:
218
+ pass
219
+
220
+ try:
221
+ from lfx.components.azure.azure_openai import AzureChatOpenAIComponent
222
+
223
+ azure_inputs, azure_fields = _get_azure_inputs_and_fields()
224
+ MODEL_PROVIDERS_DICT["Azure OpenAI"] = {
225
+ "fields": azure_fields,
226
+ "inputs": azure_inputs,
227
+ "prefix": "",
228
+ "component_class": AzureChatOpenAIComponent(),
229
+ "icon": AzureChatOpenAIComponent.icon,
230
+ "is_active": False,
231
+ }
232
+ except ImportError:
233
+ pass
234
+
235
+ try:
236
+ from lfx.components.groq.groq import GroqModel
237
+
238
+ groq_inputs, groq_fields = _get_groq_inputs_and_fields()
239
+ MODEL_PROVIDERS_DICT["Groq"] = {
240
+ "fields": groq_fields,
241
+ "inputs": groq_inputs,
242
+ "prefix": "",
243
+ "component_class": GroqModel(),
244
+ "icon": GroqModel.icon,
245
+ "is_active": False,
246
+ }
247
+ except ImportError:
248
+ pass
249
+
250
+ try:
251
+ from lfx.components.anthropic.anthropic import AnthropicModelComponent
252
+
253
+ anthropic_inputs, anthropic_fields = _get_anthropic_inputs_and_fields()
254
+ MODEL_PROVIDERS_DICT["Anthropic"] = {
255
+ "fields": anthropic_fields,
256
+ "inputs": anthropic_inputs,
257
+ "prefix": "",
258
+ "component_class": AnthropicModelComponent(),
259
+ "icon": AnthropicModelComponent.icon,
260
+ "is_active": True,
261
+ }
262
+ except ImportError:
263
+ pass
264
+
265
+ try:
266
+ from lfx.components.nvidia.nvidia import NVIDIAModelComponent
267
+
268
+ nvidia_inputs, nvidia_fields = _get_nvidia_inputs_and_fields()
269
+ MODEL_PROVIDERS_DICT["NVIDIA"] = {
270
+ "fields": nvidia_fields,
271
+ "inputs": nvidia_inputs,
272
+ "prefix": "",
273
+ "component_class": NVIDIAModelComponent(),
274
+ "icon": NVIDIAModelComponent.icon,
275
+ "is_active": False,
276
+ }
277
+ except ImportError:
278
+ pass
279
+
280
+ try:
281
+ from lfx.components.amazon.amazon_bedrock_model import AmazonBedrockComponent
282
+
283
+ bedrock_inputs, bedrock_fields = _get_amazon_bedrock_inputs_and_fields()
284
+ MODEL_PROVIDERS_DICT["Amazon Bedrock"] = {
285
+ "fields": bedrock_fields,
286
+ "inputs": bedrock_inputs,
287
+ "prefix": "",
288
+ "component_class": AmazonBedrockComponent(),
289
+ "icon": AmazonBedrockComponent.icon,
290
+ "is_active": False,
291
+ }
292
+ except ImportError:
293
+ pass
294
+
295
+ try:
296
+ from lfx.components.google.google_generative_ai import GoogleGenerativeAIComponent
297
+
298
+ google_generative_ai_inputs, google_generative_ai_fields = _get_google_generative_ai_inputs_and_fields()
299
+ MODEL_PROVIDERS_DICT["Google Generative AI"] = {
300
+ "fields": google_generative_ai_fields,
301
+ "inputs": google_generative_ai_inputs,
302
+ "prefix": "",
303
+ "component_class": GoogleGenerativeAIComponent(),
304
+ "icon": GoogleGenerativeAIComponent.icon,
305
+ "is_active": True,
306
+ }
307
+ except ImportError:
308
+ pass
309
+
310
+ try:
311
+ from lfx.components.sambanova.sambanova import SambaNovaComponent
312
+
313
+ sambanova_inputs, sambanova_fields = _get_sambanova_inputs_and_fields()
314
+ MODEL_PROVIDERS_DICT["SambaNova"] = {
315
+ "fields": sambanova_fields,
316
+ "inputs": sambanova_inputs,
317
+ "prefix": "",
318
+ "component_class": SambaNovaComponent(),
319
+ "icon": SambaNovaComponent.icon,
320
+ "is_active": False,
321
+ }
322
+ except ImportError:
323
+ pass
324
+
325
+ try:
326
+ from lfx.components.ibm.watsonx import WatsonxAIComponent
327
+
328
+ watsonx_inputs, watsonx_fields = _get_watsonx_inputs_and_fields()
329
+ MODEL_PROVIDERS_DICT["IBM watsonx.ai"] = {
330
+ "fields": watsonx_fields,
331
+ "inputs": watsonx_inputs,
332
+ "prefix": "",
333
+ "component_class": WatsonxAIComponent(),
334
+ "icon": WatsonxAIComponent.icon,
335
+ "is_active": True,
336
+ }
337
+ except ImportError:
338
+ pass
339
+
340
+ try:
341
+ from lfx.components.ollama.ollama import ChatOllamaComponent
342
+
343
+ ollama_inputs, ollama_fields = _get_ollama_inputs_and_fields()
344
+ MODEL_PROVIDERS_DICT["Ollama"] = {
345
+ "fields": ollama_fields,
346
+ "inputs": ollama_inputs,
347
+ "prefix": "",
348
+ "component_class": ChatOllamaComponent(),
349
+ "icon": ChatOllamaComponent.icon,
350
+ "is_active": True,
351
+ }
352
+ except ImportError:
353
+ pass
354
+
355
+ # Expose only active providers ----------------------------------------------
356
+ ACTIVE_MODEL_PROVIDERS_DICT: dict[str, ModelProvidersDict] = {
357
+ name: prov for name, prov in MODEL_PROVIDERS_DICT.items() if prov.get("is_active", True)
358
+ }
359
+
360
+ MODEL_PROVIDERS: list[str] = list(ACTIVE_MODEL_PROVIDERS_DICT.keys())
361
+
362
+ ALL_PROVIDER_FIELDS: list[str] = [field for prov in ACTIVE_MODEL_PROVIDERS_DICT.values() for field in prov["fields"]]
363
+
364
+ MODEL_DYNAMIC_UPDATE_FIELDS = [
365
+ "api_key",
366
+ "model",
367
+ "tool_model_enabled",
368
+ "base_url",
369
+ "model_name",
370
+ "watsonx_endpoint",
371
+ "url",
372
+ ]
373
+
374
+ MODELS_METADATA = {name: {"icon": prov["icon"]} for name, prov in ACTIVE_MODEL_PROVIDERS_DICT.items()}
375
+
376
+ MODEL_PROVIDERS_LIST = ["Anthropic", "Google Generative AI", "OpenAI", "IBM watsonx.ai", "Ollama"]
377
+
378
+ MODEL_OPTIONS_METADATA = [MODELS_METADATA[key] for key in MODEL_PROVIDERS_LIST if key in MODELS_METADATA]
@@ -0,0 +1,41 @@
1
+ from typing import TypedDict
2
+
3
+
4
+ class ModelMetadata(TypedDict, total=False):
5
+ """Simple model metadata structure."""
6
+
7
+ provider: str # Provider name (e.g., "anthropic", "groq", "openai")
8
+ name: str # Model name/ID
9
+ icon: str # Icon name for UI
10
+ tool_calling: bool # Whether model supports tool calling (defaults to False)
11
+ reasoning: bool # Reasoning models (defaults to False)
12
+ search: bool # Search models (defaults to False)
13
+ preview: bool # Whether model is in preview/beta (defaults to False)
14
+ not_supported: bool # Whether model is not supported or deprecated (defaults to False)
15
+ deprecated: bool # Whether model is deprecated (defaults to False)
16
+
17
+
18
+ def create_model_metadata(
19
+ provider: str,
20
+ name: str,
21
+ icon: str,
22
+ *,
23
+ tool_calling: bool = False,
24
+ reasoning: bool = False,
25
+ search: bool = False,
26
+ preview: bool = False,
27
+ not_supported: bool = False,
28
+ deprecated: bool = False,
29
+ ) -> ModelMetadata:
30
+ """Helper function to create ModelMetadata with explicit defaults."""
31
+ return ModelMetadata(
32
+ provider=provider,
33
+ name=name,
34
+ icon=icon,
35
+ tool_calling=tool_calling,
36
+ reasoning=reasoning,
37
+ search=search,
38
+ preview=preview,
39
+ not_supported=not_supported,
40
+ deprecated=deprecated,
41
+ )
@@ -0,0 +1,108 @@
1
+ import asyncio
2
+ from urllib.parse import urljoin
3
+
4
+ import httpx
5
+
6
+ from lfx.log.logger import logger
7
+ from lfx.utils.util import transform_localhost_url
8
+
9
+ HTTP_STATUS_OK = 200
10
+
11
+
12
+ def get_model_name(llm, display_name: str | None = "Custom"):
13
+ attributes_to_check = ["model_name", "model", "model_id", "deployment_name"]
14
+
15
+ # Use a generator expression with next() to find the first matching attribute
16
+ model_name = next((getattr(llm, attr) for attr in attributes_to_check if hasattr(llm, attr)), None)
17
+
18
+ # If no matching attribute is found, return the class name as a fallback
19
+ return model_name if model_name is not None else display_name
20
+
21
+
22
+ async def is_valid_ollama_url(url: str) -> bool:
23
+ """Check if the provided URL is a valid Ollama API endpoint."""
24
+ try:
25
+ url = transform_localhost_url(url)
26
+ if not url:
27
+ return False
28
+ # Strip /v1 suffix if present, as Ollama API endpoints are at root level
29
+ url = url.rstrip("/").removesuffix("/v1")
30
+ if not url.endswith("/"):
31
+ url = url + "/"
32
+ async with httpx.AsyncClient() as client:
33
+ return (await client.get(url=urljoin(url, "api/tags"))).status_code == HTTP_STATUS_OK
34
+ except httpx.RequestError:
35
+ logger.debug(f"Invalid Ollama URL: {url}")
36
+ return False
37
+
38
+
39
+ async def get_ollama_models(
40
+ base_url_value: str, desired_capability: str, json_models_key: str, json_name_key: str, json_capabilities_key: str
41
+ ) -> list[str]:
42
+ """Fetch available completion models from the Ollama API.
43
+
44
+ Filters out embedding models and only returns models with completion capability.
45
+
46
+ Args:
47
+ base_url_value (str): The base URL of the Ollama API.
48
+ desired_capability (str): The desired capability of the model.
49
+ json_models_key (str): The key in the JSON response that contains the models.
50
+ json_name_key (str): The key in the JSON response that contains the model names.
51
+ json_capabilities_key (str): The key in the JSON response that contains the model capabilities.
52
+
53
+ Returns:
54
+ list[str]: A sorted list of model names that support completion.
55
+
56
+ Raises:
57
+ ValueError: If there is an issue with the API request or response.
58
+ """
59
+ try:
60
+ # Strip /v1 suffix if present, as Ollama API endpoints are at root level
61
+ base_url = base_url_value.rstrip("/").removesuffix("/v1")
62
+ if not base_url.endswith("/"):
63
+ base_url = base_url + "/"
64
+ base_url = transform_localhost_url(base_url)
65
+
66
+ # Ollama REST API to return models
67
+ tags_url = urljoin(base_url, "api/tags")
68
+
69
+ # Ollama REST API to return model capabilities
70
+ show_url = urljoin(base_url, "api/show")
71
+ tags_response = None
72
+
73
+ async with httpx.AsyncClient() as client:
74
+ # Fetch available models
75
+ tags_response = await client.get(url=tags_url)
76
+ tags_response.raise_for_status()
77
+ models = tags_response.json()
78
+ if asyncio.iscoroutine(models):
79
+ models = await models
80
+ await logger.adebug(f"Available models: {models}")
81
+
82
+ # Filter models that are NOT embedding models
83
+ model_ids = []
84
+ for model in models.get(json_models_key, []):
85
+ model_name = model.get(json_name_key)
86
+ if not model_name:
87
+ continue
88
+ await logger.adebug(f"Checking model: {model_name}")
89
+
90
+ payload = {"model": model_name}
91
+ show_response = await client.post(url=show_url, json=payload)
92
+ show_response.raise_for_status()
93
+ json_data = show_response.json()
94
+ if asyncio.iscoroutine(json_data):
95
+ json_data = await json_data
96
+
97
+ capabilities = json_data.get(json_capabilities_key, [])
98
+ await logger.adebug(f"Model: {model_name}, Capabilities: {capabilities}")
99
+
100
+ if desired_capability in capabilities:
101
+ model_ids.append(model_name)
102
+
103
+ return sorted(model_ids)
104
+
105
+ except (httpx.RequestError, ValueError) as e:
106
+ msg = "Could not get model names from Ollama."
107
+ await logger.aexception(msg)
108
+ raise ValueError(msg) from e
@@ -0,0 +1,35 @@
1
+ NOVITA_MODELS = [
2
+ "deepseek/deepseek-r1",
3
+ "deepseek/deepseek_v3",
4
+ "meta-llama/llama-3.3-70b-instruct",
5
+ "meta-llama/llama-3.1-8b-instruct",
6
+ "meta-llama/llama-3.1-70b-instruct",
7
+ "mistralai/mistral-nemo",
8
+ "Sao10K/L3-8B-Stheno-v3.2",
9
+ "gryphe/mythomax-l2-13b",
10
+ "qwen/qwen-2.5-72b-instruct",
11
+ "meta-llama/llama-3-8b-instruct",
12
+ "microsoft/wizardlm-2-8x22b",
13
+ "google/gemma-2-9b-it",
14
+ "mistralai/mistral-7b-instruct",
15
+ "meta-llama/llama-3-70b-instruct",
16
+ "openchat/openchat-7b",
17
+ "nousresearch/hermes-2-pro-llama-3-8b",
18
+ "sao10k/l3-70b-euryale-v2.1",
19
+ "cognitivecomputations/dolphin-mixtral-8x22b",
20
+ "jondurbin/airoboros-l2-70b",
21
+ "nousresearch/nous-hermes-llama2-13b",
22
+ "teknium/openhermes-2.5-mistral-7b",
23
+ "sophosympatheia/midnight-rose-70b",
24
+ "meta-llama/llama-3.1-8b-instruct-max",
25
+ "sao10k/l3-8b-lunaris",
26
+ "qwen/qwen-2-vl-72b-instruct",
27
+ "meta-llama/llama-3.2-1b-instruct",
28
+ "meta-llama/llama-3.2-11b-vision-instruct",
29
+ "meta-llama/llama-3.2-3b-instruct",
30
+ "meta-llama/llama-3.1-8b-instruct-bf16",
31
+ "sao10k/l31-70b-euryale-v2.2",
32
+ "qwen/qwen-2-7b-instruct",
33
+ "qwen/qwen-2-72b-instruct",
34
+ ]
35
+ MODEL_NAMES = NOVITA_MODELS # reverse compatibility
@@ -0,0 +1,52 @@
1
+ # https://ollama.com/search?c=embedding
2
+ OLLAMA_EMBEDDING_MODELS = [
3
+ "nomic-embed-text",
4
+ "mxbai-embed-large",
5
+ "snowflake-arctic-embed",
6
+ "all-minilm",
7
+ "bge-m3",
8
+ "bge-large",
9
+ "paraphrase-multilingual",
10
+ "granite-embedding",
11
+ "jina-embeddings-v2-base-en",
12
+ ]
13
+ # https://ollama.com/search?c=tools
14
+ OLLAMA_TOOL_MODELS_BASE = [
15
+ "llama3.3",
16
+ "qwq",
17
+ "llama3.2",
18
+ "llama3.1",
19
+ "mistral",
20
+ "qwen2",
21
+ "qwen2.5",
22
+ "qwen2.5-coder",
23
+ "mistral-nemo",
24
+ "mixtral",
25
+ "command-r",
26
+ "command-r-plus",
27
+ "mistral-large",
28
+ "smollm2",
29
+ "hermes3",
30
+ "athene-v2",
31
+ "mistral-small",
32
+ "nemotron-mini",
33
+ "nemotron",
34
+ "llama3-groq-tool-use",
35
+ "granite3-dense",
36
+ "granite3.1-dense",
37
+ "aya-expanse",
38
+ "granite3-moe",
39
+ "firefunction-v2",
40
+ "cogito",
41
+ ]
42
+
43
+
44
+ URL_LIST = [
45
+ "http://localhost:11434",
46
+ "http://host.docker.internal:11434",
47
+ "http://127.0.0.1:11434",
48
+ "http://0.0.0.0:11434",
49
+ ]
50
+
51
+
52
+ DEFAULT_OLLAMA_API_URL = "https://ollama.com"