lfx-nightly 0.1.11.dev0__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.
Files changed (699) hide show
  1. lfx/__init__.py +0 -0
  2. lfx/__main__.py +25 -0
  3. lfx/base/__init__.py +0 -0
  4. lfx/base/agents/__init__.py +0 -0
  5. lfx/base/agents/agent.py +268 -0
  6. lfx/base/agents/callback.py +130 -0
  7. lfx/base/agents/context.py +109 -0
  8. lfx/base/agents/crewai/__init__.py +0 -0
  9. lfx/base/agents/crewai/crew.py +231 -0
  10. lfx/base/agents/crewai/tasks.py +12 -0
  11. lfx/base/agents/default_prompts.py +23 -0
  12. lfx/base/agents/errors.py +15 -0
  13. lfx/base/agents/events.py +346 -0
  14. lfx/base/agents/utils.py +205 -0
  15. lfx/base/astra_assistants/__init__.py +0 -0
  16. lfx/base/astra_assistants/util.py +171 -0
  17. lfx/base/chains/__init__.py +0 -0
  18. lfx/base/chains/model.py +19 -0
  19. lfx/base/composio/__init__.py +0 -0
  20. lfx/base/composio/composio_base.py +1291 -0
  21. lfx/base/compressors/__init__.py +0 -0
  22. lfx/base/compressors/model.py +60 -0
  23. lfx/base/constants.py +46 -0
  24. lfx/base/curl/__init__.py +0 -0
  25. lfx/base/curl/parse.py +188 -0
  26. lfx/base/data/__init__.py +5 -0
  27. lfx/base/data/base_file.py +685 -0
  28. lfx/base/data/docling_utils.py +245 -0
  29. lfx/base/data/utils.py +198 -0
  30. lfx/base/document_transformers/__init__.py +0 -0
  31. lfx/base/document_transformers/model.py +43 -0
  32. lfx/base/embeddings/__init__.py +0 -0
  33. lfx/base/embeddings/aiml_embeddings.py +62 -0
  34. lfx/base/embeddings/model.py +26 -0
  35. lfx/base/flow_processing/__init__.py +0 -0
  36. lfx/base/flow_processing/utils.py +86 -0
  37. lfx/base/huggingface/__init__.py +0 -0
  38. lfx/base/huggingface/model_bridge.py +133 -0
  39. lfx/base/io/__init__.py +0 -0
  40. lfx/base/io/chat.py +20 -0
  41. lfx/base/io/text.py +22 -0
  42. lfx/base/langchain_utilities/__init__.py +0 -0
  43. lfx/base/langchain_utilities/model.py +35 -0
  44. lfx/base/langchain_utilities/spider_constants.py +1 -0
  45. lfx/base/langwatch/__init__.py +0 -0
  46. lfx/base/langwatch/utils.py +18 -0
  47. lfx/base/mcp/__init__.py +0 -0
  48. lfx/base/mcp/constants.py +2 -0
  49. lfx/base/mcp/util.py +1398 -0
  50. lfx/base/memory/__init__.py +0 -0
  51. lfx/base/memory/memory.py +49 -0
  52. lfx/base/memory/model.py +38 -0
  53. lfx/base/models/__init__.py +3 -0
  54. lfx/base/models/aiml_constants.py +51 -0
  55. lfx/base/models/anthropic_constants.py +47 -0
  56. lfx/base/models/aws_constants.py +151 -0
  57. lfx/base/models/chat_result.py +76 -0
  58. lfx/base/models/google_generative_ai_constants.py +70 -0
  59. lfx/base/models/groq_constants.py +134 -0
  60. lfx/base/models/model.py +375 -0
  61. lfx/base/models/model_input_constants.py +307 -0
  62. lfx/base/models/model_metadata.py +41 -0
  63. lfx/base/models/model_utils.py +8 -0
  64. lfx/base/models/novita_constants.py +35 -0
  65. lfx/base/models/ollama_constants.py +49 -0
  66. lfx/base/models/openai_constants.py +122 -0
  67. lfx/base/models/sambanova_constants.py +18 -0
  68. lfx/base/processing/__init__.py +0 -0
  69. lfx/base/prompts/__init__.py +0 -0
  70. lfx/base/prompts/api_utils.py +224 -0
  71. lfx/base/prompts/utils.py +61 -0
  72. lfx/base/textsplitters/__init__.py +0 -0
  73. lfx/base/textsplitters/model.py +28 -0
  74. lfx/base/tools/__init__.py +0 -0
  75. lfx/base/tools/base.py +26 -0
  76. lfx/base/tools/component_tool.py +325 -0
  77. lfx/base/tools/constants.py +49 -0
  78. lfx/base/tools/flow_tool.py +132 -0
  79. lfx/base/tools/run_flow.py +224 -0
  80. lfx/base/vectorstores/__init__.py +0 -0
  81. lfx/base/vectorstores/model.py +193 -0
  82. lfx/base/vectorstores/utils.py +22 -0
  83. lfx/base/vectorstores/vector_store_connection_decorator.py +52 -0
  84. lfx/cli/__init__.py +5 -0
  85. lfx/cli/commands.py +319 -0
  86. lfx/cli/common.py +650 -0
  87. lfx/cli/run.py +441 -0
  88. lfx/cli/script_loader.py +247 -0
  89. lfx/cli/serve_app.py +546 -0
  90. lfx/cli/validation.py +69 -0
  91. lfx/components/FAISS/__init__.py +34 -0
  92. lfx/components/FAISS/faiss.py +111 -0
  93. lfx/components/Notion/__init__.py +19 -0
  94. lfx/components/Notion/add_content_to_page.py +269 -0
  95. lfx/components/Notion/create_page.py +94 -0
  96. lfx/components/Notion/list_database_properties.py +68 -0
  97. lfx/components/Notion/list_pages.py +122 -0
  98. lfx/components/Notion/list_users.py +77 -0
  99. lfx/components/Notion/page_content_viewer.py +93 -0
  100. lfx/components/Notion/search.py +111 -0
  101. lfx/components/Notion/update_page_property.py +114 -0
  102. lfx/components/__init__.py +411 -0
  103. lfx/components/_importing.py +42 -0
  104. lfx/components/agentql/__init__.py +3 -0
  105. lfx/components/agentql/agentql_api.py +151 -0
  106. lfx/components/agents/__init__.py +34 -0
  107. lfx/components/agents/agent.py +558 -0
  108. lfx/components/agents/mcp_component.py +501 -0
  109. lfx/components/aiml/__init__.py +37 -0
  110. lfx/components/aiml/aiml.py +112 -0
  111. lfx/components/aiml/aiml_embeddings.py +37 -0
  112. lfx/components/amazon/__init__.py +36 -0
  113. lfx/components/amazon/amazon_bedrock_embedding.py +109 -0
  114. lfx/components/amazon/amazon_bedrock_model.py +124 -0
  115. lfx/components/amazon/s3_bucket_uploader.py +211 -0
  116. lfx/components/anthropic/__init__.py +34 -0
  117. lfx/components/anthropic/anthropic.py +187 -0
  118. lfx/components/apify/__init__.py +5 -0
  119. lfx/components/apify/apify_actor.py +325 -0
  120. lfx/components/arxiv/__init__.py +3 -0
  121. lfx/components/arxiv/arxiv.py +163 -0
  122. lfx/components/assemblyai/__init__.py +46 -0
  123. lfx/components/assemblyai/assemblyai_get_subtitles.py +83 -0
  124. lfx/components/assemblyai/assemblyai_lemur.py +183 -0
  125. lfx/components/assemblyai/assemblyai_list_transcripts.py +95 -0
  126. lfx/components/assemblyai/assemblyai_poll_transcript.py +72 -0
  127. lfx/components/assemblyai/assemblyai_start_transcript.py +188 -0
  128. lfx/components/azure/__init__.py +37 -0
  129. lfx/components/azure/azure_openai.py +95 -0
  130. lfx/components/azure/azure_openai_embeddings.py +83 -0
  131. lfx/components/baidu/__init__.py +32 -0
  132. lfx/components/baidu/baidu_qianfan_chat.py +113 -0
  133. lfx/components/bing/__init__.py +3 -0
  134. lfx/components/bing/bing_search_api.py +61 -0
  135. lfx/components/cassandra/__init__.py +40 -0
  136. lfx/components/cassandra/cassandra.py +264 -0
  137. lfx/components/cassandra/cassandra_chat.py +92 -0
  138. lfx/components/cassandra/cassandra_graph.py +238 -0
  139. lfx/components/chains/__init__.py +3 -0
  140. lfx/components/chroma/__init__.py +34 -0
  141. lfx/components/chroma/chroma.py +167 -0
  142. lfx/components/cleanlab/__init__.py +40 -0
  143. lfx/components/cleanlab/cleanlab_evaluator.py +155 -0
  144. lfx/components/cleanlab/cleanlab_rag_evaluator.py +254 -0
  145. lfx/components/cleanlab/cleanlab_remediator.py +131 -0
  146. lfx/components/clickhouse/__init__.py +34 -0
  147. lfx/components/clickhouse/clickhouse.py +135 -0
  148. lfx/components/cloudflare/__init__.py +32 -0
  149. lfx/components/cloudflare/cloudflare.py +81 -0
  150. lfx/components/cohere/__init__.py +40 -0
  151. lfx/components/cohere/cohere_embeddings.py +81 -0
  152. lfx/components/cohere/cohere_models.py +46 -0
  153. lfx/components/cohere/cohere_rerank.py +51 -0
  154. lfx/components/composio/__init__.py +74 -0
  155. lfx/components/composio/composio_api.py +268 -0
  156. lfx/components/composio/dropbox_compnent.py +11 -0
  157. lfx/components/composio/github_composio.py +11 -0
  158. lfx/components/composio/gmail_composio.py +38 -0
  159. lfx/components/composio/googlecalendar_composio.py +11 -0
  160. lfx/components/composio/googlemeet_composio.py +11 -0
  161. lfx/components/composio/googletasks_composio.py +8 -0
  162. lfx/components/composio/linear_composio.py +11 -0
  163. lfx/components/composio/outlook_composio.py +11 -0
  164. lfx/components/composio/reddit_composio.py +11 -0
  165. lfx/components/composio/slack_composio.py +582 -0
  166. lfx/components/composio/slackbot_composio.py +11 -0
  167. lfx/components/composio/supabase_composio.py +11 -0
  168. lfx/components/composio/todoist_composio.py +11 -0
  169. lfx/components/composio/youtube_composio.py +11 -0
  170. lfx/components/confluence/__init__.py +3 -0
  171. lfx/components/confluence/confluence.py +84 -0
  172. lfx/components/couchbase/__init__.py +34 -0
  173. lfx/components/couchbase/couchbase.py +102 -0
  174. lfx/components/crewai/__init__.py +49 -0
  175. lfx/components/crewai/crewai.py +107 -0
  176. lfx/components/crewai/hierarchical_crew.py +46 -0
  177. lfx/components/crewai/hierarchical_task.py +44 -0
  178. lfx/components/crewai/sequential_crew.py +52 -0
  179. lfx/components/crewai/sequential_task.py +73 -0
  180. lfx/components/crewai/sequential_task_agent.py +143 -0
  181. lfx/components/custom_component/__init__.py +34 -0
  182. lfx/components/custom_component/custom_component.py +31 -0
  183. lfx/components/data/__init__.py +64 -0
  184. lfx/components/data/api_request.py +544 -0
  185. lfx/components/data/csv_to_data.py +95 -0
  186. lfx/components/data/directory.py +113 -0
  187. lfx/components/data/file.py +577 -0
  188. lfx/components/data/json_to_data.py +98 -0
  189. lfx/components/data/news_search.py +164 -0
  190. lfx/components/data/rss.py +69 -0
  191. lfx/components/data/sql_executor.py +101 -0
  192. lfx/components/data/url.py +311 -0
  193. lfx/components/data/web_search.py +112 -0
  194. lfx/components/data/webhook.py +56 -0
  195. lfx/components/datastax/__init__.py +70 -0
  196. lfx/components/datastax/astra_assistant_manager.py +306 -0
  197. lfx/components/datastax/astra_db.py +75 -0
  198. lfx/components/datastax/astra_vectorize.py +124 -0
  199. lfx/components/datastax/astradb.py +1285 -0
  200. lfx/components/datastax/astradb_cql.py +314 -0
  201. lfx/components/datastax/astradb_graph.py +330 -0
  202. lfx/components/datastax/astradb_tool.py +414 -0
  203. lfx/components/datastax/astradb_vectorstore.py +1285 -0
  204. lfx/components/datastax/cassandra.py +92 -0
  205. lfx/components/datastax/create_assistant.py +58 -0
  206. lfx/components/datastax/create_thread.py +32 -0
  207. lfx/components/datastax/dotenv.py +35 -0
  208. lfx/components/datastax/get_assistant.py +37 -0
  209. lfx/components/datastax/getenvvar.py +30 -0
  210. lfx/components/datastax/graph_rag.py +141 -0
  211. lfx/components/datastax/hcd.py +314 -0
  212. lfx/components/datastax/list_assistants.py +25 -0
  213. lfx/components/datastax/run.py +89 -0
  214. lfx/components/deactivated/__init__.py +15 -0
  215. lfx/components/deactivated/amazon_kendra.py +66 -0
  216. lfx/components/deactivated/chat_litellm_model.py +158 -0
  217. lfx/components/deactivated/code_block_extractor.py +26 -0
  218. lfx/components/deactivated/documents_to_data.py +22 -0
  219. lfx/components/deactivated/embed.py +16 -0
  220. lfx/components/deactivated/extract_key_from_data.py +46 -0
  221. lfx/components/deactivated/json_document_builder.py +57 -0
  222. lfx/components/deactivated/list_flows.py +20 -0
  223. lfx/components/deactivated/mcp_sse.py +61 -0
  224. lfx/components/deactivated/mcp_stdio.py +62 -0
  225. lfx/components/deactivated/merge_data.py +93 -0
  226. lfx/components/deactivated/message.py +37 -0
  227. lfx/components/deactivated/metal.py +54 -0
  228. lfx/components/deactivated/multi_query.py +59 -0
  229. lfx/components/deactivated/retriever.py +43 -0
  230. lfx/components/deactivated/selective_passthrough.py +77 -0
  231. lfx/components/deactivated/should_run_next.py +40 -0
  232. lfx/components/deactivated/split_text.py +63 -0
  233. lfx/components/deactivated/store_message.py +24 -0
  234. lfx/components/deactivated/sub_flow.py +124 -0
  235. lfx/components/deactivated/vectara_self_query.py +76 -0
  236. lfx/components/deactivated/vector_store.py +24 -0
  237. lfx/components/deepseek/__init__.py +34 -0
  238. lfx/components/deepseek/deepseek.py +136 -0
  239. lfx/components/docling/__init__.py +43 -0
  240. lfx/components/docling/chunk_docling_document.py +186 -0
  241. lfx/components/docling/docling_inline.py +231 -0
  242. lfx/components/docling/docling_remote.py +193 -0
  243. lfx/components/docling/export_docling_document.py +117 -0
  244. lfx/components/documentloaders/__init__.py +3 -0
  245. lfx/components/duckduckgo/__init__.py +3 -0
  246. lfx/components/duckduckgo/duck_duck_go_search_run.py +92 -0
  247. lfx/components/elastic/__init__.py +37 -0
  248. lfx/components/elastic/elasticsearch.py +267 -0
  249. lfx/components/elastic/opensearch.py +243 -0
  250. lfx/components/embeddings/__init__.py +37 -0
  251. lfx/components/embeddings/similarity.py +76 -0
  252. lfx/components/embeddings/text_embedder.py +64 -0
  253. lfx/components/exa/__init__.py +3 -0
  254. lfx/components/exa/exa_search.py +68 -0
  255. lfx/components/firecrawl/__init__.py +43 -0
  256. lfx/components/firecrawl/firecrawl_crawl_api.py +88 -0
  257. lfx/components/firecrawl/firecrawl_extract_api.py +136 -0
  258. lfx/components/firecrawl/firecrawl_map_api.py +89 -0
  259. lfx/components/firecrawl/firecrawl_scrape_api.py +73 -0
  260. lfx/components/git/__init__.py +4 -0
  261. lfx/components/git/git.py +262 -0
  262. lfx/components/git/gitextractor.py +196 -0
  263. lfx/components/glean/__init__.py +3 -0
  264. lfx/components/glean/glean_search_api.py +173 -0
  265. lfx/components/google/__init__.py +17 -0
  266. lfx/components/google/gmail.py +192 -0
  267. lfx/components/google/google_bq_sql_executor.py +157 -0
  268. lfx/components/google/google_drive.py +92 -0
  269. lfx/components/google/google_drive_search.py +152 -0
  270. lfx/components/google/google_generative_ai.py +147 -0
  271. lfx/components/google/google_generative_ai_embeddings.py +141 -0
  272. lfx/components/google/google_oauth_token.py +89 -0
  273. lfx/components/google/google_search_api_core.py +68 -0
  274. lfx/components/google/google_serper_api_core.py +74 -0
  275. lfx/components/groq/__init__.py +34 -0
  276. lfx/components/groq/groq.py +136 -0
  277. lfx/components/helpers/__init__.py +52 -0
  278. lfx/components/helpers/calculator_core.py +89 -0
  279. lfx/components/helpers/create_list.py +40 -0
  280. lfx/components/helpers/current_date.py +42 -0
  281. lfx/components/helpers/id_generator.py +42 -0
  282. lfx/components/helpers/memory.py +251 -0
  283. lfx/components/helpers/output_parser.py +45 -0
  284. lfx/components/helpers/store_message.py +90 -0
  285. lfx/components/homeassistant/__init__.py +7 -0
  286. lfx/components/homeassistant/home_assistant_control.py +152 -0
  287. lfx/components/homeassistant/list_home_assistant_states.py +137 -0
  288. lfx/components/huggingface/__init__.py +37 -0
  289. lfx/components/huggingface/huggingface.py +197 -0
  290. lfx/components/huggingface/huggingface_inference_api.py +106 -0
  291. lfx/components/ibm/__init__.py +34 -0
  292. lfx/components/ibm/watsonx.py +203 -0
  293. lfx/components/ibm/watsonx_embeddings.py +135 -0
  294. lfx/components/icosacomputing/__init__.py +5 -0
  295. lfx/components/icosacomputing/combinatorial_reasoner.py +84 -0
  296. lfx/components/input_output/__init__.py +38 -0
  297. lfx/components/input_output/chat.py +120 -0
  298. lfx/components/input_output/chat_output.py +200 -0
  299. lfx/components/input_output/text.py +27 -0
  300. lfx/components/input_output/text_output.py +29 -0
  301. lfx/components/jigsawstack/__init__.py +23 -0
  302. lfx/components/jigsawstack/ai_scrape.py +126 -0
  303. lfx/components/jigsawstack/ai_web_search.py +136 -0
  304. lfx/components/jigsawstack/file_read.py +115 -0
  305. lfx/components/jigsawstack/file_upload.py +94 -0
  306. lfx/components/jigsawstack/image_generation.py +205 -0
  307. lfx/components/jigsawstack/nsfw.py +60 -0
  308. lfx/components/jigsawstack/object_detection.py +124 -0
  309. lfx/components/jigsawstack/sentiment.py +112 -0
  310. lfx/components/jigsawstack/text_to_sql.py +90 -0
  311. lfx/components/jigsawstack/text_translate.py +77 -0
  312. lfx/components/jigsawstack/vocr.py +107 -0
  313. lfx/components/langchain_utilities/__init__.py +109 -0
  314. lfx/components/langchain_utilities/character.py +53 -0
  315. lfx/components/langchain_utilities/conversation.py +59 -0
  316. lfx/components/langchain_utilities/csv_agent.py +107 -0
  317. lfx/components/langchain_utilities/fake_embeddings.py +26 -0
  318. lfx/components/langchain_utilities/html_link_extractor.py +35 -0
  319. lfx/components/langchain_utilities/json_agent.py +45 -0
  320. lfx/components/langchain_utilities/langchain_hub.py +126 -0
  321. lfx/components/langchain_utilities/language_recursive.py +49 -0
  322. lfx/components/langchain_utilities/language_semantic.py +138 -0
  323. lfx/components/langchain_utilities/llm_checker.py +39 -0
  324. lfx/components/langchain_utilities/llm_math.py +42 -0
  325. lfx/components/langchain_utilities/natural_language.py +61 -0
  326. lfx/components/langchain_utilities/openai_tools.py +53 -0
  327. lfx/components/langchain_utilities/openapi.py +48 -0
  328. lfx/components/langchain_utilities/recursive_character.py +60 -0
  329. lfx/components/langchain_utilities/retrieval_qa.py +83 -0
  330. lfx/components/langchain_utilities/runnable_executor.py +137 -0
  331. lfx/components/langchain_utilities/self_query.py +80 -0
  332. lfx/components/langchain_utilities/spider.py +142 -0
  333. lfx/components/langchain_utilities/sql.py +40 -0
  334. lfx/components/langchain_utilities/sql_database.py +35 -0
  335. lfx/components/langchain_utilities/sql_generator.py +78 -0
  336. lfx/components/langchain_utilities/tool_calling.py +59 -0
  337. lfx/components/langchain_utilities/vector_store_info.py +49 -0
  338. lfx/components/langchain_utilities/vector_store_router.py +33 -0
  339. lfx/components/langchain_utilities/xml_agent.py +71 -0
  340. lfx/components/langwatch/__init__.py +3 -0
  341. lfx/components/langwatch/langwatch.py +278 -0
  342. lfx/components/link_extractors/__init__.py +3 -0
  343. lfx/components/lmstudio/__init__.py +34 -0
  344. lfx/components/lmstudio/lmstudioembeddings.py +89 -0
  345. lfx/components/lmstudio/lmstudiomodel.py +129 -0
  346. lfx/components/logic/__init__.py +52 -0
  347. lfx/components/logic/conditional_router.py +171 -0
  348. lfx/components/logic/data_conditional_router.py +125 -0
  349. lfx/components/logic/flow_tool.py +110 -0
  350. lfx/components/logic/listen.py +29 -0
  351. lfx/components/logic/loop.py +125 -0
  352. lfx/components/logic/notify.py +88 -0
  353. lfx/components/logic/pass_message.py +35 -0
  354. lfx/components/logic/run_flow.py +71 -0
  355. lfx/components/logic/sub_flow.py +114 -0
  356. lfx/components/maritalk/__init__.py +32 -0
  357. lfx/components/maritalk/maritalk.py +52 -0
  358. lfx/components/mem0/__init__.py +3 -0
  359. lfx/components/mem0/mem0_chat_memory.py +136 -0
  360. lfx/components/milvus/__init__.py +34 -0
  361. lfx/components/milvus/milvus.py +115 -0
  362. lfx/components/mistral/__init__.py +37 -0
  363. lfx/components/mistral/mistral.py +114 -0
  364. lfx/components/mistral/mistral_embeddings.py +58 -0
  365. lfx/components/models/__init__.py +34 -0
  366. lfx/components/models/embedding_model.py +114 -0
  367. lfx/components/models/language_model.py +144 -0
  368. lfx/components/mongodb/__init__.py +34 -0
  369. lfx/components/mongodb/mongodb_atlas.py +213 -0
  370. lfx/components/needle/__init__.py +3 -0
  371. lfx/components/needle/needle.py +104 -0
  372. lfx/components/notdiamond/__init__.py +34 -0
  373. lfx/components/notdiamond/notdiamond.py +228 -0
  374. lfx/components/novita/__init__.py +32 -0
  375. lfx/components/novita/novita.py +130 -0
  376. lfx/components/nvidia/__init__.py +57 -0
  377. lfx/components/nvidia/nvidia.py +157 -0
  378. lfx/components/nvidia/nvidia_embedding.py +77 -0
  379. lfx/components/nvidia/nvidia_ingest.py +317 -0
  380. lfx/components/nvidia/nvidia_rerank.py +63 -0
  381. lfx/components/nvidia/system_assist.py +65 -0
  382. lfx/components/olivya/__init__.py +3 -0
  383. lfx/components/olivya/olivya.py +116 -0
  384. lfx/components/ollama/__init__.py +37 -0
  385. lfx/components/ollama/ollama.py +330 -0
  386. lfx/components/ollama/ollama_embeddings.py +106 -0
  387. lfx/components/openai/__init__.py +37 -0
  388. lfx/components/openai/openai.py +100 -0
  389. lfx/components/openai/openai_chat_model.py +176 -0
  390. lfx/components/openrouter/__init__.py +32 -0
  391. lfx/components/openrouter/openrouter.py +202 -0
  392. lfx/components/output_parsers/__init__.py +3 -0
  393. lfx/components/perplexity/__init__.py +34 -0
  394. lfx/components/perplexity/perplexity.py +75 -0
  395. lfx/components/pgvector/__init__.py +34 -0
  396. lfx/components/pgvector/pgvector.py +72 -0
  397. lfx/components/pinecone/__init__.py +34 -0
  398. lfx/components/pinecone/pinecone.py +134 -0
  399. lfx/components/processing/__init__.py +117 -0
  400. lfx/components/processing/alter_metadata.py +108 -0
  401. lfx/components/processing/batch_run.py +205 -0
  402. lfx/components/processing/combine_text.py +39 -0
  403. lfx/components/processing/converter.py +159 -0
  404. lfx/components/processing/create_data.py +110 -0
  405. lfx/components/processing/data_operations.py +438 -0
  406. lfx/components/processing/data_to_dataframe.py +70 -0
  407. lfx/components/processing/dataframe_operations.py +313 -0
  408. lfx/components/processing/extract_key.py +53 -0
  409. lfx/components/processing/filter_data.py +42 -0
  410. lfx/components/processing/filter_data_values.py +88 -0
  411. lfx/components/processing/json_cleaner.py +103 -0
  412. lfx/components/processing/lambda_filter.py +154 -0
  413. lfx/components/processing/llm_router.py +499 -0
  414. lfx/components/processing/merge_data.py +90 -0
  415. lfx/components/processing/message_to_data.py +36 -0
  416. lfx/components/processing/parse_data.py +70 -0
  417. lfx/components/processing/parse_dataframe.py +68 -0
  418. lfx/components/processing/parse_json_data.py +90 -0
  419. lfx/components/processing/parser.py +143 -0
  420. lfx/components/processing/prompt.py +67 -0
  421. lfx/components/processing/python_repl_core.py +98 -0
  422. lfx/components/processing/regex.py +82 -0
  423. lfx/components/processing/save_file.py +225 -0
  424. lfx/components/processing/select_data.py +48 -0
  425. lfx/components/processing/split_text.py +141 -0
  426. lfx/components/processing/structured_output.py +202 -0
  427. lfx/components/processing/update_data.py +160 -0
  428. lfx/components/prototypes/__init__.py +34 -0
  429. lfx/components/prototypes/python_function.py +73 -0
  430. lfx/components/qdrant/__init__.py +34 -0
  431. lfx/components/qdrant/qdrant.py +109 -0
  432. lfx/components/redis/__init__.py +37 -0
  433. lfx/components/redis/redis.py +89 -0
  434. lfx/components/redis/redis_chat.py +43 -0
  435. lfx/components/sambanova/__init__.py +32 -0
  436. lfx/components/sambanova/sambanova.py +84 -0
  437. lfx/components/scrapegraph/__init__.py +40 -0
  438. lfx/components/scrapegraph/scrapegraph_markdownify_api.py +64 -0
  439. lfx/components/scrapegraph/scrapegraph_search_api.py +64 -0
  440. lfx/components/scrapegraph/scrapegraph_smart_scraper_api.py +71 -0
  441. lfx/components/searchapi/__init__.py +34 -0
  442. lfx/components/searchapi/search.py +79 -0
  443. lfx/components/serpapi/__init__.py +3 -0
  444. lfx/components/serpapi/serp.py +115 -0
  445. lfx/components/supabase/__init__.py +34 -0
  446. lfx/components/supabase/supabase.py +76 -0
  447. lfx/components/tavily/__init__.py +4 -0
  448. lfx/components/tavily/tavily_extract.py +117 -0
  449. lfx/components/tavily/tavily_search.py +212 -0
  450. lfx/components/textsplitters/__init__.py +3 -0
  451. lfx/components/toolkits/__init__.py +3 -0
  452. lfx/components/tools/__init__.py +72 -0
  453. lfx/components/tools/calculator.py +108 -0
  454. lfx/components/tools/google_search_api.py +45 -0
  455. lfx/components/tools/google_serper_api.py +115 -0
  456. lfx/components/tools/python_code_structured_tool.py +327 -0
  457. lfx/components/tools/python_repl.py +97 -0
  458. lfx/components/tools/search_api.py +87 -0
  459. lfx/components/tools/searxng.py +145 -0
  460. lfx/components/tools/serp_api.py +119 -0
  461. lfx/components/tools/tavily_search_tool.py +344 -0
  462. lfx/components/tools/wikidata_api.py +102 -0
  463. lfx/components/tools/wikipedia_api.py +49 -0
  464. lfx/components/tools/yahoo_finance.py +129 -0
  465. lfx/components/twelvelabs/__init__.py +52 -0
  466. lfx/components/twelvelabs/convert_astra_results.py +84 -0
  467. lfx/components/twelvelabs/pegasus_index.py +311 -0
  468. lfx/components/twelvelabs/split_video.py +291 -0
  469. lfx/components/twelvelabs/text_embeddings.py +57 -0
  470. lfx/components/twelvelabs/twelvelabs_pegasus.py +408 -0
  471. lfx/components/twelvelabs/video_embeddings.py +100 -0
  472. lfx/components/twelvelabs/video_file.py +179 -0
  473. lfx/components/unstructured/__init__.py +3 -0
  474. lfx/components/unstructured/unstructured.py +121 -0
  475. lfx/components/upstash/__init__.py +34 -0
  476. lfx/components/upstash/upstash.py +124 -0
  477. lfx/components/vectara/__init__.py +37 -0
  478. lfx/components/vectara/vectara.py +97 -0
  479. lfx/components/vectara/vectara_rag.py +164 -0
  480. lfx/components/vectorstores/__init__.py +40 -0
  481. lfx/components/vectorstores/astradb.py +1285 -0
  482. lfx/components/vectorstores/astradb_graph.py +319 -0
  483. lfx/components/vectorstores/cassandra.py +264 -0
  484. lfx/components/vectorstores/cassandra_graph.py +238 -0
  485. lfx/components/vectorstores/chroma.py +167 -0
  486. lfx/components/vectorstores/clickhouse.py +135 -0
  487. lfx/components/vectorstores/couchbase.py +102 -0
  488. lfx/components/vectorstores/elasticsearch.py +267 -0
  489. lfx/components/vectorstores/faiss.py +111 -0
  490. lfx/components/vectorstores/graph_rag.py +141 -0
  491. lfx/components/vectorstores/hcd.py +314 -0
  492. lfx/components/vectorstores/local_db.py +261 -0
  493. lfx/components/vectorstores/milvus.py +115 -0
  494. lfx/components/vectorstores/mongodb_atlas.py +213 -0
  495. lfx/components/vectorstores/opensearch.py +243 -0
  496. lfx/components/vectorstores/pgvector.py +72 -0
  497. lfx/components/vectorstores/pinecone.py +134 -0
  498. lfx/components/vectorstores/qdrant.py +109 -0
  499. lfx/components/vectorstores/supabase.py +76 -0
  500. lfx/components/vectorstores/upstash.py +124 -0
  501. lfx/components/vectorstores/vectara.py +97 -0
  502. lfx/components/vectorstores/vectara_rag.py +164 -0
  503. lfx/components/vectorstores/weaviate.py +89 -0
  504. lfx/components/vertexai/__init__.py +37 -0
  505. lfx/components/vertexai/vertexai.py +71 -0
  506. lfx/components/vertexai/vertexai_embeddings.py +67 -0
  507. lfx/components/weaviate/__init__.py +34 -0
  508. lfx/components/weaviate/weaviate.py +89 -0
  509. lfx/components/wikipedia/__init__.py +4 -0
  510. lfx/components/wikipedia/wikidata.py +86 -0
  511. lfx/components/wikipedia/wikipedia.py +53 -0
  512. lfx/components/wolframalpha/__init__.py +3 -0
  513. lfx/components/wolframalpha/wolfram_alpha_api.py +54 -0
  514. lfx/components/xai/__init__.py +32 -0
  515. lfx/components/xai/xai.py +167 -0
  516. lfx/components/yahoosearch/__init__.py +3 -0
  517. lfx/components/yahoosearch/yahoo.py +137 -0
  518. lfx/components/youtube/__init__.py +52 -0
  519. lfx/components/youtube/channel.py +227 -0
  520. lfx/components/youtube/comments.py +231 -0
  521. lfx/components/youtube/playlist.py +33 -0
  522. lfx/components/youtube/search.py +120 -0
  523. lfx/components/youtube/trending.py +285 -0
  524. lfx/components/youtube/video_details.py +263 -0
  525. lfx/components/youtube/youtube_transcripts.py +118 -0
  526. lfx/components/zep/__init__.py +3 -0
  527. lfx/components/zep/zep.py +44 -0
  528. lfx/constants.py +6 -0
  529. lfx/custom/__init__.py +7 -0
  530. lfx/custom/attributes.py +86 -0
  531. lfx/custom/code_parser/__init__.py +3 -0
  532. lfx/custom/code_parser/code_parser.py +361 -0
  533. lfx/custom/custom_component/__init__.py +0 -0
  534. lfx/custom/custom_component/base_component.py +128 -0
  535. lfx/custom/custom_component/component.py +1808 -0
  536. lfx/custom/custom_component/component_with_cache.py +8 -0
  537. lfx/custom/custom_component/custom_component.py +588 -0
  538. lfx/custom/dependency_analyzer.py +165 -0
  539. lfx/custom/directory_reader/__init__.py +3 -0
  540. lfx/custom/directory_reader/directory_reader.py +359 -0
  541. lfx/custom/directory_reader/utils.py +171 -0
  542. lfx/custom/eval.py +12 -0
  543. lfx/custom/schema.py +32 -0
  544. lfx/custom/tree_visitor.py +21 -0
  545. lfx/custom/utils.py +877 -0
  546. lfx/custom/validate.py +488 -0
  547. lfx/events/__init__.py +1 -0
  548. lfx/events/event_manager.py +110 -0
  549. lfx/exceptions/__init__.py +0 -0
  550. lfx/exceptions/component.py +15 -0
  551. lfx/field_typing/__init__.py +91 -0
  552. lfx/field_typing/constants.py +215 -0
  553. lfx/field_typing/range_spec.py +35 -0
  554. lfx/graph/__init__.py +6 -0
  555. lfx/graph/edge/__init__.py +0 -0
  556. lfx/graph/edge/base.py +277 -0
  557. lfx/graph/edge/schema.py +119 -0
  558. lfx/graph/edge/utils.py +0 -0
  559. lfx/graph/graph/__init__.py +0 -0
  560. lfx/graph/graph/ascii.py +202 -0
  561. lfx/graph/graph/base.py +2238 -0
  562. lfx/graph/graph/constants.py +63 -0
  563. lfx/graph/graph/runnable_vertices_manager.py +133 -0
  564. lfx/graph/graph/schema.py +52 -0
  565. lfx/graph/graph/state_model.py +66 -0
  566. lfx/graph/graph/utils.py +1024 -0
  567. lfx/graph/schema.py +75 -0
  568. lfx/graph/state/__init__.py +0 -0
  569. lfx/graph/state/model.py +237 -0
  570. lfx/graph/utils.py +200 -0
  571. lfx/graph/vertex/__init__.py +0 -0
  572. lfx/graph/vertex/base.py +823 -0
  573. lfx/graph/vertex/constants.py +0 -0
  574. lfx/graph/vertex/exceptions.py +4 -0
  575. lfx/graph/vertex/param_handler.py +264 -0
  576. lfx/graph/vertex/schema.py +26 -0
  577. lfx/graph/vertex/utils.py +19 -0
  578. lfx/graph/vertex/vertex_types.py +489 -0
  579. lfx/helpers/__init__.py +1 -0
  580. lfx/helpers/base_model.py +71 -0
  581. lfx/helpers/custom.py +13 -0
  582. lfx/helpers/data.py +167 -0
  583. lfx/helpers/flow.py +194 -0
  584. lfx/inputs/__init__.py +68 -0
  585. lfx/inputs/constants.py +2 -0
  586. lfx/inputs/input_mixin.py +328 -0
  587. lfx/inputs/inputs.py +714 -0
  588. lfx/inputs/validators.py +19 -0
  589. lfx/interface/__init__.py +6 -0
  590. lfx/interface/components.py +489 -0
  591. lfx/interface/importing/__init__.py +5 -0
  592. lfx/interface/importing/utils.py +39 -0
  593. lfx/interface/initialize/__init__.py +3 -0
  594. lfx/interface/initialize/loading.py +224 -0
  595. lfx/interface/listing.py +26 -0
  596. lfx/interface/run.py +16 -0
  597. lfx/interface/utils.py +111 -0
  598. lfx/io/__init__.py +63 -0
  599. lfx/io/schema.py +289 -0
  600. lfx/load/__init__.py +8 -0
  601. lfx/load/load.py +256 -0
  602. lfx/load/utils.py +99 -0
  603. lfx/log/__init__.py +5 -0
  604. lfx/log/logger.py +385 -0
  605. lfx/memory/__init__.py +90 -0
  606. lfx/memory/stubs.py +283 -0
  607. lfx/processing/__init__.py +1 -0
  608. lfx/processing/process.py +238 -0
  609. lfx/processing/utils.py +25 -0
  610. lfx/py.typed +0 -0
  611. lfx/schema/__init__.py +66 -0
  612. lfx/schema/artifact.py +83 -0
  613. lfx/schema/content_block.py +62 -0
  614. lfx/schema/content_types.py +91 -0
  615. lfx/schema/data.py +308 -0
  616. lfx/schema/dataframe.py +210 -0
  617. lfx/schema/dotdict.py +74 -0
  618. lfx/schema/encoders.py +13 -0
  619. lfx/schema/graph.py +47 -0
  620. lfx/schema/image.py +131 -0
  621. lfx/schema/json_schema.py +141 -0
  622. lfx/schema/log.py +61 -0
  623. lfx/schema/message.py +473 -0
  624. lfx/schema/openai_responses_schemas.py +74 -0
  625. lfx/schema/properties.py +41 -0
  626. lfx/schema/schema.py +171 -0
  627. lfx/schema/serialize.py +13 -0
  628. lfx/schema/table.py +140 -0
  629. lfx/schema/validators.py +114 -0
  630. lfx/serialization/__init__.py +5 -0
  631. lfx/serialization/constants.py +2 -0
  632. lfx/serialization/serialization.py +314 -0
  633. lfx/services/__init__.py +23 -0
  634. lfx/services/base.py +28 -0
  635. lfx/services/cache/__init__.py +6 -0
  636. lfx/services/cache/base.py +183 -0
  637. lfx/services/cache/service.py +166 -0
  638. lfx/services/cache/utils.py +169 -0
  639. lfx/services/chat/__init__.py +1 -0
  640. lfx/services/chat/config.py +2 -0
  641. lfx/services/chat/schema.py +10 -0
  642. lfx/services/deps.py +129 -0
  643. lfx/services/factory.py +19 -0
  644. lfx/services/initialize.py +19 -0
  645. lfx/services/interfaces.py +103 -0
  646. lfx/services/manager.py +172 -0
  647. lfx/services/schema.py +20 -0
  648. lfx/services/session.py +82 -0
  649. lfx/services/settings/__init__.py +3 -0
  650. lfx/services/settings/auth.py +130 -0
  651. lfx/services/settings/base.py +539 -0
  652. lfx/services/settings/constants.py +31 -0
  653. lfx/services/settings/factory.py +23 -0
  654. lfx/services/settings/feature_flags.py +12 -0
  655. lfx/services/settings/service.py +35 -0
  656. lfx/services/settings/utils.py +40 -0
  657. lfx/services/shared_component_cache/__init__.py +1 -0
  658. lfx/services/shared_component_cache/factory.py +30 -0
  659. lfx/services/shared_component_cache/service.py +9 -0
  660. lfx/services/storage/__init__.py +5 -0
  661. lfx/services/storage/local.py +155 -0
  662. lfx/services/storage/service.py +54 -0
  663. lfx/services/tracing/__init__.py +1 -0
  664. lfx/services/tracing/service.py +21 -0
  665. lfx/settings.py +6 -0
  666. lfx/template/__init__.py +6 -0
  667. lfx/template/field/__init__.py +0 -0
  668. lfx/template/field/base.py +257 -0
  669. lfx/template/field/prompt.py +15 -0
  670. lfx/template/frontend_node/__init__.py +6 -0
  671. lfx/template/frontend_node/base.py +212 -0
  672. lfx/template/frontend_node/constants.py +65 -0
  673. lfx/template/frontend_node/custom_components.py +79 -0
  674. lfx/template/template/__init__.py +0 -0
  675. lfx/template/template/base.py +100 -0
  676. lfx/template/utils.py +217 -0
  677. lfx/type_extraction/__init__.py +19 -0
  678. lfx/type_extraction/type_extraction.py +75 -0
  679. lfx/type_extraction.py +80 -0
  680. lfx/utils/__init__.py +1 -0
  681. lfx/utils/async_helpers.py +42 -0
  682. lfx/utils/component_utils.py +154 -0
  683. lfx/utils/concurrency.py +60 -0
  684. lfx/utils/connection_string_parser.py +11 -0
  685. lfx/utils/constants.py +205 -0
  686. lfx/utils/data_structure.py +212 -0
  687. lfx/utils/exceptions.py +22 -0
  688. lfx/utils/helpers.py +28 -0
  689. lfx/utils/image.py +73 -0
  690. lfx/utils/lazy_load.py +15 -0
  691. lfx/utils/request_utils.py +18 -0
  692. lfx/utils/schemas.py +139 -0
  693. lfx/utils/util.py +481 -0
  694. lfx/utils/util_strings.py +56 -0
  695. lfx/utils/version.py +24 -0
  696. lfx_nightly-0.1.11.dev0.dist-info/METADATA +293 -0
  697. lfx_nightly-0.1.11.dev0.dist-info/RECORD +699 -0
  698. lfx_nightly-0.1.11.dev0.dist-info/WHEEL +4 -0
  699. lfx_nightly-0.1.11.dev0.dist-info/entry_points.txt +2 -0
@@ -0,0 +1,60 @@
1
+ from lfx.custom.custom_component.component import Component
2
+ from lfx.io import Output, SecretStrInput, StrInput
3
+ from lfx.schema.data import Data
4
+
5
+
6
+ class JigsawStackNSFWComponent(Component):
7
+ display_name = "NSFW Detection"
8
+ description = "Detect if image/video contains NSFW content"
9
+ documentation = "https://jigsawstack.com/docs/api-reference/ai/nsfw"
10
+ icon = "JigsawStack"
11
+ name = "JigsawStackNSFW"
12
+
13
+ inputs = [
14
+ SecretStrInput(
15
+ name="api_key",
16
+ display_name="JigsawStack API Key",
17
+ info="Your JigsawStack API key for authentication",
18
+ required=True,
19
+ ),
20
+ StrInput(
21
+ name="url",
22
+ display_name="URL",
23
+ info="URL of the image or video to analyze",
24
+ required=True,
25
+ ),
26
+ ]
27
+
28
+ outputs = [
29
+ Output(display_name="NSFW Analysis", name="nsfw_result", method="detect_nsfw"),
30
+ ]
31
+
32
+ def detect_nsfw(self) -> Data:
33
+ try:
34
+ from jigsawstack import JigsawStack, JigsawStackError
35
+ except ImportError as e:
36
+ jigsawstack_import_error = (
37
+ "JigsawStack package not found. Please install it using: pip install jigsawstack>=0.2.7"
38
+ )
39
+ raise ImportError(jigsawstack_import_error) from e
40
+
41
+ try:
42
+ client = JigsawStack(api_key=self.api_key)
43
+
44
+ # Build request parameters
45
+ params = {"url": self.url}
46
+
47
+ response = client.validate.nsfw(params)
48
+
49
+ api_error_msg = "JigsawStack API returned unsuccessful response"
50
+ if not response.get("success", False):
51
+ raise ValueError(api_error_msg)
52
+
53
+ return Data(data=response)
54
+
55
+ except ValueError:
56
+ raise
57
+ except JigsawStackError as e:
58
+ error_data = {"error": str(e), "success": False}
59
+ self.status = f"Error: {e!s}"
60
+ return Data(data=error_data)
@@ -0,0 +1,124 @@
1
+ from lfx.custom.custom_component.component import Component
2
+ from lfx.io import BoolInput, DropdownInput, MessageTextInput, Output, SecretStrInput
3
+ from lfx.schema.data import Data
4
+
5
+
6
+ class JigsawStackObjectDetectionComponent(Component):
7
+ display_name = "Object Detection"
8
+ description = "Perform object detection on images using JigsawStack's Object Detection Model, \
9
+ capable of image grounding, segmentation and computer use."
10
+ documentation = "https://jigsawstack.com/docs/api-reference/ai/object-detection"
11
+ icon = "JigsawStack"
12
+ name = "JigsawStackObjectDetection"
13
+
14
+ inputs = [
15
+ SecretStrInput(
16
+ name="api_key",
17
+ display_name="JigsawStack API Key",
18
+ info="Your JigsawStack API key for authentication",
19
+ required=True,
20
+ ),
21
+ MessageTextInput(
22
+ name="prompts",
23
+ display_name="Prompts",
24
+ info="The prompts to ground the object detection model. \
25
+ You can pass a list of comma-separated prompts to extract different information from the image.",
26
+ required=False,
27
+ tool_mode=True,
28
+ ),
29
+ MessageTextInput(
30
+ name="url",
31
+ display_name="URL",
32
+ info="The image URL. Not required if file_store_key is specified.",
33
+ required=False,
34
+ tool_mode=True,
35
+ ),
36
+ MessageTextInput(
37
+ name="file_store_key",
38
+ display_name="File Store Key",
39
+ info="The key used to store the image on Jigsawstack File Storage. Not required if url is specified.",
40
+ required=False,
41
+ tool_mode=True,
42
+ ),
43
+ BoolInput(
44
+ name="annotated_image",
45
+ display_name="Return Annotated Image",
46
+ info="If true, will return an url for annotated image with detected objects.",
47
+ required=False,
48
+ value=True,
49
+ ),
50
+ DropdownInput(
51
+ name="features",
52
+ display_name="Features",
53
+ info="Select the features to enable for object detection",
54
+ required=False,
55
+ options=["object_detection", "gui"],
56
+ value=["object_detection", "gui"],
57
+ ),
58
+ DropdownInput(
59
+ name="return_type",
60
+ display_name="Return Type",
61
+ info="Select the return type for the object detection results such as masks or annotations.",
62
+ required=False,
63
+ options=["url", "base64"],
64
+ value="url",
65
+ ),
66
+ ]
67
+
68
+ outputs = [
69
+ Output(display_name="Object Detection results", name="object_detection_results", method="detect_objects"),
70
+ ]
71
+
72
+ def detect_objects(self) -> Data:
73
+ try:
74
+ from jigsawstack import JigsawStack, JigsawStackError
75
+ except ImportError as e:
76
+ jigsawstack_import_error = (
77
+ "JigsawStack package not found. Please install it using: pip install jigsawstack>=0.2.7"
78
+ )
79
+ raise ImportError(jigsawstack_import_error) from e
80
+
81
+ try:
82
+ client = JigsawStack(api_key=self.api_key)
83
+
84
+ # build request object
85
+ params = {}
86
+ if self.prompts:
87
+ if isinstance(self.prompts, list):
88
+ params["prompt"] = self.prompts
89
+ elif isinstance(self.prompts, str):
90
+ if "," in self.prompts:
91
+ # Split by comma and strip whitespace
92
+ params["prompt"] = [p.strip() for p in self.prompts.split(",")]
93
+ else:
94
+ params["prompt"] = [self.prompts.strip()]
95
+ else:
96
+ invalid_prompt_error = "Prompt must be a list of strings or a single string"
97
+ raise ValueError(invalid_prompt_error)
98
+ if self.url:
99
+ params["url"] = self.url
100
+ if self.file_store_key:
101
+ params["file_store_key"] = self.file_store_key
102
+
103
+ # if both url and file_store_key are not provided, raise an error
104
+ if not self.url and not self.file_store_key:
105
+ missing_url_error = "Either URL or File Store Key must be provided to perform object detection"
106
+ raise ValueError(missing_url_error)
107
+
108
+ params["annotated_image"] = self.annotated_image
109
+ if self.features:
110
+ params["features"] = self.features
111
+
112
+ # Call web scraping
113
+ response = client.vision.object_detection(params)
114
+
115
+ if not response.get("success", False):
116
+ failed_response_error = "JigsawStack API returned unsuccessful response"
117
+ raise ValueError(failed_response_error)
118
+
119
+ return Data(data=response)
120
+
121
+ except JigsawStackError as e:
122
+ error_data = {"error": str(e), "success": False}
123
+ self.status = f"Error: {e!s}"
124
+ return Data(data=error_data)
@@ -0,0 +1,112 @@
1
+ from lfx.custom.custom_component.component import Component
2
+ from lfx.io import MessageTextInput, Output, SecretStrInput
3
+ from lfx.schema.data import Data
4
+ from lfx.schema.message import Message
5
+
6
+
7
+ class JigsawStackSentimentComponent(Component):
8
+ display_name = "Sentiment Analysis"
9
+ description = "Analyze sentiment of text using JigsawStack AI"
10
+ documentation = "https://jigsawstack.com/docs/api-reference/ai/sentiment"
11
+ icon = "JigsawStack"
12
+ name = "JigsawStackSentiment"
13
+
14
+ inputs = [
15
+ SecretStrInput(
16
+ name="api_key",
17
+ display_name="JigsawStack API Key",
18
+ info="Your JigsawStack API key for authentication",
19
+ required=True,
20
+ ),
21
+ MessageTextInput(
22
+ name="text",
23
+ display_name="Text",
24
+ info="Text to analyze for sentiment",
25
+ required=True,
26
+ tool_mode=True,
27
+ ),
28
+ ]
29
+
30
+ outputs = [
31
+ Output(display_name="Sentiment Data", name="sentiment_data", method="analyze_sentiment"),
32
+ Output(display_name="Sentiment Text", name="sentiment_text", method="get_sentiment_text"),
33
+ ]
34
+
35
+ def analyze_sentiment(self) -> Data:
36
+ try:
37
+ from jigsawstack import JigsawStack, JigsawStackError
38
+ except ImportError as e:
39
+ jigsawstack_import_error = (
40
+ "JigsawStack package not found. Please install it using: pip install jigsawstack>=0.2.7"
41
+ )
42
+ raise ImportError(jigsawstack_import_error) from e
43
+
44
+ try:
45
+ client = JigsawStack(api_key=self.api_key)
46
+ response = client.sentiment({"text": self.text})
47
+
48
+ api_error_msg = "JigsawStack API returned unsuccessful response"
49
+ if not response.get("success", False):
50
+ raise ValueError(api_error_msg)
51
+
52
+ sentiment_data = response.get("sentiment", {})
53
+
54
+ result_data = {
55
+ "text_analyzed": self.text,
56
+ "sentiment": sentiment_data.get("sentiment", "Unknown"),
57
+ "emotion": sentiment_data.get("emotion", "Unknown"),
58
+ "score": sentiment_data.get("score", 0.0),
59
+ "sentences": response.get("sentences", []),
60
+ "success": True,
61
+ }
62
+
63
+ self.status = (
64
+ f"Sentiment: {sentiment_data.get('sentiment', 'Unknown')} | "
65
+ f"Emotion: {sentiment_data.get('emotion', 'Unknown')} | "
66
+ f"Score: {sentiment_data.get('score', 0.0):.3f}"
67
+ )
68
+
69
+ return Data(data=result_data)
70
+
71
+ except JigsawStackError as e:
72
+ error_data = {"error": str(e), "text_analyzed": self.text, "success": False}
73
+ self.status = f"Error: {e!s}"
74
+ return Data(data=error_data)
75
+
76
+ def get_sentiment_text(self) -> Message:
77
+ try:
78
+ from jigsawstack import JigsawStack, JigsawStackError
79
+ except ImportError:
80
+ return Message(text="Error: JigsawStack package not found. Please install it with: pip install jigsawstack")
81
+
82
+ try:
83
+ client = JigsawStack(api_key=self.api_key)
84
+ response = client.sentiment({"text": self.text})
85
+
86
+ sentiment_data = response.get("sentiment", {})
87
+ sentences = response.get("sentences", [])
88
+
89
+ # Format the output
90
+ formatted_output = f"""Sentiment Analysis Results:
91
+
92
+ Text: {self.text}
93
+
94
+ Overall Sentiment: {sentiment_data.get("sentiment", "Unknown")}
95
+ Emotion: {sentiment_data.get("emotion", "Unknown")}
96
+ Score: {sentiment_data.get("score", 0.0):.3f}
97
+
98
+ Sentence-by-sentence Analysis:
99
+ """
100
+
101
+ for i, sentence in enumerate(sentences, 1):
102
+ formatted_output += (
103
+ f"{i}. {sentence.get('text', '')}\n"
104
+ f" Sentiment: {sentence.get('sentiment', 'Unknown')} | "
105
+ f"Emotion: {sentence.get('emotion', 'Unknown')} | "
106
+ f"Score: {sentence.get('score', 0.0):.3f}\n"
107
+ )
108
+
109
+ return Message(text=formatted_output)
110
+
111
+ except JigsawStackError as e:
112
+ return Message(text=f"Error analyzing sentiment: {e!s}")
@@ -0,0 +1,90 @@
1
+ from lfx.custom.custom_component.component import Component
2
+ from lfx.io import MessageTextInput, Output, QueryInput, SecretStrInput, StrInput
3
+ from lfx.schema.data import Data
4
+
5
+
6
+ class JigsawStackTextToSQLComponent(Component):
7
+ display_name = "Text to SQL"
8
+ description = "Convert natural language to SQL queries using JigsawStack AI"
9
+ documentation = "https://jigsawstack.com/docs/api-reference/ai/text-to-sql"
10
+ icon = "JigsawStack"
11
+ name = "JigsawStackTextToSQL"
12
+
13
+ inputs = [
14
+ SecretStrInput(
15
+ name="api_key",
16
+ display_name="JigsawStack API Key",
17
+ info="Your JigsawStack API key for authentication",
18
+ required=True,
19
+ ),
20
+ QueryInput(
21
+ name="prompt",
22
+ display_name="Prompt",
23
+ info="Natural language description of the SQL query you want to generate",
24
+ required=True,
25
+ tool_mode=True,
26
+ ),
27
+ MessageTextInput(
28
+ name="sql_schema",
29
+ display_name="SQL Schema",
30
+ info=(
31
+ "The database schema information. Can be a CREATE TABLE statement or schema description. "
32
+ "Specifying this parameter improves SQL generation accuracy by applying "
33
+ "database-specific syntax and optimizations."
34
+ ),
35
+ required=False,
36
+ tool_mode=True,
37
+ ),
38
+ StrInput(
39
+ name="file_store_key",
40
+ display_name="File Store Key",
41
+ info=(
42
+ "The key used to store the database schema on Jigsawstack file Storage. "
43
+ "Not required if sql_schema is specified."
44
+ ),
45
+ required=False,
46
+ tool_mode=True,
47
+ ),
48
+ ]
49
+
50
+ outputs = [
51
+ Output(display_name="SQL Query", name="sql_query", method="generate_sql"),
52
+ ]
53
+
54
+ def generate_sql(self) -> Data:
55
+ try:
56
+ from jigsawstack import JigsawStack, JigsawStackError
57
+ except ImportError as e:
58
+ jigsawstack_import_error = (
59
+ "JigsawStack package not found. Please install it using: pip install jigsawstack>=0.2.7"
60
+ )
61
+ raise ImportError(jigsawstack_import_error) from e
62
+
63
+ try:
64
+ schema_error = "Either 'sql_schema' or 'file_store_key' must be provided"
65
+ if not self.sql_schema and not self.file_store_key:
66
+ raise ValueError(schema_error)
67
+
68
+ # build request object
69
+ params = {"prompt": self.prompt}
70
+
71
+ if self.sql_schema:
72
+ params["sql_schema"] = self.sql_schema
73
+ if self.file_store_key:
74
+ params["file_store_key"] = self.file_store_key
75
+
76
+ client = JigsawStack(api_key=self.api_key)
77
+ response = client.text_to_sql(params)
78
+
79
+ api_error_msg = "JigsawStack API returned unsuccessful response"
80
+ if not response.get("success", False):
81
+ raise ValueError(api_error_msg)
82
+
83
+ return Data(data=response)
84
+
85
+ except ValueError:
86
+ raise
87
+ except JigsawStackError as e:
88
+ error_data = {"error": str(e), "success": False}
89
+ self.status = f"Error: {e!s}"
90
+ return Data(data=error_data)
@@ -0,0 +1,77 @@
1
+ from lfx.custom.custom_component.component import Component
2
+ from lfx.io import MessageTextInput, Output, SecretStrInput, StrInput
3
+ from lfx.schema.data import Data
4
+
5
+
6
+ class JigsawStackTextTranslateComponent(Component):
7
+ display_name = "Text Translate"
8
+ description = "Translate text from one language to another with support for multiple text formats."
9
+ documentation = "https://jigsawstack.com/docs/api-reference/ai/translate"
10
+ icon = "JigsawStack"
11
+ name = "JigsawStackTextTranslate"
12
+ inputs = [
13
+ SecretStrInput(
14
+ name="api_key",
15
+ display_name="JigsawStack API Key",
16
+ info="Your JigsawStack API key for authentication",
17
+ required=True,
18
+ ),
19
+ StrInput(
20
+ name="target_language",
21
+ display_name="Target Language",
22
+ info="The language code of the target language to translate to. \
23
+ Language code is identified by a unique ISO 639-1 two-letter code",
24
+ required=True,
25
+ tool_mode=True,
26
+ ),
27
+ MessageTextInput(
28
+ name="text",
29
+ display_name="Text",
30
+ info="The text to translate. This can be a single string or a list of strings. \
31
+ If a list is provided, each string will be translated separately.",
32
+ required=True,
33
+ is_list=True,
34
+ tool_mode=True,
35
+ ),
36
+ ]
37
+
38
+ outputs = [
39
+ Output(display_name="Translation Results", name="translation_results", method="translation"),
40
+ ]
41
+
42
+ def translation(self) -> Data:
43
+ try:
44
+ from jigsawstack import JigsawStack, JigsawStackError
45
+ except ImportError as e:
46
+ jigsawstack_import_error = (
47
+ "JigsawStack package not found. Please install it using: pip install jigsawstack>=0.2.7"
48
+ )
49
+ raise ImportError(jigsawstack_import_error) from e
50
+
51
+ try:
52
+ client = JigsawStack(api_key=self.api_key)
53
+
54
+ # build request object
55
+ params = {}
56
+ if self.target_language:
57
+ params["target_language"] = self.target_language
58
+
59
+ if self.text:
60
+ if isinstance(self.text, list):
61
+ params["text"] = self.text
62
+ else:
63
+ params["text"] = [self.text]
64
+
65
+ # Call web scraping
66
+ response = client.translate.text(params)
67
+
68
+ if not response.get("success", False):
69
+ failed_response_error = "JigsawStack API returned unsuccessful response"
70
+ raise ValueError(failed_response_error)
71
+
72
+ return Data(data=response)
73
+
74
+ except JigsawStackError as e:
75
+ error_data = {"error": str(e), "success": False}
76
+ self.status = f"Error: {e!s}"
77
+ return Data(data=error_data)
@@ -0,0 +1,107 @@
1
+ from lfx.custom.custom_component.component import Component
2
+ from lfx.io import IntInput, MessageTextInput, Output, SecretStrInput, StrInput
3
+ from lfx.schema.data import Data
4
+
5
+
6
+ class JigsawStackVOCRComponent(Component):
7
+ display_name = "VOCR"
8
+ description = "Extract data from any document type in a consistent structure with fine-tuned \
9
+ vLLMs for the highest accuracy"
10
+ documentation = "https://jigsawstack.com/docs/api-reference/ai/vocr"
11
+ icon = "JigsawStack"
12
+ name = "JigsawStackVOCR"
13
+
14
+ inputs = [
15
+ SecretStrInput(
16
+ name="api_key",
17
+ display_name="JigsawStack API Key",
18
+ info="Your JigsawStack API key for authentication",
19
+ required=True,
20
+ ),
21
+ MessageTextInput(
22
+ name="prompts",
23
+ display_name="Prompts",
24
+ info="The prompts used to describe the image. Default prompt is Describe the image in detail. \
25
+ You can pass a list of comma-separated prompts to extract different information from the image.",
26
+ required=False,
27
+ tool_mode=True,
28
+ ),
29
+ StrInput(
30
+ name="url",
31
+ display_name="URL",
32
+ info="The image or document url. Not required if file_store_key is specified.",
33
+ required=False,
34
+ tool_mode=True,
35
+ ),
36
+ StrInput(
37
+ name="file_store_key",
38
+ display_name="File Store Key",
39
+ info="The key used to store the image on Jigsawstack File Storage. Not required if url is specified.",
40
+ required=False,
41
+ tool_mode=True,
42
+ ),
43
+ IntInput(
44
+ name="page_range_start",
45
+ display_name="Page Range",
46
+ info="Page range start limit for the document. If not specified, all pages will be processed.",
47
+ required=False,
48
+ ),
49
+ IntInput(
50
+ name="page_range_end",
51
+ display_name="Page Range End",
52
+ info="Page range end limit for the document. If not specified, all pages will be processed.",
53
+ required=False,
54
+ ),
55
+ ]
56
+
57
+ outputs = [
58
+ Output(display_name="VOCR results", name="vocr_results", method="vocr"),
59
+ ]
60
+
61
+ def vocr(self) -> Data:
62
+ try:
63
+ from jigsawstack import JigsawStack, JigsawStackError
64
+ except ImportError as e:
65
+ jigsawstack_import_error = (
66
+ "JigsawStack package not found. Please install it using: pip install jigsawstack>=0.2.7"
67
+ )
68
+ raise ImportError(jigsawstack_import_error) from e
69
+
70
+ try:
71
+ client = JigsawStack(api_key=self.api_key)
72
+
73
+ # build request object
74
+ params = {}
75
+ if self.prompts:
76
+ if isinstance(self.prompts, list):
77
+ params["prompt"] = self.prompts
78
+ elif isinstance(self.prompts, str):
79
+ if "," in self.prompts:
80
+ # Split by comma and strip whitespace
81
+ params["prompt"] = [p.strip() for p in self.prompts.split(",")]
82
+ else:
83
+ params["prompt"] = [self.prompts.strip()]
84
+ else:
85
+ invalid_prompt_error = "Prompt must be a list of strings or a single string"
86
+ raise ValueError(invalid_prompt_error)
87
+ if self.url:
88
+ params["url"] = self.url
89
+ if self.file_store_key:
90
+ params["file_store_key"] = self.file_store_key
91
+
92
+ if self.page_range_start and self.page_range_end:
93
+ params["page_range"] = [self.page_range_start, self.page_range_end]
94
+
95
+ # Call VOCR
96
+ response = client.vision.vocr(params)
97
+
98
+ if not response.get("success", False):
99
+ failed_response_error = "JigsawStack API returned unsuccessful response"
100
+ raise ValueError(failed_response_error)
101
+
102
+ return Data(data=response)
103
+
104
+ except JigsawStackError as e:
105
+ error_data = {"error": str(e), "success": False}
106
+ self.status = f"Error: {e!s}"
107
+ return Data(data=error_data)
@@ -0,0 +1,109 @@
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 .character import CharacterTextSplitterComponent
9
+ from .conversation import ConversationChainComponent
10
+ from .csv_agent import CSVAgentComponent
11
+ from .fake_embeddings import FakeEmbeddingsComponent
12
+ from .html_link_extractor import HtmlLinkExtractorComponent
13
+ from .json_agent import JsonAgentComponent
14
+ from .langchain_hub import LangChainHubPromptComponent
15
+ from .language_recursive import LanguageRecursiveTextSplitterComponent
16
+ from .language_semantic import SemanticTextSplitterComponent
17
+ from .llm_checker import LLMCheckerChainComponent
18
+ from .llm_math import LLMMathChainComponent
19
+ from .natural_language import NaturalLanguageTextSplitterComponent
20
+ from .openai_tools import OpenAIToolsAgentComponent
21
+ from .openapi import OpenAPIAgentComponent
22
+ from .recursive_character import RecursiveCharacterTextSplitterComponent
23
+ from .retrieval_qa import RetrievalQAComponent
24
+ from .runnable_executor import RunnableExecComponent
25
+ from .self_query import SelfQueryRetrieverComponent
26
+ from .spider import SpiderTool
27
+ from .sql import SQLAgentComponent
28
+ from .sql_database import SQLDatabaseComponent
29
+ from .sql_generator import SQLGeneratorComponent
30
+ from .tool_calling import ToolCallingAgentComponent
31
+ from .vector_store_info import VectorStoreInfoComponent
32
+ from .vector_store_router import VectorStoreRouterAgentComponent
33
+ from .xml_agent import XMLAgentComponent
34
+
35
+ _dynamic_imports = {
36
+ "CharacterTextSplitterComponent": "character",
37
+ "ConversationChainComponent": "conversation",
38
+ "CSVAgentComponent": "csv_agent",
39
+ "FakeEmbeddingsComponent": "fake_embeddings",
40
+ "HtmlLinkExtractorComponent": "html_link_extractor",
41
+ "JsonAgentComponent": "json_agent",
42
+ "LangChainHubPromptComponent": "langchain_hub",
43
+ "LanguageRecursiveTextSplitterComponent": "language_recursive",
44
+ "LLMCheckerChainComponent": "llm_checker",
45
+ "LLMMathChainComponent": "llm_math",
46
+ "NaturalLanguageTextSplitterComponent": "natural_language",
47
+ "OpenAIToolsAgentComponent": "openai_tools",
48
+ "OpenAPIAgentComponent": "openapi",
49
+ "RecursiveCharacterTextSplitterComponent": "recursive_character",
50
+ "RetrievalQAComponent": "retrieval_qa",
51
+ "RunnableExecComponent": "runnable_executor",
52
+ "SelfQueryRetrieverComponent": "self_query",
53
+ "SemanticTextSplitterComponent": "language_semantic",
54
+ "SpiderTool": "spider",
55
+ "SQLAgentComponent": "sql",
56
+ "SQLDatabaseComponent": "sql_database",
57
+ "SQLGeneratorComponent": "sql_generator",
58
+ "ToolCallingAgentComponent": "tool_calling",
59
+ "VectorStoreInfoComponent": "vector_store_info",
60
+ "VectorStoreRouterAgentComponent": "vector_store_router",
61
+ "XMLAgentComponent": "xml_agent",
62
+ }
63
+
64
+ __all__ = [
65
+ "CSVAgentComponent",
66
+ "CharacterTextSplitterComponent",
67
+ "ConversationChainComponent",
68
+ "FakeEmbeddingsComponent",
69
+ "HtmlLinkExtractorComponent",
70
+ "JsonAgentComponent",
71
+ "LLMCheckerChainComponent",
72
+ "LLMMathChainComponent",
73
+ "LangChainHubPromptComponent",
74
+ "LanguageRecursiveTextSplitterComponent",
75
+ "NaturalLanguageTextSplitterComponent",
76
+ "OpenAIToolsAgentComponent",
77
+ "OpenAPIAgentComponent",
78
+ "RecursiveCharacterTextSplitterComponent",
79
+ "RetrievalQAComponent",
80
+ "RunnableExecComponent",
81
+ "SQLAgentComponent",
82
+ "SQLDatabaseComponent",
83
+ "SQLGeneratorComponent",
84
+ "SelfQueryRetrieverComponent",
85
+ "SemanticTextSplitterComponent",
86
+ "SpiderTool",
87
+ "ToolCallingAgentComponent",
88
+ "VectorStoreInfoComponent",
89
+ "VectorStoreRouterAgentComponent",
90
+ "XMLAgentComponent",
91
+ ]
92
+
93
+
94
+ def __getattr__(attr_name: str) -> Any:
95
+ """Lazily import langchain utility components on attribute access."""
96
+ if attr_name not in _dynamic_imports:
97
+ msg = f"module '{__name__}' has no attribute '{attr_name}'"
98
+ raise AttributeError(msg)
99
+ try:
100
+ result = import_mod(attr_name, _dynamic_imports[attr_name], __spec__.parent)
101
+ except (ModuleNotFoundError, ImportError, AttributeError) as e:
102
+ msg = f"Could not import '{attr_name}' from '{__name__}': {e}"
103
+ raise AttributeError(msg) from e
104
+ globals()[attr_name] = result
105
+ return result
106
+
107
+
108
+ def __dir__() -> list[str]:
109
+ return list(__all__)