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,97 @@
1
+ from typing import TYPE_CHECKING
2
+
3
+ from langchain_community.vectorstores import Vectara
4
+
5
+ from lfx.base.vectorstores.model import LCVectorStoreComponent, check_cached_vector_store
6
+ from lfx.helpers.data import docs_to_data
7
+ from lfx.io import HandleInput, IntInput, SecretStrInput, StrInput
8
+ from lfx.schema.data import Data
9
+
10
+ if TYPE_CHECKING:
11
+ from lfx.schema.dataframe import DataFrame
12
+
13
+
14
+ class VectaraVectorStoreComponent(LCVectorStoreComponent):
15
+ """Vectara Vector Store with search capabilities."""
16
+
17
+ display_name: str = "Vectara"
18
+ description: str = "Vectara Vector Store with search capabilities"
19
+ name = "Vectara"
20
+ icon = "Vectara"
21
+
22
+ inputs = [
23
+ StrInput(name="vectara_customer_id", display_name="Vectara Customer ID", required=True),
24
+ StrInput(name="vectara_corpus_id", display_name="Vectara Corpus ID", required=True),
25
+ SecretStrInput(name="vectara_api_key", display_name="Vectara API Key", required=True),
26
+ HandleInput(
27
+ name="embedding",
28
+ display_name="Embedding",
29
+ input_types=["Embeddings"],
30
+ ),
31
+ *LCVectorStoreComponent.inputs,
32
+ IntInput(
33
+ name="number_of_results",
34
+ display_name="Number of Results",
35
+ info="Number of results to return.",
36
+ value=4,
37
+ advanced=True,
38
+ ),
39
+ ]
40
+
41
+ @check_cached_vector_store
42
+ def build_vector_store(self) -> Vectara:
43
+ """Builds the Vectara object."""
44
+ try:
45
+ from langchain_community.vectorstores import Vectara
46
+ except ImportError as e:
47
+ msg = "Could not import Vectara. Please install it with `pip install langchain-community`."
48
+ raise ImportError(msg) from e
49
+
50
+ vectara = Vectara(
51
+ vectara_customer_id=self.vectara_customer_id,
52
+ vectara_corpus_id=self.vectara_corpus_id,
53
+ vectara_api_key=self.vectara_api_key,
54
+ )
55
+
56
+ self._add_documents_to_vector_store(vectara)
57
+ return vectara
58
+
59
+ def _add_documents_to_vector_store(self, vector_store: Vectara) -> None:
60
+ """Adds documents to the Vector Store."""
61
+ ingest_data: list | Data | DataFrame = self.ingest_data
62
+ if not ingest_data:
63
+ self.status = "No documents to add to Vectara"
64
+ return
65
+
66
+ # Convert DataFrame to Data if needed using parent's method
67
+ ingest_data = self._prepare_ingest_data()
68
+
69
+ documents = []
70
+ for _input in ingest_data or []:
71
+ if isinstance(_input, Data):
72
+ documents.append(_input.to_lc_document())
73
+ else:
74
+ documents.append(_input)
75
+
76
+ if documents:
77
+ self.log(f"Adding {len(documents)} documents to Vectara.")
78
+ vector_store.add_documents(documents)
79
+ self.status = f"Added {len(documents)} documents to Vectara"
80
+ else:
81
+ self.log("No documents to add to Vectara.")
82
+ self.status = "No valid documents to add to Vectara"
83
+
84
+ def search_documents(self) -> list[Data]:
85
+ vector_store = self.build_vector_store()
86
+
87
+ if self.search_query and isinstance(self.search_query, str) and self.search_query.strip():
88
+ docs = vector_store.similarity_search(
89
+ query=self.search_query,
90
+ k=self.number_of_results,
91
+ )
92
+
93
+ data = docs_to_data(docs)
94
+ self.status = f"Found {len(data)} results for the query: {self.search_query}"
95
+ return data
96
+ self.status = "No search query provided"
97
+ return []
@@ -0,0 +1,164 @@
1
+ from lfx.custom.custom_component.component import Component
2
+ from lfx.field_typing.range_spec import RangeSpec
3
+ from lfx.io import DropdownInput, FloatInput, IntInput, MessageTextInput, Output, SecretStrInput, StrInput
4
+ from lfx.schema.message import Message
5
+
6
+
7
+ class VectaraRagComponent(Component):
8
+ display_name = "Vectara RAG"
9
+ description = "Vectara's full end to end RAG"
10
+ documentation = "https://docs.vectara.com/docs"
11
+ icon = "Vectara"
12
+ name = "VectaraRAG"
13
+ SUMMARIZER_PROMPTS = [
14
+ "vectara-summary-ext-24-05-sml",
15
+ "vectara-summary-ext-24-05-med-omni",
16
+ "vectara-summary-ext-24-05-large",
17
+ "vectara-summary-ext-24-05-med",
18
+ "vectara-summary-ext-v1.3.0",
19
+ ]
20
+
21
+ RERANKER_TYPES = ["mmr", "rerank_multilingual_v1", "none"]
22
+
23
+ RESPONSE_LANGUAGES = [
24
+ "auto",
25
+ "eng",
26
+ "spa",
27
+ "fra",
28
+ "zho",
29
+ "deu",
30
+ "hin",
31
+ "ara",
32
+ "por",
33
+ "ita",
34
+ "jpn",
35
+ "kor",
36
+ "rus",
37
+ "tur",
38
+ "fas",
39
+ "vie",
40
+ "tha",
41
+ "heb",
42
+ "nld",
43
+ "ind",
44
+ "pol",
45
+ "ukr",
46
+ "ron",
47
+ "swe",
48
+ "ces",
49
+ "ell",
50
+ "ben",
51
+ "msa",
52
+ "urd",
53
+ ]
54
+
55
+ field_order = ["vectara_customer_id", "vectara_corpus_id", "vectara_api_key", "search_query", "reranker"]
56
+
57
+ inputs = [
58
+ StrInput(name="vectara_customer_id", display_name="Vectara Customer ID", required=True),
59
+ StrInput(name="vectara_corpus_id", display_name="Vectara Corpus ID", required=True),
60
+ SecretStrInput(name="vectara_api_key", display_name="Vectara API Key", required=True),
61
+ MessageTextInput(
62
+ name="search_query",
63
+ display_name="Search Query",
64
+ info="The query to receive an answer on.",
65
+ tool_mode=True,
66
+ ),
67
+ FloatInput(
68
+ name="lexical_interpolation",
69
+ display_name="Hybrid Search Factor",
70
+ range_spec=RangeSpec(min=0.005, max=0.1, step=0.005),
71
+ value=0.005,
72
+ advanced=True,
73
+ info="How much to weigh lexical scores compared to the embedding score. "
74
+ "0 means lexical search is not used at all, and 1 means only lexical search is used.",
75
+ ),
76
+ MessageTextInput(
77
+ name="filter",
78
+ display_name="Metadata Filters",
79
+ value="",
80
+ advanced=True,
81
+ info="The filter string to narrow the search to according to metadata attributes.",
82
+ ),
83
+ DropdownInput(
84
+ name="reranker",
85
+ display_name="Reranker Type",
86
+ options=RERANKER_TYPES,
87
+ value=RERANKER_TYPES[0],
88
+ info="How to rerank the retrieved search results.",
89
+ ),
90
+ IntInput(
91
+ name="reranker_k",
92
+ display_name="Number of Results to Rerank",
93
+ value=50,
94
+ range_spec=RangeSpec(min=1, max=100, step=1),
95
+ advanced=True,
96
+ ),
97
+ FloatInput(
98
+ name="diversity_bias",
99
+ display_name="Diversity Bias",
100
+ value=0.2,
101
+ range_spec=RangeSpec(min=0, max=1, step=0.01),
102
+ advanced=True,
103
+ info="Ranges from 0 to 1, with higher values indicating greater diversity (only applies to MMR reranker).",
104
+ ),
105
+ IntInput(
106
+ name="max_results",
107
+ display_name="Max Results to Summarize",
108
+ value=7,
109
+ range_spec=RangeSpec(min=1, max=100, step=1),
110
+ advanced=True,
111
+ info="The maximum number of search results to be available to the prompt.",
112
+ ),
113
+ DropdownInput(
114
+ name="response_lang",
115
+ display_name="Response Language",
116
+ options=RESPONSE_LANGUAGES,
117
+ value="eng",
118
+ advanced=True,
119
+ info="Use the ISO 639-1 or 639-3 language code or auto to automatically detect the language.",
120
+ ),
121
+ DropdownInput(
122
+ name="prompt",
123
+ display_name="Prompt Name",
124
+ options=SUMMARIZER_PROMPTS,
125
+ value=SUMMARIZER_PROMPTS[0],
126
+ advanced=True,
127
+ info="Only vectara-summary-ext-24-05-sml is for Growth customers; "
128
+ "all other prompts are for Scale customers only.",
129
+ ),
130
+ ]
131
+
132
+ outputs = [
133
+ Output(name="answer", display_name="Answer", method="generate_response"),
134
+ ]
135
+
136
+ def generate_response(
137
+ self,
138
+ ) -> Message:
139
+ text_output = ""
140
+
141
+ try:
142
+ from langchain_community.vectorstores import Vectara
143
+ from langchain_community.vectorstores.vectara import RerankConfig, SummaryConfig, VectaraQueryConfig
144
+ except ImportError as e:
145
+ msg = "Could not import Vectara. Please install it with `pip install langchain-community`."
146
+ raise ImportError(msg) from e
147
+
148
+ vectara = Vectara(self.vectara_customer_id, self.vectara_corpus_id, self.vectara_api_key)
149
+ rerank_config = RerankConfig(self.reranker, self.reranker_k, self.diversity_bias)
150
+ summary_config = SummaryConfig(
151
+ is_enabled=True, max_results=self.max_results, response_lang=self.response_lang, prompt_name=self.prompt
152
+ )
153
+ config = VectaraQueryConfig(
154
+ lambda_val=self.lexical_interpolation,
155
+ filter=self.filter,
156
+ summary_config=summary_config,
157
+ rerank_config=rerank_config,
158
+ )
159
+ rag = vectara.as_rag(config)
160
+ response = rag.invoke(self.search_query, config={"callbacks": self.get_langchain_callbacks()})
161
+
162
+ text_output = response["answer"]
163
+
164
+ return Message(text=text_output)
@@ -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 .local_db import LocalDBComponent
9
+
10
+ _dynamic_imports = {
11
+ "LocalDBComponent": "local_db",
12
+ }
13
+
14
+ __all__ = [
15
+ "LocalDBComponent",
16
+ ]
17
+
18
+
19
+ def __getattr__(attr_name: str) -> Any:
20
+ """Lazily import vectorstore 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,270 @@
1
+ from copy import deepcopy
2
+ from pathlib import Path
3
+
4
+ from langchain_chroma import Chroma
5
+ from typing_extensions import override
6
+
7
+ from lfx.base.vectorstores.model import LCVectorStoreComponent, check_cached_vector_store
8
+ from lfx.base.vectorstores.utils import chroma_collection_to_data
9
+ from lfx.inputs.inputs import MultilineInput
10
+ from lfx.io import BoolInput, DropdownInput, HandleInput, IntInput, MessageTextInput, TabInput
11
+ from lfx.log.logger import logger
12
+ from lfx.schema.data import Data
13
+ from lfx.schema.dataframe import DataFrame
14
+ from lfx.template.field.base import Output
15
+ from lfx.utils.validate_cloud import raise_error_if_astra_cloud_disable_component
16
+
17
+ disable_component_in_astra_cloud_msg = (
18
+ "Local vector stores are not supported in S3/cloud mode. "
19
+ "Local vector stores require local file system access for persistence. "
20
+ "Please use cloud-based vector stores (Pinecone, Weaviate, etc.) or local storage mode."
21
+ )
22
+
23
+
24
+ class LocalDBComponent(LCVectorStoreComponent):
25
+ """Chroma Vector Store with search capabilities."""
26
+
27
+ display_name: str = "Local DB"
28
+ description: str = "Local Vector Store with search capabilities"
29
+ name = "LocalDB"
30
+ icon = "database"
31
+ legacy = True
32
+
33
+ inputs = [
34
+ TabInput(
35
+ name="mode",
36
+ display_name="Mode",
37
+ options=["Ingest", "Retrieve"],
38
+ info="Select the operation mode",
39
+ value="Ingest",
40
+ real_time_refresh=True,
41
+ show=True,
42
+ ),
43
+ MessageTextInput(
44
+ name="collection_name",
45
+ display_name="Collection Name",
46
+ value="langflow",
47
+ required=True,
48
+ ),
49
+ MessageTextInput(
50
+ name="persist_directory",
51
+ display_name="Persist Directory",
52
+ info=(
53
+ "Custom base directory to save the vector store. "
54
+ "Collections will be stored under '{directory}/vector_stores/{collection_name}'. "
55
+ "If not specified, it will use your system's cache folder."
56
+ ),
57
+ advanced=True,
58
+ ),
59
+ DropdownInput(
60
+ name="existing_collections",
61
+ display_name="Existing Collections",
62
+ options=[], # Will be populated dynamically
63
+ info="Select a previously created collection to search through its stored data.",
64
+ show=False,
65
+ combobox=True,
66
+ ),
67
+ HandleInput(name="embedding", display_name="Embedding", required=True, input_types=["Embeddings"]),
68
+ BoolInput(
69
+ name="allow_duplicates",
70
+ display_name="Allow Duplicates",
71
+ advanced=True,
72
+ info="If false, will not add documents that are already in the Vector Store.",
73
+ ),
74
+ DropdownInput(
75
+ name="search_type",
76
+ display_name="Search Type",
77
+ options=["Similarity", "MMR"],
78
+ value="Similarity",
79
+ advanced=True,
80
+ ),
81
+ HandleInput(
82
+ name="ingest_data",
83
+ display_name="Ingest Data",
84
+ input_types=["Data", "DataFrame"],
85
+ is_list=True,
86
+ info="Data to store. It will be embedded and indexed for semantic search.",
87
+ show=True,
88
+ ),
89
+ MultilineInput(
90
+ name="search_query",
91
+ display_name="Search Query",
92
+ tool_mode=True,
93
+ info="Enter text to search for similar content in the selected collection.",
94
+ show=False,
95
+ ),
96
+ IntInput(
97
+ name="number_of_results",
98
+ display_name="Number of Results",
99
+ info="Number of results to return.",
100
+ advanced=True,
101
+ value=10,
102
+ ),
103
+ IntInput(
104
+ name="limit",
105
+ display_name="Limit",
106
+ advanced=True,
107
+ info="Limit the number of records to compare when Allow Duplicates is False.",
108
+ ),
109
+ ]
110
+ outputs = [
111
+ Output(display_name="DataFrame", name="dataframe", method="perform_search"),
112
+ ]
113
+
114
+ def get_vector_store_directory(self, base_dir: str | Path) -> Path:
115
+ """Get the full directory path for a collection."""
116
+ # Ensure base_dir is a Path object
117
+ base_dir = Path(base_dir)
118
+ # Create the full path: base_dir/vector_stores/collection_name
119
+ full_path = base_dir / "vector_stores" / self.collection_name
120
+ # Create the directory if it doesn't exist
121
+ full_path.mkdir(parents=True, exist_ok=True)
122
+ return full_path
123
+
124
+ def get_default_persist_dir(self) -> str:
125
+ """Get the default persist directory from cache."""
126
+ from lfx.services.cache.utils import CACHE_DIR
127
+
128
+ return str(self.get_vector_store_directory(CACHE_DIR))
129
+
130
+ def list_existing_collections(self) -> list[str]:
131
+ """List existing vector store collections from the persist directory."""
132
+ from lfx.services.cache.utils import CACHE_DIR
133
+
134
+ # Get the base directory (either custom or cache)
135
+ base_dir = Path(self.persist_directory) if self.persist_directory else Path(CACHE_DIR)
136
+ # Get the vector_stores subdirectory
137
+ vector_stores_dir = base_dir / "vector_stores"
138
+ if not vector_stores_dir.exists():
139
+ return []
140
+
141
+ return [d.name for d in vector_stores_dir.iterdir() if d.is_dir()]
142
+
143
+ def update_build_config(self, build_config: dict, field_value: str, field_name: str | None = None) -> dict:
144
+ """Update the build configuration when the mode changes."""
145
+ if field_name == "mode":
146
+ # Hide all dynamic fields by default
147
+ dynamic_fields = [
148
+ "ingest_data",
149
+ "search_query",
150
+ "search_type",
151
+ "number_of_results",
152
+ "existing_collections",
153
+ "collection_name",
154
+ "embedding",
155
+ "allow_duplicates",
156
+ "limit",
157
+ ]
158
+ for field in dynamic_fields:
159
+ if field in build_config:
160
+ build_config[field]["show"] = False
161
+
162
+ # Show/hide fields based on selected mode
163
+ if field_value == "Ingest":
164
+ if "ingest_data" in build_config:
165
+ build_config["ingest_data"]["show"] = True
166
+ if "collection_name" in build_config:
167
+ build_config["collection_name"]["show"] = True
168
+ build_config["collection_name"]["display_name"] = "Name Your Collection"
169
+ if "persist" in build_config:
170
+ build_config["persist"]["show"] = True
171
+ if "persist_directory" in build_config:
172
+ build_config["persist_directory"]["show"] = True
173
+ if "embedding" in build_config:
174
+ build_config["embedding"]["show"] = True
175
+ if "allow_duplicates" in build_config:
176
+ build_config["allow_duplicates"]["show"] = True
177
+ if "limit" in build_config:
178
+ build_config["limit"]["show"] = True
179
+ elif field_value == "Retrieve":
180
+ if "persist" in build_config:
181
+ build_config["persist"]["show"] = False
182
+ build_config["search_query"]["show"] = True
183
+ build_config["search_type"]["show"] = True
184
+ build_config["number_of_results"]["show"] = True
185
+ build_config["embedding"]["show"] = True
186
+ build_config["collection_name"]["show"] = False
187
+ # Show existing collections dropdown and update its options
188
+ if "existing_collections" in build_config:
189
+ build_config["existing_collections"]["show"] = True
190
+ build_config["existing_collections"]["options"] = self.list_existing_collections()
191
+ # Hide collection_name in Retrieve mode since we use existing_collections
192
+ elif field_name == "existing_collections":
193
+ # Update collection_name when an existing collection is selected
194
+ if "collection_name" in build_config:
195
+ build_config["collection_name"]["value"] = field_value
196
+
197
+ return build_config
198
+
199
+ @override
200
+ @check_cached_vector_store
201
+ def build_vector_store(self) -> Chroma:
202
+ """Builds the Chroma object."""
203
+ raise_error_if_astra_cloud_disable_component(disable_component_in_astra_cloud_msg)
204
+
205
+ try:
206
+ from langchain_chroma import Chroma
207
+ except ImportError as e:
208
+ msg = "Could not import Chroma integration package. Please install it with `pip install langchain-chroma`."
209
+ raise ImportError(msg) from e
210
+ # Chroma settings
211
+ # chroma_settings = None
212
+ if self.existing_collections:
213
+ self.collection_name = self.existing_collections
214
+
215
+ # Use user-provided directory or default cache directory
216
+ if self.persist_directory:
217
+ base_dir = self.resolve_path(self.persist_directory)
218
+ persist_directory = str(self.get_vector_store_directory(base_dir))
219
+ logger.debug(f"Using custom persist directory: {persist_directory}")
220
+ else:
221
+ persist_directory = self.get_default_persist_dir()
222
+ logger.debug(f"Using default persist directory: {persist_directory}")
223
+
224
+ chroma = Chroma(
225
+ persist_directory=persist_directory,
226
+ client=None,
227
+ embedding_function=self.embedding,
228
+ collection_name=self.collection_name,
229
+ )
230
+
231
+ self._add_documents_to_vector_store(chroma)
232
+ self.status = chroma_collection_to_data(chroma.get(limit=self.limit))
233
+ return chroma
234
+
235
+ def _add_documents_to_vector_store(self, vector_store: "Chroma") -> None:
236
+ """Adds documents to the Vector Store."""
237
+ ingest_data: list | Data | DataFrame = self.ingest_data
238
+ if not ingest_data:
239
+ self.status = ""
240
+ return
241
+
242
+ # Convert DataFrame to Data if needed using parent's method
243
+ ingest_data = self._prepare_ingest_data()
244
+
245
+ stored_documents_without_id = []
246
+ if self.allow_duplicates:
247
+ stored_data = []
248
+ else:
249
+ stored_data = chroma_collection_to_data(vector_store.get(limit=self.limit))
250
+ for value in deepcopy(stored_data):
251
+ del value.id
252
+ stored_documents_without_id.append(value)
253
+
254
+ documents = []
255
+ for _input in ingest_data or []:
256
+ if isinstance(_input, Data):
257
+ if _input not in stored_documents_without_id:
258
+ documents.append(_input.to_lc_document())
259
+ else:
260
+ msg = "Vector Store Inputs must be Data objects."
261
+ raise TypeError(msg)
262
+
263
+ if documents and self.embedding is not None:
264
+ self.log(f"Adding {len(documents)} documents to the Vector Store.")
265
+ vector_store.add_documents(documents)
266
+ else:
267
+ self.log("No documents to add to the Vector Store.")
268
+
269
+ def perform_search(self) -> DataFrame:
270
+ return DataFrame(self.search_documents())
@@ -0,0 +1,37 @@
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 .vertexai import ChatVertexAIComponent
9
+ from .vertexai_embeddings import VertexAIEmbeddingsComponent
10
+
11
+ _dynamic_imports = {
12
+ "ChatVertexAIComponent": "vertexai",
13
+ "VertexAIEmbeddingsComponent": "vertexai_embeddings",
14
+ }
15
+
16
+ __all__ = [
17
+ "ChatVertexAIComponent",
18
+ "VertexAIEmbeddingsComponent",
19
+ ]
20
+
21
+
22
+ def __getattr__(attr_name: str) -> Any:
23
+ """Lazily import vertexai components on attribute access."""
24
+ if attr_name not in _dynamic_imports:
25
+ msg = f"module '{__name__}' has no attribute '{attr_name}'"
26
+ raise AttributeError(msg)
27
+ try:
28
+ result = import_mod(attr_name, _dynamic_imports[attr_name], __spec__.parent)
29
+ except (ModuleNotFoundError, ImportError, AttributeError) as e:
30
+ msg = f"Could not import '{attr_name}' from '{__name__}': {e}"
31
+ raise AttributeError(msg) from e
32
+ globals()[attr_name] = result
33
+ return result
34
+
35
+
36
+ def __dir__() -> list[str]:
37
+ return list(__all__)
@@ -0,0 +1,71 @@
1
+ from typing import cast
2
+
3
+ from lfx.base.models.model import LCModelComponent
4
+ from lfx.field_typing import LanguageModel
5
+ from lfx.inputs.inputs import MessageTextInput
6
+ from lfx.io import BoolInput, FileInput, FloatInput, IntInput, StrInput
7
+
8
+
9
+ class ChatVertexAIComponent(LCModelComponent):
10
+ display_name = "Vertex AI"
11
+ description = "Generate text using Vertex AI LLMs."
12
+ icon = "VertexAI"
13
+ name = "VertexAiModel"
14
+
15
+ inputs = [
16
+ *LCModelComponent.get_base_inputs(),
17
+ FileInput(
18
+ name="credentials",
19
+ display_name="Credentials",
20
+ info="JSON credentials file. Leave empty to fallback to environment variables",
21
+ file_types=["json"],
22
+ ),
23
+ MessageTextInput(name="model_name", display_name="Model Name", value="gemini-1.5-pro"),
24
+ StrInput(name="project", display_name="Project", info="The project ID.", advanced=True),
25
+ StrInput(name="location", display_name="Location", value="us-central1", advanced=True),
26
+ IntInput(name="max_output_tokens", display_name="Max Output Tokens", advanced=True),
27
+ IntInput(name="max_retries", display_name="Max Retries", value=1, advanced=True),
28
+ FloatInput(name="temperature", value=0.0, display_name="Temperature"),
29
+ IntInput(name="top_k", display_name="Top K", advanced=True),
30
+ FloatInput(name="top_p", display_name="Top P", value=0.95, advanced=True),
31
+ BoolInput(name="verbose", display_name="Verbose", value=False, advanced=True),
32
+ ]
33
+
34
+ def build_model(self) -> LanguageModel:
35
+ try:
36
+ from langchain_google_vertexai import ChatVertexAI
37
+ except ImportError as e:
38
+ msg = "Please install the langchain-google-vertexai package to use the VertexAIEmbeddings component."
39
+ raise ImportError(msg) from e
40
+ location = self.location or None
41
+ if self.credentials:
42
+ from google.cloud import aiplatform
43
+ from google.oauth2 import service_account
44
+
45
+ credentials = service_account.Credentials.from_service_account_file(self.credentials)
46
+ project = self.project or credentials.project_id
47
+ # ChatVertexAI sometimes skip manual credentials initialization
48
+ aiplatform.init(
49
+ project=project,
50
+ location=location,
51
+ credentials=credentials,
52
+ )
53
+ else:
54
+ project = self.project or None
55
+ credentials = None
56
+
57
+ return cast(
58
+ "LanguageModel",
59
+ ChatVertexAI(
60
+ credentials=credentials,
61
+ location=location,
62
+ project=project,
63
+ max_output_tokens=self.max_output_tokens or None,
64
+ max_retries=self.max_retries,
65
+ model_name=self.model_name,
66
+ temperature=self.temperature,
67
+ top_k=self.top_k or None,
68
+ top_p=self.top_p,
69
+ verbose=self.verbose,
70
+ ),
71
+ )