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,109 @@
1
+ from lfx.base.models.aws_constants import AWS_EMBEDDING_MODEL_IDS, AWS_REGIONS
2
+ from lfx.base.models.model import LCModelComponent
3
+ from lfx.field_typing import Embeddings
4
+ from lfx.inputs.inputs import SecretStrInput
5
+ from lfx.io import DropdownInput, MessageTextInput, Output
6
+
7
+
8
+ class AmazonBedrockEmbeddingsComponent(LCModelComponent):
9
+ display_name: str = "Amazon Bedrock Embeddings"
10
+ description: str = "Generate embeddings using Amazon Bedrock models."
11
+ icon = "Amazon"
12
+ name = "AmazonBedrockEmbeddings"
13
+
14
+ inputs = [
15
+ DropdownInput(
16
+ name="model_id",
17
+ display_name="Model Id",
18
+ options=AWS_EMBEDDING_MODEL_IDS,
19
+ value="amazon.titan-embed-text-v1",
20
+ ),
21
+ SecretStrInput(
22
+ name="aws_access_key_id",
23
+ display_name="AWS Access Key ID",
24
+ info="The access key for your AWS account."
25
+ "Usually set in Python code as the environment variable 'AWS_ACCESS_KEY_ID'.",
26
+ value="AWS_ACCESS_KEY_ID",
27
+ required=True,
28
+ ),
29
+ SecretStrInput(
30
+ name="aws_secret_access_key",
31
+ display_name="AWS Secret Access Key",
32
+ info="The secret key for your AWS account. "
33
+ "Usually set in Python code as the environment variable 'AWS_SECRET_ACCESS_KEY'.",
34
+ value="AWS_SECRET_ACCESS_KEY",
35
+ required=True,
36
+ ),
37
+ SecretStrInput(
38
+ name="aws_session_token",
39
+ display_name="AWS Session Token",
40
+ advanced=False,
41
+ info="The session key for your AWS account. "
42
+ "Only needed for temporary credentials. "
43
+ "Usually set in Python code as the environment variable 'AWS_SESSION_TOKEN'.",
44
+ value="AWS_SESSION_TOKEN",
45
+ ),
46
+ SecretStrInput(
47
+ name="credentials_profile_name",
48
+ display_name="Credentials Profile Name",
49
+ advanced=True,
50
+ info="The name of the profile to use from your "
51
+ "~/.aws/credentials file. "
52
+ "If not provided, the default profile will be used.",
53
+ value="AWS_CREDENTIALS_PROFILE_NAME",
54
+ ),
55
+ DropdownInput(
56
+ name="region_name",
57
+ display_name="Region Name",
58
+ value="us-east-1",
59
+ options=AWS_REGIONS,
60
+ info="The AWS region where your Bedrock resources are located.",
61
+ ),
62
+ MessageTextInput(
63
+ name="endpoint_url",
64
+ display_name="Endpoint URL",
65
+ advanced=True,
66
+ info="The URL of the AWS Bedrock endpoint to use.",
67
+ ),
68
+ ]
69
+
70
+ outputs = [
71
+ Output(display_name="Embeddings", name="embeddings", method="build_embeddings"),
72
+ ]
73
+
74
+ def build_embeddings(self) -> Embeddings:
75
+ try:
76
+ from langchain_aws import BedrockEmbeddings
77
+ except ImportError as e:
78
+ msg = "langchain_aws is not installed. Please install it with `pip install langchain_aws`."
79
+ raise ImportError(msg) from e
80
+ try:
81
+ import boto3
82
+ except ImportError as e:
83
+ msg = "boto3 is not installed. Please install it with `pip install boto3`."
84
+ raise ImportError(msg) from e
85
+ if self.aws_access_key_id or self.aws_secret_access_key:
86
+ session = boto3.Session(
87
+ aws_access_key_id=self.aws_access_key_id,
88
+ aws_secret_access_key=self.aws_secret_access_key,
89
+ aws_session_token=self.aws_session_token,
90
+ )
91
+ elif self.credentials_profile_name:
92
+ session = boto3.Session(profile_name=self.credentials_profile_name)
93
+ else:
94
+ session = boto3.Session()
95
+
96
+ client_params = {}
97
+ if self.endpoint_url:
98
+ client_params["endpoint_url"] = self.endpoint_url
99
+ if self.region_name:
100
+ client_params["region_name"] = self.region_name
101
+
102
+ boto3_client = session.client("bedrock-runtime", **client_params)
103
+ return BedrockEmbeddings(
104
+ credentials_profile_name=self.credentials_profile_name,
105
+ client=boto3_client,
106
+ model_id=self.model_id,
107
+ endpoint_url=self.endpoint_url,
108
+ region_name=self.region_name,
109
+ )
@@ -0,0 +1,130 @@
1
+ from lfx.base.models.aws_constants import AWS_REGIONS, AWS_MODEL_IDs
2
+ from lfx.base.models.model import LCModelComponent
3
+ from lfx.field_typing import LanguageModel
4
+ from lfx.inputs.inputs import MessageTextInput, SecretStrInput
5
+ from lfx.io import DictInput, DropdownInput
6
+
7
+
8
+ class AmazonBedrockComponent(LCModelComponent):
9
+ display_name: str = "Amazon Bedrock"
10
+ description: str = (
11
+ "Generate text using Amazon Bedrock LLMs with the legacy ChatBedrock API. "
12
+ "This component is deprecated. Please use Amazon Bedrock Converse instead "
13
+ "for better compatibility, newer features, and improved conversation handling."
14
+ )
15
+ icon = "Amazon"
16
+ name = "AmazonBedrockModel"
17
+ legacy = True
18
+ replacement = "amazon.AmazonBedrockConverseModel"
19
+
20
+ inputs = [
21
+ *LCModelComponent.get_base_inputs(),
22
+ DropdownInput(
23
+ name="model_id",
24
+ display_name="Model ID",
25
+ options=AWS_MODEL_IDs,
26
+ value="anthropic.claude-3-haiku-20240307-v1:0",
27
+ info="List of available model IDs to choose from.",
28
+ ),
29
+ SecretStrInput(
30
+ name="aws_access_key_id",
31
+ display_name="AWS Access Key ID",
32
+ info="The access key for your AWS account."
33
+ "Usually set in Python code as the environment variable 'AWS_ACCESS_KEY_ID'.",
34
+ value="AWS_ACCESS_KEY_ID",
35
+ required=True,
36
+ ),
37
+ SecretStrInput(
38
+ name="aws_secret_access_key",
39
+ display_name="AWS Secret Access Key",
40
+ info="The secret key for your AWS account. "
41
+ "Usually set in Python code as the environment variable 'AWS_SECRET_ACCESS_KEY'.",
42
+ value="AWS_SECRET_ACCESS_KEY",
43
+ required=True,
44
+ ),
45
+ SecretStrInput(
46
+ name="aws_session_token",
47
+ display_name="AWS Session Token",
48
+ advanced=False,
49
+ info="The session key for your AWS account. "
50
+ "Only needed for temporary credentials. "
51
+ "Usually set in Python code as the environment variable 'AWS_SESSION_TOKEN'.",
52
+ load_from_db=False,
53
+ ),
54
+ SecretStrInput(
55
+ name="credentials_profile_name",
56
+ display_name="Credentials Profile Name",
57
+ advanced=True,
58
+ info="The name of the profile to use from your "
59
+ "~/.aws/credentials file. "
60
+ "If not provided, the default profile will be used.",
61
+ load_from_db=False,
62
+ ),
63
+ DropdownInput(
64
+ name="region_name",
65
+ display_name="Region Name",
66
+ value="us-east-1",
67
+ options=AWS_REGIONS,
68
+ info="The AWS region where your Bedrock resources are located.",
69
+ ),
70
+ DictInput(
71
+ name="model_kwargs",
72
+ display_name="Model Kwargs",
73
+ advanced=True,
74
+ is_list=True,
75
+ info="Additional keyword arguments to pass to the model.",
76
+ ),
77
+ MessageTextInput(
78
+ name="endpoint_url",
79
+ display_name="Endpoint URL",
80
+ advanced=True,
81
+ info="The URL of the Bedrock endpoint to use.",
82
+ ),
83
+ ]
84
+
85
+ def build_model(self) -> LanguageModel: # type: ignore[type-var]
86
+ try:
87
+ from langchain_aws import ChatBedrock
88
+ except ImportError as e:
89
+ msg = "langchain_aws is not installed. Please install it with `pip install langchain_aws`."
90
+ raise ImportError(msg) from e
91
+ try:
92
+ import boto3
93
+ except ImportError as e:
94
+ msg = "boto3 is not installed. Please install it with `pip install boto3`."
95
+ raise ImportError(msg) from e
96
+ if self.aws_access_key_id or self.aws_secret_access_key:
97
+ try:
98
+ session = boto3.Session(
99
+ aws_access_key_id=self.aws_access_key_id,
100
+ aws_secret_access_key=self.aws_secret_access_key,
101
+ aws_session_token=self.aws_session_token,
102
+ )
103
+ except Exception as e:
104
+ msg = "Could not create a boto3 session."
105
+ raise ValueError(msg) from e
106
+ elif self.credentials_profile_name:
107
+ session = boto3.Session(profile_name=self.credentials_profile_name)
108
+ else:
109
+ session = boto3.Session()
110
+
111
+ client_params = {}
112
+ if self.endpoint_url:
113
+ client_params["endpoint_url"] = self.endpoint_url
114
+ if self.region_name:
115
+ client_params["region_name"] = self.region_name
116
+
117
+ boto3_client = session.client("bedrock-runtime", **client_params)
118
+ try:
119
+ output = ChatBedrock(
120
+ client=boto3_client,
121
+ model_id=self.model_id,
122
+ region_name=self.region_name,
123
+ model_kwargs=self.model_kwargs,
124
+ endpoint_url=self.endpoint_url,
125
+ streaming=self.stream,
126
+ )
127
+ except Exception as e:
128
+ msg = "Could not connect to AmazonBedrock API."
129
+ raise ValueError(msg) from e
130
+ return output
@@ -0,0 +1,211 @@
1
+ from pathlib import Path
2
+ from typing import Any
3
+
4
+ from lfx.custom.custom_component.component import Component
5
+ from lfx.io import (
6
+ BoolInput,
7
+ DropdownInput,
8
+ HandleInput,
9
+ Output,
10
+ SecretStrInput,
11
+ StrInput,
12
+ )
13
+
14
+
15
+ class S3BucketUploaderComponent(Component):
16
+ """S3BucketUploaderComponent is a component responsible for uploading files to an S3 bucket.
17
+
18
+ It provides two strategies for file upload: "By Data" and "By File Name". The component
19
+ requires AWS credentials and bucket details as inputs and processes files accordingly.
20
+
21
+ Attributes:
22
+ display_name (str): The display name of the component.
23
+ description (str): A brief description of the components functionality.
24
+ icon (str): The icon representing the component.
25
+ name (str): The internal name of the component.
26
+ inputs (list): A list of input configurations required by the component.
27
+ outputs (list): A list of output configurations provided by the component.
28
+
29
+ Methods:
30
+ process_files() -> None:
31
+ Processes files based on the selected strategy. Calls the appropriate method
32
+ based on the strategy attribute.
33
+ process_files_by_data() -> None:
34
+ Processes and uploads files to an S3 bucket based on the data inputs. Iterates
35
+ over the data inputs, logs the file path and text content, and uploads each file
36
+ to the specified S3 bucket if both file path and text content are available.
37
+ process_files_by_name() -> None:
38
+ Processes and uploads files to an S3 bucket based on their names. Iterates through
39
+ the list of data inputs, retrieves the file path from each data item, and uploads
40
+ the file to the specified S3 bucket if the file path is available. Logs the file
41
+ path being uploaded.
42
+ _s3_client() -> Any:
43
+ Creates and returns an S3 client using the provided AWS access key ID and secret
44
+ access key.
45
+
46
+ Please note that this component requires the boto3 library to be installed. It is designed
47
+ to work with File and Director components as inputs
48
+ """
49
+
50
+ display_name = "S3 Bucket Uploader"
51
+ description = "Uploads files to S3 bucket."
52
+ icon = "Amazon"
53
+ name = "s3bucketuploader"
54
+
55
+ inputs = [
56
+ SecretStrInput(
57
+ name="aws_access_key_id",
58
+ display_name="AWS Access Key ID",
59
+ required=True,
60
+ password=True,
61
+ info="AWS Access key ID.",
62
+ ),
63
+ SecretStrInput(
64
+ name="aws_secret_access_key",
65
+ display_name="AWS Secret Key",
66
+ required=True,
67
+ password=True,
68
+ info="AWS Secret Key.",
69
+ ),
70
+ StrInput(
71
+ name="bucket_name",
72
+ display_name="Bucket Name",
73
+ info="Enter the name of the bucket.",
74
+ advanced=False,
75
+ ),
76
+ DropdownInput(
77
+ name="strategy",
78
+ display_name="Strategy for file upload",
79
+ options=["Store Data", "Store Original File"],
80
+ value="By Data",
81
+ info=(
82
+ "Choose the strategy to upload the file. By Data means that the source file "
83
+ "is parsed and stored as LangFlow data. By File Name means that the source "
84
+ "file is uploaded as is."
85
+ ),
86
+ ),
87
+ HandleInput(
88
+ name="data_inputs",
89
+ display_name="Data Inputs",
90
+ info="The data to split.",
91
+ input_types=["Data"],
92
+ is_list=True,
93
+ required=True,
94
+ ),
95
+ StrInput(
96
+ name="s3_prefix",
97
+ display_name="S3 Prefix",
98
+ info="Prefix for all files.",
99
+ advanced=True,
100
+ ),
101
+ BoolInput(
102
+ name="strip_path",
103
+ display_name="Strip Path",
104
+ info="Removes path from file path.",
105
+ required=True,
106
+ advanced=True,
107
+ ),
108
+ ]
109
+
110
+ outputs = [
111
+ Output(display_name="Writes to AWS Bucket", name="data", method="process_files"),
112
+ ]
113
+
114
+ def process_files(self) -> None:
115
+ """Process files based on the selected strategy.
116
+
117
+ This method uses a strategy pattern to process files. The strategy is determined
118
+ by the `self.strategy` attribute, which can be either "By Data" or "By File Name".
119
+ Depending on the strategy, the corresponding method (`process_files_by_data` or
120
+ `process_files_by_name`) is called. If an invalid strategy is provided, an error
121
+ is logged.
122
+
123
+ Returns:
124
+ None
125
+ """
126
+ strategy_methods = {
127
+ "Store Data": self.process_files_by_data,
128
+ "Store Original File": self.process_files_by_name,
129
+ }
130
+ strategy_methods.get(self.strategy, lambda: self.log("Invalid strategy"))()
131
+
132
+ def process_files_by_data(self) -> None:
133
+ """Processes and uploads files to an S3 bucket based on the data inputs.
134
+
135
+ This method iterates over the data inputs, logs the file path and text content,
136
+ and uploads each file to the specified S3 bucket if both file path and text content
137
+ are available.
138
+
139
+ Args:
140
+ None
141
+
142
+ Returns:
143
+ None
144
+ """
145
+ for data_item in self.data_inputs:
146
+ file_path = data_item.data.get("file_path")
147
+ text_content = data_item.data.get("text")
148
+
149
+ if file_path and text_content:
150
+ self._s3_client().put_object(
151
+ Bucket=self.bucket_name, Key=self._normalize_path(file_path), Body=text_content
152
+ )
153
+
154
+ def process_files_by_name(self) -> None:
155
+ """Processes and uploads files to an S3 bucket based on their names.
156
+
157
+ Iterates through the list of data inputs, retrieves the file path from each data item,
158
+ and uploads the file to the specified S3 bucket if the file path is available.
159
+ Logs the file path being uploaded.
160
+
161
+ Returns:
162
+ None
163
+ """
164
+ for data_item in self.data_inputs:
165
+ file_path = data_item.data.get("file_path")
166
+ self.log(f"Uploading file: {file_path}")
167
+ if file_path:
168
+ self._s3_client().upload_file(file_path, Bucket=self.bucket_name, Key=self._normalize_path(file_path))
169
+
170
+ def _s3_client(self) -> Any:
171
+ """Creates and returns an S3 client using the provided AWS access key ID and secret access key.
172
+
173
+ Returns:
174
+ Any: A boto3 S3 client instance.
175
+ """
176
+ try:
177
+ import boto3
178
+ except ImportError as e:
179
+ msg = "boto3 is not installed. Please install it using `uv pip install boto3`."
180
+ raise ImportError(msg) from e
181
+
182
+ return boto3.client(
183
+ "s3",
184
+ aws_access_key_id=self.aws_access_key_id,
185
+ aws_secret_access_key=self.aws_secret_access_key,
186
+ )
187
+
188
+ def _normalize_path(self, file_path) -> str:
189
+ """Process the file path based on the s3_prefix and path_as_prefix.
190
+
191
+ Args:
192
+ file_path (str): The original file path.
193
+ s3_prefix (str): The S3 prefix to use.
194
+ path_as_prefix (bool): Whether to use the file path as the S3 prefix.
195
+
196
+ Returns:
197
+ str: The processed file path.
198
+ """
199
+ prefix = self.s3_prefix
200
+ strip_path = self.strip_path
201
+ processed_path: str = file_path
202
+
203
+ if strip_path:
204
+ # Filename only
205
+ processed_path = Path(file_path).name
206
+
207
+ # Concatenate the s3_prefix if it exists
208
+ if prefix:
209
+ processed_path = str(Path(prefix) / processed_path)
210
+
211
+ return processed_path
@@ -0,0 +1,34 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import TYPE_CHECKING, Any
4
+
5
+ from lfx.components._importing import import_mod
6
+
7
+ if TYPE_CHECKING:
8
+ from lfx.components.anthropic.anthropic import AnthropicModelComponent
9
+
10
+ _dynamic_imports = {
11
+ "AnthropicModelComponent": "anthropic",
12
+ }
13
+
14
+ __all__ = [
15
+ "AnthropicModelComponent",
16
+ ]
17
+
18
+
19
+ def __getattr__(attr_name: str) -> Any:
20
+ """Lazily import Anthropic components on attribute access."""
21
+ if attr_name not in _dynamic_imports:
22
+ msg = f"module '{__name__}' has no attribute '{attr_name}'"
23
+ raise AttributeError(msg)
24
+ try:
25
+ result = import_mod(attr_name, _dynamic_imports[attr_name], __spec__.parent)
26
+ except (ModuleNotFoundError, ImportError, AttributeError) as e:
27
+ msg = f"Could not import '{attr_name}' from '{__name__}': {e}"
28
+ raise AttributeError(msg) from e
29
+ globals()[attr_name] = result
30
+ return result
31
+
32
+
33
+ def __dir__() -> list[str]:
34
+ return list(__all__)
@@ -0,0 +1,187 @@
1
+ from typing import Any, cast
2
+
3
+ import requests
4
+ from pydantic import ValidationError
5
+
6
+ from lfx.base.models.anthropic_constants import (
7
+ ANTHROPIC_MODELS,
8
+ DEFAULT_ANTHROPIC_API_URL,
9
+ TOOL_CALLING_SUPPORTED_ANTHROPIC_MODELS,
10
+ TOOL_CALLING_UNSUPPORTED_ANTHROPIC_MODELS,
11
+ )
12
+ from lfx.base.models.model import LCModelComponent
13
+ from lfx.field_typing import LanguageModel
14
+ from lfx.field_typing.range_spec import RangeSpec
15
+ from lfx.io import BoolInput, DropdownInput, IntInput, MessageTextInput, SecretStrInput, SliderInput
16
+ from lfx.log.logger import logger
17
+ from lfx.schema.dotdict import dotdict
18
+
19
+
20
+ class AnthropicModelComponent(LCModelComponent):
21
+ display_name = "Anthropic"
22
+ description = "Generate text using Anthropic's Messages API and models."
23
+ icon = "Anthropic"
24
+ name = "AnthropicModel"
25
+
26
+ inputs = [
27
+ *LCModelComponent.get_base_inputs(),
28
+ IntInput(
29
+ name="max_tokens",
30
+ display_name="Max Tokens",
31
+ advanced=True,
32
+ value=4096,
33
+ info="The maximum number of tokens to generate. Set to 0 for unlimited tokens.",
34
+ ),
35
+ DropdownInput(
36
+ name="model_name",
37
+ display_name="Model Name",
38
+ options=ANTHROPIC_MODELS,
39
+ refresh_button=True,
40
+ value=ANTHROPIC_MODELS[0],
41
+ combobox=True,
42
+ ),
43
+ SecretStrInput(
44
+ name="api_key",
45
+ display_name="Anthropic API Key",
46
+ info="Your Anthropic API key.",
47
+ value=None,
48
+ required=True,
49
+ real_time_refresh=True,
50
+ ),
51
+ SliderInput(
52
+ name="temperature",
53
+ display_name="Temperature",
54
+ value=0.1,
55
+ info="Run inference with this temperature. Must by in the closed interval [0.0, 1.0].",
56
+ range_spec=RangeSpec(min=0, max=1, step=0.01),
57
+ advanced=True,
58
+ ),
59
+ MessageTextInput(
60
+ name="base_url",
61
+ display_name="Anthropic API URL",
62
+ info="Endpoint of the Anthropic API. Defaults to 'https://api.anthropic.com' if not specified.",
63
+ value=DEFAULT_ANTHROPIC_API_URL,
64
+ real_time_refresh=True,
65
+ advanced=True,
66
+ ),
67
+ BoolInput(
68
+ name="tool_model_enabled",
69
+ display_name="Enable Tool Models",
70
+ info=(
71
+ "Select if you want to use models that can work with tools. If yes, only those models will be shown."
72
+ ),
73
+ advanced=False,
74
+ value=False,
75
+ real_time_refresh=True,
76
+ ),
77
+ ]
78
+
79
+ def build_model(self) -> LanguageModel: # type: ignore[type-var]
80
+ try:
81
+ from langchain_anthropic.chat_models import ChatAnthropic
82
+ except ImportError as e:
83
+ msg = "langchain_anthropic is not installed. Please install it with `pip install langchain_anthropic`."
84
+ raise ImportError(msg) from e
85
+ try:
86
+ max_tokens_value = getattr(self, "max_tokens", "")
87
+ max_tokens_value = 4096 if max_tokens_value == "" else int(max_tokens_value)
88
+ output = ChatAnthropic(
89
+ model=self.model_name,
90
+ anthropic_api_key=self.api_key,
91
+ max_tokens=max_tokens_value,
92
+ temperature=self.temperature,
93
+ anthropic_api_url=self.base_url or DEFAULT_ANTHROPIC_API_URL,
94
+ streaming=self.stream,
95
+ )
96
+ except ValidationError:
97
+ raise
98
+ except Exception as e:
99
+ msg = "Could not connect to Anthropic API."
100
+ raise ValueError(msg) from e
101
+
102
+ return output
103
+
104
+ def get_models(self, *, tool_model_enabled: bool | None = None) -> list[str]:
105
+ try:
106
+ import anthropic
107
+
108
+ client = anthropic.Anthropic(api_key=self.api_key)
109
+ models = client.models.list(limit=20).data
110
+ model_ids = ANTHROPIC_MODELS + [model.id for model in models]
111
+ except (ImportError, ValueError, requests.exceptions.RequestException) as e:
112
+ logger.exception(f"Error getting model names: {e}")
113
+ model_ids = ANTHROPIC_MODELS
114
+
115
+ if tool_model_enabled:
116
+ try:
117
+ from langchain_anthropic.chat_models import ChatAnthropic
118
+ except ImportError as e:
119
+ msg = "langchain_anthropic is not installed. Please install it with `pip install langchain_anthropic`."
120
+ raise ImportError(msg) from e
121
+
122
+ # Create a new list instead of modifying while iterating
123
+ filtered_models = []
124
+ for model in model_ids:
125
+ if model in TOOL_CALLING_SUPPORTED_ANTHROPIC_MODELS:
126
+ filtered_models.append(model)
127
+ continue
128
+
129
+ model_with_tool = ChatAnthropic(
130
+ model=model, # Use the current model being checked
131
+ anthropic_api_key=self.api_key,
132
+ anthropic_api_url=cast("str", self.base_url) or DEFAULT_ANTHROPIC_API_URL,
133
+ )
134
+
135
+ if (
136
+ not self.supports_tool_calling(model_with_tool)
137
+ or model in TOOL_CALLING_UNSUPPORTED_ANTHROPIC_MODELS
138
+ ):
139
+ continue
140
+
141
+ filtered_models.append(model)
142
+
143
+ return filtered_models
144
+
145
+ return model_ids
146
+
147
+ def _get_exception_message(self, exception: Exception) -> str | None:
148
+ """Get a message from an Anthropic exception.
149
+
150
+ Args:
151
+ exception (Exception): The exception to get the message from.
152
+
153
+ Returns:
154
+ str: The message from the exception.
155
+ """
156
+ try:
157
+ from anthropic import BadRequestError
158
+ except ImportError:
159
+ return None
160
+ if isinstance(exception, BadRequestError):
161
+ message = exception.body.get("error", {}).get("message")
162
+ if message:
163
+ return message
164
+ return None
165
+
166
+ def update_build_config(self, build_config: dotdict, field_value: Any, field_name: str | None = None):
167
+ if "base_url" in build_config and build_config["base_url"]["value"] is None:
168
+ build_config["base_url"]["value"] = DEFAULT_ANTHROPIC_API_URL
169
+ self.base_url = DEFAULT_ANTHROPIC_API_URL
170
+ if field_name in {"base_url", "model_name", "tool_model_enabled", "api_key"} and field_value:
171
+ try:
172
+ if len(self.api_key) == 0:
173
+ ids = ANTHROPIC_MODELS
174
+ else:
175
+ try:
176
+ ids = self.get_models(tool_model_enabled=self.tool_model_enabled)
177
+ except (ImportError, ValueError, requests.exceptions.RequestException) as e:
178
+ logger.exception(f"Error getting model names: {e}")
179
+ ids = ANTHROPIC_MODELS
180
+ build_config.setdefault("model_name", {})
181
+ build_config["model_name"]["options"] = ids
182
+ build_config["model_name"].setdefault("value", ids[0])
183
+ build_config["model_name"]["combobox"] = True
184
+ except Exception as e:
185
+ msg = f"Error getting model names: {e}"
186
+ raise ValueError(msg) from e
187
+ return build_config
@@ -0,0 +1,5 @@
1
+ from .apify_actor import ApifyActorsComponent
2
+
3
+ __all__ = [
4
+ "ApifyActorsComponent",
5
+ ]