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,15 @@
1
+ from .extract_key_from_data import ExtractKeyFromDataComponent
2
+ from .list_flows import ListFlowsComponent
3
+ from .merge_data import MergeDataComponent
4
+ from .selective_passthrough import SelectivePassThroughComponent
5
+ from .split_text import SplitTextComponent
6
+ from .sub_flow import SubFlowComponent
7
+
8
+ __all__ = [
9
+ "ExtractKeyFromDataComponent",
10
+ "ListFlowsComponent",
11
+ "MergeDataComponent",
12
+ "SelectivePassThroughComponent",
13
+ "SplitTextComponent",
14
+ "SubFlowComponent",
15
+ ]
@@ -0,0 +1,66 @@
1
+ # mypy: disable-error-code="attr-defined"
2
+ from langchain_community.retrievers import AmazonKendraRetriever
3
+
4
+ from lfx.base.vectorstores.model import check_cached_vector_store
5
+ from lfx.custom.custom_component.custom_component import CustomComponent
6
+ from lfx.io import DictInput, IntInput, StrInput
7
+
8
+
9
+ class AmazonKendraRetrieverComponent(CustomComponent):
10
+ display_name: str = "Amazon Kendra Retriever"
11
+ description: str = "Retriever that uses the Amazon Kendra API."
12
+ name = "AmazonKendra"
13
+ icon = "Amazon"
14
+ legacy = True
15
+
16
+ inputs = [
17
+ StrInput(
18
+ name="index_id",
19
+ display_name="Index ID",
20
+ ),
21
+ StrInput(
22
+ name="region_name",
23
+ display_name="Region Name",
24
+ ),
25
+ StrInput(
26
+ name="credentials_profile_name",
27
+ display_name="Credentials Profile Name",
28
+ ),
29
+ DictInput(
30
+ name="attribute_filter",
31
+ display_name="Attribute Filter",
32
+ ),
33
+ IntInput(
34
+ name="top_k",
35
+ display_name="Top K",
36
+ value=3,
37
+ ),
38
+ DictInput(
39
+ name="user_context",
40
+ display_name="User Context",
41
+ ),
42
+ ]
43
+
44
+ @check_cached_vector_store
45
+ def build_vector_store(self) -> AmazonKendraRetriever:
46
+ """Builds the Amazon Kendra Retriever."""
47
+ try:
48
+ from langchain_community.retrievers import AmazonKendraRetriever
49
+ except ImportError as e:
50
+ msg = "Could not import AmazonKendraRetriever. Please install it with `pip install langchain-community`."
51
+ raise ImportError(msg) from e
52
+
53
+ try:
54
+ output = AmazonKendraRetriever(
55
+ index_id=self.index_id,
56
+ top_k=self.top_k,
57
+ region_name=self.region_name,
58
+ credentials_profile_name=self.credentials_profile_name,
59
+ attribute_filter=self.attribute_filter,
60
+ user_context=self.user_context,
61
+ )
62
+ except Exception as e:
63
+ msg = "Could not connect to AmazonKendra API."
64
+ raise ValueError(msg) from e
65
+
66
+ return output
@@ -0,0 +1,158 @@
1
+ from langchain_community.chat_models.litellm import ChatLiteLLM, ChatLiteLLMException
2
+
3
+ from lfx.base.constants import STREAM_INFO_TEXT
4
+ from lfx.base.models.model import LCModelComponent
5
+ from lfx.field_typing import LanguageModel
6
+ from lfx.io import (
7
+ BoolInput,
8
+ DictInput,
9
+ DropdownInput,
10
+ FloatInput,
11
+ IntInput,
12
+ MessageInput,
13
+ SecretStrInput,
14
+ StrInput,
15
+ )
16
+
17
+
18
+ class ChatLiteLLMModelComponent(LCModelComponent):
19
+ display_name = "LiteLLM"
20
+ description = "`LiteLLM` collection of large language models."
21
+ documentation = "https://python.langchain.com/docs/integrations/chat/litellm"
22
+ icon = "🚄"
23
+
24
+ inputs = [
25
+ MessageInput(name="input_value", display_name="Input"),
26
+ StrInput(
27
+ name="model",
28
+ display_name="Model name",
29
+ advanced=False,
30
+ required=True,
31
+ info="The name of the model to use. For example, `gpt-3.5-turbo`.",
32
+ ),
33
+ SecretStrInput(
34
+ name="api_key",
35
+ display_name="Chat LiteLLM API Key",
36
+ advanced=False,
37
+ required=False,
38
+ ),
39
+ DropdownInput(
40
+ name="provider",
41
+ display_name="Provider",
42
+ info="The provider of the API key.",
43
+ options=[
44
+ "OpenAI",
45
+ "Azure",
46
+ "Anthropic",
47
+ "Replicate",
48
+ "Cohere",
49
+ "OpenRouter",
50
+ ],
51
+ ),
52
+ FloatInput(
53
+ name="temperature",
54
+ display_name="Temperature",
55
+ advanced=False,
56
+ required=False,
57
+ value=0.7,
58
+ ),
59
+ DictInput(
60
+ name="kwargs",
61
+ display_name="Kwargs",
62
+ advanced=True,
63
+ required=False,
64
+ is_list=True,
65
+ value={},
66
+ ),
67
+ DictInput(
68
+ name="model_kwargs",
69
+ display_name="Model kwargs",
70
+ advanced=True,
71
+ required=False,
72
+ is_list=True,
73
+ value={},
74
+ ),
75
+ FloatInput(name="top_p", display_name="Top p", advanced=True, required=False, value=0.5),
76
+ IntInput(name="top_k", display_name="Top k", advanced=True, required=False, value=35),
77
+ IntInput(
78
+ name="n",
79
+ display_name="N",
80
+ advanced=True,
81
+ required=False,
82
+ info="Number of chat completions to generate for each prompt. "
83
+ "Note that the API may not return the full n completions if duplicates are generated.",
84
+ value=1,
85
+ ),
86
+ IntInput(
87
+ name="max_tokens",
88
+ display_name="Max tokens",
89
+ advanced=False,
90
+ value=256,
91
+ info="The maximum number of tokens to generate for each chat completion.",
92
+ ),
93
+ IntInput(
94
+ name="max_retries",
95
+ display_name="Max retries",
96
+ advanced=True,
97
+ required=False,
98
+ value=6,
99
+ ),
100
+ BoolInput(
101
+ name="verbose",
102
+ display_name="Verbose",
103
+ advanced=True,
104
+ required=False,
105
+ value=False,
106
+ ),
107
+ BoolInput(
108
+ name="stream",
109
+ display_name="Stream",
110
+ info=STREAM_INFO_TEXT,
111
+ advanced=True,
112
+ ),
113
+ StrInput(
114
+ name="system_message",
115
+ display_name="System Message",
116
+ info="System message to pass to the model.",
117
+ advanced=True,
118
+ ),
119
+ ]
120
+
121
+ def build_model(self) -> LanguageModel: # type: ignore[type-var]
122
+ try:
123
+ import litellm
124
+
125
+ litellm.drop_params = True
126
+ litellm.set_verbose = self.verbose
127
+ except ImportError as e:
128
+ msg = "Could not import litellm python package. Please install it with `pip install litellm`"
129
+ raise ChatLiteLLMException(msg) from e
130
+ # Remove empty keys
131
+ if "" in self.kwargs:
132
+ del self.kwargs[""]
133
+ if "" in self.model_kwargs:
134
+ del self.model_kwargs[""]
135
+ # Report missing fields for Azure provider
136
+ if self.provider == "Azure":
137
+ if "api_base" not in self.kwargs:
138
+ msg = "Missing api_base on kwargs"
139
+ raise ValueError(msg)
140
+ if "api_version" not in self.model_kwargs:
141
+ msg = "Missing api_version on model_kwargs"
142
+ raise ValueError(msg)
143
+ output = ChatLiteLLM(
144
+ model=f"{self.provider.lower()}/{self.model}",
145
+ client=None,
146
+ streaming=self.stream,
147
+ temperature=self.temperature,
148
+ model_kwargs=self.model_kwargs if self.model_kwargs is not None else {},
149
+ top_p=self.top_p,
150
+ top_k=self.top_k,
151
+ n=self.n,
152
+ max_tokens=self.max_tokens,
153
+ max_retries=self.max_retries,
154
+ **self.kwargs,
155
+ )
156
+ output.client.api_key = self.api_key
157
+
158
+ return output
@@ -0,0 +1,26 @@
1
+ import re
2
+
3
+ from lfx.custom.custom_component.component import Component
4
+ from lfx.field_typing import Input, Output, Text
5
+
6
+
7
+ class CodeBlockExtractor(Component):
8
+ display_name = "Code Block Extractor"
9
+ description = "Extracts code block from text."
10
+ name = "CodeBlockExtractor"
11
+
12
+ inputs = [Input(name="text", field_type=Text, description="Text to extract code blocks from.")]
13
+
14
+ outputs = [Output(name="code_block", display_name="Code Block", method="get_code_block")]
15
+
16
+ def get_code_block(self) -> Text:
17
+ text = self.text.strip()
18
+ # Extract code block
19
+ # It may start with ``` or ```language
20
+ # It may end with ```
21
+ pattern = r"^```(?:\w+)?\s*\n(.*?)(?=^```)```"
22
+ match = re.search(pattern, text, re.MULTILINE)
23
+ code_block = ""
24
+ if match:
25
+ code_block = match.group(1)
26
+ return code_block
@@ -0,0 +1,22 @@
1
+ from langchain_core.documents import Document
2
+
3
+ from lfx.custom.custom_component.custom_component import CustomComponent
4
+ from lfx.schema.data import Data
5
+
6
+
7
+ class DocumentsToDataComponent(CustomComponent):
8
+ display_name = "Documents ⇢ Data"
9
+ description = "Convert LangChain Documents into Data."
10
+ icon = "LangChain"
11
+ name = "DocumentsToData"
12
+
13
+ field_config = {
14
+ "documents": {"display_name": "Documents"},
15
+ }
16
+
17
+ def build(self, documents: list[Document]) -> list[Data]:
18
+ if isinstance(documents, Document):
19
+ documents = [documents]
20
+ data = [Data.from_document(document) for document in documents]
21
+ self.status = data
22
+ return data
@@ -0,0 +1,16 @@
1
+ from lfx.custom.custom_component.custom_component import CustomComponent
2
+ from lfx.field_typing import Embeddings
3
+ from lfx.schema.data import Data
4
+
5
+
6
+ class EmbedComponent(CustomComponent):
7
+ display_name = "Embed Texts"
8
+ name = "Embed"
9
+
10
+ def build_config(self):
11
+ return {"texts": {"display_name": "Texts"}, "embbedings": {"display_name": "Embeddings"}}
12
+
13
+ def build(self, texts: list[str], embbedings: Embeddings) -> Data:
14
+ vectors = Data(vector=embbedings.embed_documents(texts))
15
+ self.status = vectors
16
+ return vectors
@@ -0,0 +1,46 @@
1
+ from lfx.custom.custom_component.custom_component import CustomComponent
2
+ from lfx.schema.data import Data
3
+
4
+
5
+ class ExtractKeyFromDataComponent(CustomComponent):
6
+ display_name = "Extract Key From Data"
7
+ description = "Extracts a key from a data."
8
+ beta: bool = True
9
+ name = "ExtractKeyFromData"
10
+
11
+ field_config = {
12
+ "data": {"display_name": "Data"},
13
+ "keys": {
14
+ "display_name": "Keys",
15
+ "info": "The keys to extract from the data.",
16
+ "input_types": [],
17
+ },
18
+ "silent_error": {
19
+ "display_name": "Silent Errors",
20
+ "info": "If True, errors will not be raised.",
21
+ "advanced": True,
22
+ },
23
+ }
24
+
25
+ def build(self, data: Data, keys: list[str], *, silent_error: bool = True) -> Data:
26
+ """Extracts the keys from a data.
27
+
28
+ Args:
29
+ data (Data): The data from which to extract the keys.
30
+ keys (list[str]): The keys to extract from the data.
31
+ silent_error (bool): If True, errors will not be raised.
32
+
33
+ Returns:
34
+ dict: The extracted keys.
35
+ """
36
+ extracted_keys = {}
37
+ for key in keys:
38
+ try:
39
+ extracted_keys[key] = getattr(data, key)
40
+ except AttributeError as e:
41
+ if not silent_error:
42
+ msg = f"The key '{key}' does not exist in the data."
43
+ raise KeyError(msg) from e
44
+ return_data = Data(data=extracted_keys)
45
+ self.status = return_data
46
+ return return_data
@@ -0,0 +1,57 @@
1
+ # JSON Document Builder
2
+
3
+ # Build a Document containing a JSON object using a key and another Document page content.
4
+
5
+ # **Params**
6
+
7
+ # - **Key:** The key to use for the JSON object.
8
+ # - **Document:** The Document page to use for the JSON object.
9
+
10
+ # **Output**
11
+
12
+ # - **Document:** The Document containing the JSON object.
13
+
14
+
15
+ import orjson
16
+ from langchain_core.documents import Document
17
+
18
+ from lfx.custom.custom_component.custom_component import CustomComponent
19
+ from lfx.io import HandleInput, StrInput
20
+
21
+
22
+ class JSONDocumentBuilder(CustomComponent):
23
+ display_name: str = "JSON Document Builder"
24
+ description: str = "Build a Document containing a JSON object using a key and another Document page content."
25
+ name = "JSONDocumentBuilder"
26
+ documentation: str = "https://docs.langflow.org/legacy-core-components"
27
+ legacy = True
28
+
29
+ inputs = [
30
+ StrInput(
31
+ name="key",
32
+ display_name="Key",
33
+ required=True,
34
+ ),
35
+ HandleInput(
36
+ name="document",
37
+ display_name="Document",
38
+ required=True,
39
+ ),
40
+ ]
41
+
42
+ def build(
43
+ self,
44
+ key: str,
45
+ document: Document,
46
+ ) -> Document:
47
+ documents = None
48
+ if isinstance(document, list):
49
+ documents = [Document(page_content=orjson.dumps({key: doc.page_content}).decode()) for doc in document]
50
+ elif isinstance(document, Document):
51
+ documents = Document(page_content=orjson.dumps({key: document.page_content}).decode())
52
+ else:
53
+ msg = f"Expected Document or list of Documents, got {type(document)}"
54
+ raise TypeError(msg)
55
+
56
+ self.repr_value = documents
57
+ return documents
@@ -0,0 +1,20 @@
1
+ from lfx.custom.custom_component.custom_component import CustomComponent
2
+ from lfx.schema.data import Data
3
+
4
+
5
+ class ListFlowsComponent(CustomComponent):
6
+ display_name = "List Flows"
7
+ description = "A component to list all available flows."
8
+ icon = "ListFlows"
9
+ beta: bool = True
10
+ name = "ListFlows"
11
+
12
+ def build_config(self):
13
+ return {}
14
+
15
+ async def build(
16
+ self,
17
+ ) -> list[Data]:
18
+ flows = await self.alist_flows()
19
+ self.status = flows
20
+ return flows
@@ -0,0 +1,61 @@
1
+ # from lfx.field_typing import Data
2
+
3
+ from langchain_core.tools import StructuredTool
4
+ from mcp import types
5
+
6
+ from lfx.base.mcp.util import (
7
+ MCPSseClient,
8
+ create_input_schema_from_json_schema,
9
+ create_tool_coroutine,
10
+ create_tool_func,
11
+ )
12
+ from lfx.custom.custom_component.component import Component
13
+ from lfx.field_typing import Tool
14
+ from lfx.io import MessageTextInput, Output
15
+
16
+
17
+ class MCPSse(Component):
18
+ client = MCPSseClient()
19
+ tools = types.ListToolsResult
20
+ tool_names = [str]
21
+ display_name = "MCP Tools (SSE) [DEPRECATED]"
22
+ description = "Connects to an MCP server over SSE and exposes it's tools as langflow tools to be used by an Agent."
23
+ documentation: str = "https://docs.langflow.org/components-custom-components"
24
+ icon = "code"
25
+ name = "MCPSse"
26
+ legacy = True
27
+
28
+ inputs = [
29
+ MessageTextInput(
30
+ name="url",
31
+ display_name="mcp sse url",
32
+ info="sse url",
33
+ value="http://localhost:7860/api/v1/mcp/sse",
34
+ tool_mode=True,
35
+ ),
36
+ ]
37
+
38
+ outputs = [
39
+ Output(display_name="Tools", name="tools", method="build_output"),
40
+ ]
41
+
42
+ async def build_output(self) -> list[Tool]:
43
+ if self.client.session is None:
44
+ self.tools = await self.client.connect_to_server(self.url, {})
45
+
46
+ tool_list = []
47
+
48
+ for tool in self.tools:
49
+ args_schema = create_input_schema_from_json_schema(tool.inputSchema)
50
+ tool_list.append(
51
+ StructuredTool(
52
+ name=tool.name, # maybe format this
53
+ description=tool.description,
54
+ args_schema=args_schema,
55
+ func=create_tool_func(tool.name, args_schema, self.client.session),
56
+ coroutine=create_tool_coroutine(tool.name, args_schema, self.client.session),
57
+ )
58
+ )
59
+
60
+ self.tool_names = [tool.name for tool in self.tools]
61
+ return tool_list
@@ -0,0 +1,62 @@
1
+ # from lfx.field_typing import Data
2
+
3
+ from langchain_core.tools import StructuredTool
4
+ from mcp import types
5
+
6
+ from lfx.base.mcp.util import (
7
+ MCPStdioClient,
8
+ create_input_schema_from_json_schema,
9
+ create_tool_coroutine,
10
+ create_tool_func,
11
+ )
12
+ from lfx.custom.custom_component.component import Component
13
+ from lfx.field_typing import Tool
14
+ from lfx.io import MessageTextInput, Output
15
+
16
+
17
+ class MCPStdio(Component):
18
+ client = MCPStdioClient()
19
+ tools = types.ListToolsResult
20
+ tool_names = [str]
21
+ display_name = "MCP Tools (stdio) [DEPRECATED]"
22
+ description = (
23
+ "Connects to an MCP server over stdio and exposes it's tools as langflow tools to be used by an Agent."
24
+ )
25
+ documentation: str = "https://docs.langflow.org/components-custom-components"
26
+ icon = "code"
27
+ name = "MCPStdio"
28
+ legacy = True
29
+
30
+ inputs = [
31
+ MessageTextInput(
32
+ name="command",
33
+ display_name="mcp command",
34
+ info="mcp command",
35
+ value="uvx mcp-sse-shim@latest",
36
+ tool_mode=True,
37
+ ),
38
+ ]
39
+
40
+ outputs = [
41
+ Output(display_name="Tools", name="tools", method="build_output"),
42
+ ]
43
+
44
+ async def build_output(self) -> list[Tool]:
45
+ if self.client.session is None:
46
+ self.tools = await self.client.connect_to_server(self.command)
47
+
48
+ tool_list = []
49
+
50
+ for tool in self.tools:
51
+ args_schema = create_input_schema_from_json_schema(tool.inputSchema)
52
+ tool_list.append(
53
+ StructuredTool(
54
+ name=tool.name,
55
+ description=tool.description,
56
+ args_schema=args_schema,
57
+ func=create_tool_func(tool.name, args_schema, self.client.session),
58
+ coroutine=create_tool_coroutine(tool.name, args_schema, self.client.session),
59
+ )
60
+ )
61
+ self.tool_names = [tool.name for tool in self.tools]
62
+ return tool_list
@@ -0,0 +1,93 @@
1
+ from lfx.custom.custom_component.component import Component
2
+ from lfx.io import DataInput, Output
3
+ from lfx.log.logger import logger
4
+ from lfx.schema.data import Data
5
+
6
+
7
+ class MergeDataComponent(Component):
8
+ """MergeDataComponent is responsible for combining multiple Data objects into a unified list of Data objects.
9
+
10
+ It ensures that all keys across the input Data objects are present in each merged Data object.
11
+ Missing keys are filled with empty strings to maintain consistency.
12
+ """
13
+
14
+ display_name = "Merge Data"
15
+ description = (
16
+ "Combines multiple Data objects into a unified list, ensuring all keys are present in each Data object."
17
+ )
18
+ icon = "merge"
19
+
20
+ inputs = [
21
+ DataInput(
22
+ name="data_inputs",
23
+ display_name="Data Inputs",
24
+ is_list=True,
25
+ info="A list of Data inputs objects to be merged.",
26
+ ),
27
+ ]
28
+
29
+ outputs = [
30
+ Output(
31
+ display_name="Merged Data",
32
+ name="merged_data",
33
+ method="merge_data",
34
+ ),
35
+ ]
36
+
37
+ def merge_data(self) -> list[Data]:
38
+ """Merges multiple Data objects into a single list of Data objects.
39
+
40
+ Ensures that all keys from the input Data objects are present in each merged Data object.
41
+ Missing keys are filled with empty strings.
42
+
43
+ Returns:
44
+ List[Data]: A list of merged Data objects with consistent keys.
45
+ """
46
+ logger.info("Initiating the data merging process.")
47
+
48
+ data_inputs: list[Data] = self.data_inputs
49
+ logger.debug(f"Received {len(data_inputs)} data input(s) for merging.")
50
+
51
+ if not data_inputs:
52
+ logger.warning("No data inputs provided. Returning an empty list.")
53
+ return []
54
+
55
+ # Collect all unique keys from all Data objects
56
+ all_keys: set[str] = set()
57
+ for idx, data_input in enumerate(data_inputs):
58
+ if not isinstance(data_input, Data):
59
+ error_message = f"Data input at index {idx} is not of type Data."
60
+ logger.error(error_message)
61
+ type_error_message = (
62
+ f"All items in data_inputs must be of type Data. Item at index {idx} is {type(data_input)}"
63
+ )
64
+ raise TypeError(type_error_message)
65
+ all_keys.update(data_input.data.keys())
66
+ logger.debug(f"Collected {len(all_keys)} unique key(s) from input data.")
67
+
68
+ try:
69
+ # Create new list of Data objects with missing keys filled with empty strings
70
+ merged_data_list = []
71
+ for idx, data_input in enumerate(data_inputs):
72
+ merged_data_dict = {}
73
+
74
+ for key in all_keys:
75
+ # Use the existing value if the key exists, otherwise use an empty string
76
+ value = data_input.data.get(key, "")
77
+ if key not in data_input.data:
78
+ log_message = f"Key '{key}' missing in data input at index {idx}. Assigning empty string."
79
+ logger.debug(log_message)
80
+ merged_data_dict[key] = value
81
+
82
+ merged_data = Data(
83
+ text_key=data_input.text_key, data=merged_data_dict, default_value=data_input.default_value
84
+ )
85
+ merged_data_list.append(merged_data)
86
+ logger.debug(f"Merged Data object created for input at index {idx}.")
87
+
88
+ except Exception:
89
+ logger.exception("An error occurred during the data merging process.")
90
+ raise
91
+
92
+ logger.info("Data merging process completed successfully.")
93
+ return merged_data_list
@@ -0,0 +1,37 @@
1
+ from lfx.custom.custom_component.custom_component import CustomComponent
2
+ from lfx.schema.message import Message
3
+ from lfx.utils.constants import MESSAGE_SENDER_AI, MESSAGE_SENDER_USER
4
+
5
+
6
+ class MessageComponent(CustomComponent):
7
+ display_name = "Message"
8
+ description = "Creates a Message object given a Session ID."
9
+ name = "Message"
10
+
11
+ def build_config(self):
12
+ return {
13
+ "sender": {
14
+ "options": [MESSAGE_SENDER_AI, MESSAGE_SENDER_USER],
15
+ "display_name": "Sender Type",
16
+ },
17
+ "sender_name": {"display_name": "Sender Name"},
18
+ "text": {"display_name": "Text"},
19
+ "session_id": {
20
+ "display_name": "Session ID",
21
+ "info": "Session ID of the chat history.",
22
+ "input_types": ["Message"],
23
+ },
24
+ }
25
+
26
+ def build(
27
+ self,
28
+ sender: str = MESSAGE_SENDER_USER,
29
+ sender_name: str | None = None,
30
+ session_id: str | None = None,
31
+ text: str = "",
32
+ ) -> Message:
33
+ flow_id = self.graph.flow_id if hasattr(self, "graph") else None
34
+ message = Message(text=text, sender=sender, sender_name=sender_name, flow_id=flow_id, session_id=session_id)
35
+
36
+ self.status = message
37
+ return message