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.
- lfx/__init__.py +0 -0
- lfx/__main__.py +25 -0
- lfx/base/__init__.py +0 -0
- lfx/base/agents/__init__.py +0 -0
- lfx/base/agents/agent.py +268 -0
- lfx/base/agents/callback.py +130 -0
- lfx/base/agents/context.py +109 -0
- lfx/base/agents/crewai/__init__.py +0 -0
- lfx/base/agents/crewai/crew.py +231 -0
- lfx/base/agents/crewai/tasks.py +12 -0
- lfx/base/agents/default_prompts.py +23 -0
- lfx/base/agents/errors.py +15 -0
- lfx/base/agents/events.py +346 -0
- lfx/base/agents/utils.py +205 -0
- lfx/base/astra_assistants/__init__.py +0 -0
- lfx/base/astra_assistants/util.py +171 -0
- lfx/base/chains/__init__.py +0 -0
- lfx/base/chains/model.py +19 -0
- lfx/base/composio/__init__.py +0 -0
- lfx/base/composio/composio_base.py +1291 -0
- lfx/base/compressors/__init__.py +0 -0
- lfx/base/compressors/model.py +60 -0
- lfx/base/constants.py +46 -0
- lfx/base/curl/__init__.py +0 -0
- lfx/base/curl/parse.py +188 -0
- lfx/base/data/__init__.py +5 -0
- lfx/base/data/base_file.py +685 -0
- lfx/base/data/docling_utils.py +245 -0
- lfx/base/data/utils.py +198 -0
- lfx/base/document_transformers/__init__.py +0 -0
- lfx/base/document_transformers/model.py +43 -0
- lfx/base/embeddings/__init__.py +0 -0
- lfx/base/embeddings/aiml_embeddings.py +62 -0
- lfx/base/embeddings/model.py +26 -0
- lfx/base/flow_processing/__init__.py +0 -0
- lfx/base/flow_processing/utils.py +86 -0
- lfx/base/huggingface/__init__.py +0 -0
- lfx/base/huggingface/model_bridge.py +133 -0
- lfx/base/io/__init__.py +0 -0
- lfx/base/io/chat.py +20 -0
- lfx/base/io/text.py +22 -0
- lfx/base/langchain_utilities/__init__.py +0 -0
- lfx/base/langchain_utilities/model.py +35 -0
- lfx/base/langchain_utilities/spider_constants.py +1 -0
- lfx/base/langwatch/__init__.py +0 -0
- lfx/base/langwatch/utils.py +18 -0
- lfx/base/mcp/__init__.py +0 -0
- lfx/base/mcp/constants.py +2 -0
- lfx/base/mcp/util.py +1398 -0
- lfx/base/memory/__init__.py +0 -0
- lfx/base/memory/memory.py +49 -0
- lfx/base/memory/model.py +38 -0
- lfx/base/models/__init__.py +3 -0
- lfx/base/models/aiml_constants.py +51 -0
- lfx/base/models/anthropic_constants.py +47 -0
- lfx/base/models/aws_constants.py +151 -0
- lfx/base/models/chat_result.py +76 -0
- lfx/base/models/google_generative_ai_constants.py +70 -0
- lfx/base/models/groq_constants.py +134 -0
- lfx/base/models/model.py +375 -0
- lfx/base/models/model_input_constants.py +307 -0
- lfx/base/models/model_metadata.py +41 -0
- lfx/base/models/model_utils.py +8 -0
- lfx/base/models/novita_constants.py +35 -0
- lfx/base/models/ollama_constants.py +49 -0
- lfx/base/models/openai_constants.py +122 -0
- lfx/base/models/sambanova_constants.py +18 -0
- lfx/base/processing/__init__.py +0 -0
- lfx/base/prompts/__init__.py +0 -0
- lfx/base/prompts/api_utils.py +224 -0
- lfx/base/prompts/utils.py +61 -0
- lfx/base/textsplitters/__init__.py +0 -0
- lfx/base/textsplitters/model.py +28 -0
- lfx/base/tools/__init__.py +0 -0
- lfx/base/tools/base.py +26 -0
- lfx/base/tools/component_tool.py +325 -0
- lfx/base/tools/constants.py +49 -0
- lfx/base/tools/flow_tool.py +132 -0
- lfx/base/tools/run_flow.py +224 -0
- lfx/base/vectorstores/__init__.py +0 -0
- lfx/base/vectorstores/model.py +193 -0
- lfx/base/vectorstores/utils.py +22 -0
- lfx/base/vectorstores/vector_store_connection_decorator.py +52 -0
- lfx/cli/__init__.py +5 -0
- lfx/cli/commands.py +319 -0
- lfx/cli/common.py +650 -0
- lfx/cli/run.py +441 -0
- lfx/cli/script_loader.py +247 -0
- lfx/cli/serve_app.py +546 -0
- lfx/cli/validation.py +69 -0
- lfx/components/FAISS/__init__.py +34 -0
- lfx/components/FAISS/faiss.py +111 -0
- lfx/components/Notion/__init__.py +19 -0
- lfx/components/Notion/add_content_to_page.py +269 -0
- lfx/components/Notion/create_page.py +94 -0
- lfx/components/Notion/list_database_properties.py +68 -0
- lfx/components/Notion/list_pages.py +122 -0
- lfx/components/Notion/list_users.py +77 -0
- lfx/components/Notion/page_content_viewer.py +93 -0
- lfx/components/Notion/search.py +111 -0
- lfx/components/Notion/update_page_property.py +114 -0
- lfx/components/__init__.py +411 -0
- lfx/components/_importing.py +42 -0
- lfx/components/agentql/__init__.py +3 -0
- lfx/components/agentql/agentql_api.py +151 -0
- lfx/components/agents/__init__.py +34 -0
- lfx/components/agents/agent.py +558 -0
- lfx/components/agents/mcp_component.py +501 -0
- lfx/components/aiml/__init__.py +37 -0
- lfx/components/aiml/aiml.py +112 -0
- lfx/components/aiml/aiml_embeddings.py +37 -0
- lfx/components/amazon/__init__.py +36 -0
- lfx/components/amazon/amazon_bedrock_embedding.py +109 -0
- lfx/components/amazon/amazon_bedrock_model.py +124 -0
- lfx/components/amazon/s3_bucket_uploader.py +211 -0
- lfx/components/anthropic/__init__.py +34 -0
- lfx/components/anthropic/anthropic.py +187 -0
- lfx/components/apify/__init__.py +5 -0
- lfx/components/apify/apify_actor.py +325 -0
- lfx/components/arxiv/__init__.py +3 -0
- lfx/components/arxiv/arxiv.py +163 -0
- lfx/components/assemblyai/__init__.py +46 -0
- lfx/components/assemblyai/assemblyai_get_subtitles.py +83 -0
- lfx/components/assemblyai/assemblyai_lemur.py +183 -0
- lfx/components/assemblyai/assemblyai_list_transcripts.py +95 -0
- lfx/components/assemblyai/assemblyai_poll_transcript.py +72 -0
- lfx/components/assemblyai/assemblyai_start_transcript.py +188 -0
- lfx/components/azure/__init__.py +37 -0
- lfx/components/azure/azure_openai.py +95 -0
- lfx/components/azure/azure_openai_embeddings.py +83 -0
- lfx/components/baidu/__init__.py +32 -0
- lfx/components/baidu/baidu_qianfan_chat.py +113 -0
- lfx/components/bing/__init__.py +3 -0
- lfx/components/bing/bing_search_api.py +61 -0
- lfx/components/cassandra/__init__.py +40 -0
- lfx/components/cassandra/cassandra.py +264 -0
- lfx/components/cassandra/cassandra_chat.py +92 -0
- lfx/components/cassandra/cassandra_graph.py +238 -0
- lfx/components/chains/__init__.py +3 -0
- lfx/components/chroma/__init__.py +34 -0
- lfx/components/chroma/chroma.py +167 -0
- lfx/components/cleanlab/__init__.py +40 -0
- lfx/components/cleanlab/cleanlab_evaluator.py +155 -0
- lfx/components/cleanlab/cleanlab_rag_evaluator.py +254 -0
- lfx/components/cleanlab/cleanlab_remediator.py +131 -0
- lfx/components/clickhouse/__init__.py +34 -0
- lfx/components/clickhouse/clickhouse.py +135 -0
- lfx/components/cloudflare/__init__.py +32 -0
- lfx/components/cloudflare/cloudflare.py +81 -0
- lfx/components/cohere/__init__.py +40 -0
- lfx/components/cohere/cohere_embeddings.py +81 -0
- lfx/components/cohere/cohere_models.py +46 -0
- lfx/components/cohere/cohere_rerank.py +51 -0
- lfx/components/composio/__init__.py +74 -0
- lfx/components/composio/composio_api.py +268 -0
- lfx/components/composio/dropbox_compnent.py +11 -0
- lfx/components/composio/github_composio.py +11 -0
- lfx/components/composio/gmail_composio.py +38 -0
- lfx/components/composio/googlecalendar_composio.py +11 -0
- lfx/components/composio/googlemeet_composio.py +11 -0
- lfx/components/composio/googletasks_composio.py +8 -0
- lfx/components/composio/linear_composio.py +11 -0
- lfx/components/composio/outlook_composio.py +11 -0
- lfx/components/composio/reddit_composio.py +11 -0
- lfx/components/composio/slack_composio.py +582 -0
- lfx/components/composio/slackbot_composio.py +11 -0
- lfx/components/composio/supabase_composio.py +11 -0
- lfx/components/composio/todoist_composio.py +11 -0
- lfx/components/composio/youtube_composio.py +11 -0
- lfx/components/confluence/__init__.py +3 -0
- lfx/components/confluence/confluence.py +84 -0
- lfx/components/couchbase/__init__.py +34 -0
- lfx/components/couchbase/couchbase.py +102 -0
- lfx/components/crewai/__init__.py +49 -0
- lfx/components/crewai/crewai.py +107 -0
- lfx/components/crewai/hierarchical_crew.py +46 -0
- lfx/components/crewai/hierarchical_task.py +44 -0
- lfx/components/crewai/sequential_crew.py +52 -0
- lfx/components/crewai/sequential_task.py +73 -0
- lfx/components/crewai/sequential_task_agent.py +143 -0
- lfx/components/custom_component/__init__.py +34 -0
- lfx/components/custom_component/custom_component.py +31 -0
- lfx/components/data/__init__.py +64 -0
- lfx/components/data/api_request.py +544 -0
- lfx/components/data/csv_to_data.py +95 -0
- lfx/components/data/directory.py +113 -0
- lfx/components/data/file.py +577 -0
- lfx/components/data/json_to_data.py +98 -0
- lfx/components/data/news_search.py +164 -0
- lfx/components/data/rss.py +69 -0
- lfx/components/data/sql_executor.py +101 -0
- lfx/components/data/url.py +311 -0
- lfx/components/data/web_search.py +112 -0
- lfx/components/data/webhook.py +56 -0
- lfx/components/datastax/__init__.py +70 -0
- lfx/components/datastax/astra_assistant_manager.py +306 -0
- lfx/components/datastax/astra_db.py +75 -0
- lfx/components/datastax/astra_vectorize.py +124 -0
- lfx/components/datastax/astradb.py +1285 -0
- lfx/components/datastax/astradb_cql.py +314 -0
- lfx/components/datastax/astradb_graph.py +330 -0
- lfx/components/datastax/astradb_tool.py +414 -0
- lfx/components/datastax/astradb_vectorstore.py +1285 -0
- lfx/components/datastax/cassandra.py +92 -0
- lfx/components/datastax/create_assistant.py +58 -0
- lfx/components/datastax/create_thread.py +32 -0
- lfx/components/datastax/dotenv.py +35 -0
- lfx/components/datastax/get_assistant.py +37 -0
- lfx/components/datastax/getenvvar.py +30 -0
- lfx/components/datastax/graph_rag.py +141 -0
- lfx/components/datastax/hcd.py +314 -0
- lfx/components/datastax/list_assistants.py +25 -0
- lfx/components/datastax/run.py +89 -0
- lfx/components/deactivated/__init__.py +15 -0
- lfx/components/deactivated/amazon_kendra.py +66 -0
- lfx/components/deactivated/chat_litellm_model.py +158 -0
- lfx/components/deactivated/code_block_extractor.py +26 -0
- lfx/components/deactivated/documents_to_data.py +22 -0
- lfx/components/deactivated/embed.py +16 -0
- lfx/components/deactivated/extract_key_from_data.py +46 -0
- lfx/components/deactivated/json_document_builder.py +57 -0
- lfx/components/deactivated/list_flows.py +20 -0
- lfx/components/deactivated/mcp_sse.py +61 -0
- lfx/components/deactivated/mcp_stdio.py +62 -0
- lfx/components/deactivated/merge_data.py +93 -0
- lfx/components/deactivated/message.py +37 -0
- lfx/components/deactivated/metal.py +54 -0
- lfx/components/deactivated/multi_query.py +59 -0
- lfx/components/deactivated/retriever.py +43 -0
- lfx/components/deactivated/selective_passthrough.py +77 -0
- lfx/components/deactivated/should_run_next.py +40 -0
- lfx/components/deactivated/split_text.py +63 -0
- lfx/components/deactivated/store_message.py +24 -0
- lfx/components/deactivated/sub_flow.py +124 -0
- lfx/components/deactivated/vectara_self_query.py +76 -0
- lfx/components/deactivated/vector_store.py +24 -0
- lfx/components/deepseek/__init__.py +34 -0
- lfx/components/deepseek/deepseek.py +136 -0
- lfx/components/docling/__init__.py +43 -0
- lfx/components/docling/chunk_docling_document.py +186 -0
- lfx/components/docling/docling_inline.py +231 -0
- lfx/components/docling/docling_remote.py +193 -0
- lfx/components/docling/export_docling_document.py +117 -0
- lfx/components/documentloaders/__init__.py +3 -0
- lfx/components/duckduckgo/__init__.py +3 -0
- lfx/components/duckduckgo/duck_duck_go_search_run.py +92 -0
- lfx/components/elastic/__init__.py +37 -0
- lfx/components/elastic/elasticsearch.py +267 -0
- lfx/components/elastic/opensearch.py +243 -0
- lfx/components/embeddings/__init__.py +37 -0
- lfx/components/embeddings/similarity.py +76 -0
- lfx/components/embeddings/text_embedder.py +64 -0
- lfx/components/exa/__init__.py +3 -0
- lfx/components/exa/exa_search.py +68 -0
- lfx/components/firecrawl/__init__.py +43 -0
- lfx/components/firecrawl/firecrawl_crawl_api.py +88 -0
- lfx/components/firecrawl/firecrawl_extract_api.py +136 -0
- lfx/components/firecrawl/firecrawl_map_api.py +89 -0
- lfx/components/firecrawl/firecrawl_scrape_api.py +73 -0
- lfx/components/git/__init__.py +4 -0
- lfx/components/git/git.py +262 -0
- lfx/components/git/gitextractor.py +196 -0
- lfx/components/glean/__init__.py +3 -0
- lfx/components/glean/glean_search_api.py +173 -0
- lfx/components/google/__init__.py +17 -0
- lfx/components/google/gmail.py +192 -0
- lfx/components/google/google_bq_sql_executor.py +157 -0
- lfx/components/google/google_drive.py +92 -0
- lfx/components/google/google_drive_search.py +152 -0
- lfx/components/google/google_generative_ai.py +147 -0
- lfx/components/google/google_generative_ai_embeddings.py +141 -0
- lfx/components/google/google_oauth_token.py +89 -0
- lfx/components/google/google_search_api_core.py +68 -0
- lfx/components/google/google_serper_api_core.py +74 -0
- lfx/components/groq/__init__.py +34 -0
- lfx/components/groq/groq.py +136 -0
- lfx/components/helpers/__init__.py +52 -0
- lfx/components/helpers/calculator_core.py +89 -0
- lfx/components/helpers/create_list.py +40 -0
- lfx/components/helpers/current_date.py +42 -0
- lfx/components/helpers/id_generator.py +42 -0
- lfx/components/helpers/memory.py +251 -0
- lfx/components/helpers/output_parser.py +45 -0
- lfx/components/helpers/store_message.py +90 -0
- lfx/components/homeassistant/__init__.py +7 -0
- lfx/components/homeassistant/home_assistant_control.py +152 -0
- lfx/components/homeassistant/list_home_assistant_states.py +137 -0
- lfx/components/huggingface/__init__.py +37 -0
- lfx/components/huggingface/huggingface.py +197 -0
- lfx/components/huggingface/huggingface_inference_api.py +106 -0
- lfx/components/ibm/__init__.py +34 -0
- lfx/components/ibm/watsonx.py +203 -0
- lfx/components/ibm/watsonx_embeddings.py +135 -0
- lfx/components/icosacomputing/__init__.py +5 -0
- lfx/components/icosacomputing/combinatorial_reasoner.py +84 -0
- lfx/components/input_output/__init__.py +38 -0
- lfx/components/input_output/chat.py +120 -0
- lfx/components/input_output/chat_output.py +200 -0
- lfx/components/input_output/text.py +27 -0
- lfx/components/input_output/text_output.py +29 -0
- lfx/components/jigsawstack/__init__.py +23 -0
- lfx/components/jigsawstack/ai_scrape.py +126 -0
- lfx/components/jigsawstack/ai_web_search.py +136 -0
- lfx/components/jigsawstack/file_read.py +115 -0
- lfx/components/jigsawstack/file_upload.py +94 -0
- lfx/components/jigsawstack/image_generation.py +205 -0
- lfx/components/jigsawstack/nsfw.py +60 -0
- lfx/components/jigsawstack/object_detection.py +124 -0
- lfx/components/jigsawstack/sentiment.py +112 -0
- lfx/components/jigsawstack/text_to_sql.py +90 -0
- lfx/components/jigsawstack/text_translate.py +77 -0
- lfx/components/jigsawstack/vocr.py +107 -0
- lfx/components/langchain_utilities/__init__.py +109 -0
- lfx/components/langchain_utilities/character.py +53 -0
- lfx/components/langchain_utilities/conversation.py +59 -0
- lfx/components/langchain_utilities/csv_agent.py +107 -0
- lfx/components/langchain_utilities/fake_embeddings.py +26 -0
- lfx/components/langchain_utilities/html_link_extractor.py +35 -0
- lfx/components/langchain_utilities/json_agent.py +45 -0
- lfx/components/langchain_utilities/langchain_hub.py +126 -0
- lfx/components/langchain_utilities/language_recursive.py +49 -0
- lfx/components/langchain_utilities/language_semantic.py +138 -0
- lfx/components/langchain_utilities/llm_checker.py +39 -0
- lfx/components/langchain_utilities/llm_math.py +42 -0
- lfx/components/langchain_utilities/natural_language.py +61 -0
- lfx/components/langchain_utilities/openai_tools.py +53 -0
- lfx/components/langchain_utilities/openapi.py +48 -0
- lfx/components/langchain_utilities/recursive_character.py +60 -0
- lfx/components/langchain_utilities/retrieval_qa.py +83 -0
- lfx/components/langchain_utilities/runnable_executor.py +137 -0
- lfx/components/langchain_utilities/self_query.py +80 -0
- lfx/components/langchain_utilities/spider.py +142 -0
- lfx/components/langchain_utilities/sql.py +40 -0
- lfx/components/langchain_utilities/sql_database.py +35 -0
- lfx/components/langchain_utilities/sql_generator.py +78 -0
- lfx/components/langchain_utilities/tool_calling.py +59 -0
- lfx/components/langchain_utilities/vector_store_info.py +49 -0
- lfx/components/langchain_utilities/vector_store_router.py +33 -0
- lfx/components/langchain_utilities/xml_agent.py +71 -0
- lfx/components/langwatch/__init__.py +3 -0
- lfx/components/langwatch/langwatch.py +278 -0
- lfx/components/link_extractors/__init__.py +3 -0
- lfx/components/lmstudio/__init__.py +34 -0
- lfx/components/lmstudio/lmstudioembeddings.py +89 -0
- lfx/components/lmstudio/lmstudiomodel.py +129 -0
- lfx/components/logic/__init__.py +52 -0
- lfx/components/logic/conditional_router.py +171 -0
- lfx/components/logic/data_conditional_router.py +125 -0
- lfx/components/logic/flow_tool.py +110 -0
- lfx/components/logic/listen.py +29 -0
- lfx/components/logic/loop.py +125 -0
- lfx/components/logic/notify.py +88 -0
- lfx/components/logic/pass_message.py +35 -0
- lfx/components/logic/run_flow.py +71 -0
- lfx/components/logic/sub_flow.py +114 -0
- lfx/components/maritalk/__init__.py +32 -0
- lfx/components/maritalk/maritalk.py +52 -0
- lfx/components/mem0/__init__.py +3 -0
- lfx/components/mem0/mem0_chat_memory.py +136 -0
- lfx/components/milvus/__init__.py +34 -0
- lfx/components/milvus/milvus.py +115 -0
- lfx/components/mistral/__init__.py +37 -0
- lfx/components/mistral/mistral.py +114 -0
- lfx/components/mistral/mistral_embeddings.py +58 -0
- lfx/components/models/__init__.py +34 -0
- lfx/components/models/embedding_model.py +114 -0
- lfx/components/models/language_model.py +144 -0
- lfx/components/mongodb/__init__.py +34 -0
- lfx/components/mongodb/mongodb_atlas.py +213 -0
- lfx/components/needle/__init__.py +3 -0
- lfx/components/needle/needle.py +104 -0
- lfx/components/notdiamond/__init__.py +34 -0
- lfx/components/notdiamond/notdiamond.py +228 -0
- lfx/components/novita/__init__.py +32 -0
- lfx/components/novita/novita.py +130 -0
- lfx/components/nvidia/__init__.py +57 -0
- lfx/components/nvidia/nvidia.py +157 -0
- lfx/components/nvidia/nvidia_embedding.py +77 -0
- lfx/components/nvidia/nvidia_ingest.py +317 -0
- lfx/components/nvidia/nvidia_rerank.py +63 -0
- lfx/components/nvidia/system_assist.py +65 -0
- lfx/components/olivya/__init__.py +3 -0
- lfx/components/olivya/olivya.py +116 -0
- lfx/components/ollama/__init__.py +37 -0
- lfx/components/ollama/ollama.py +330 -0
- lfx/components/ollama/ollama_embeddings.py +106 -0
- lfx/components/openai/__init__.py +37 -0
- lfx/components/openai/openai.py +100 -0
- lfx/components/openai/openai_chat_model.py +176 -0
- lfx/components/openrouter/__init__.py +32 -0
- lfx/components/openrouter/openrouter.py +202 -0
- lfx/components/output_parsers/__init__.py +3 -0
- lfx/components/perplexity/__init__.py +34 -0
- lfx/components/perplexity/perplexity.py +75 -0
- lfx/components/pgvector/__init__.py +34 -0
- lfx/components/pgvector/pgvector.py +72 -0
- lfx/components/pinecone/__init__.py +34 -0
- lfx/components/pinecone/pinecone.py +134 -0
- lfx/components/processing/__init__.py +117 -0
- lfx/components/processing/alter_metadata.py +108 -0
- lfx/components/processing/batch_run.py +205 -0
- lfx/components/processing/combine_text.py +39 -0
- lfx/components/processing/converter.py +159 -0
- lfx/components/processing/create_data.py +110 -0
- lfx/components/processing/data_operations.py +438 -0
- lfx/components/processing/data_to_dataframe.py +70 -0
- lfx/components/processing/dataframe_operations.py +313 -0
- lfx/components/processing/extract_key.py +53 -0
- lfx/components/processing/filter_data.py +42 -0
- lfx/components/processing/filter_data_values.py +88 -0
- lfx/components/processing/json_cleaner.py +103 -0
- lfx/components/processing/lambda_filter.py +154 -0
- lfx/components/processing/llm_router.py +499 -0
- lfx/components/processing/merge_data.py +90 -0
- lfx/components/processing/message_to_data.py +36 -0
- lfx/components/processing/parse_data.py +70 -0
- lfx/components/processing/parse_dataframe.py +68 -0
- lfx/components/processing/parse_json_data.py +90 -0
- lfx/components/processing/parser.py +143 -0
- lfx/components/processing/prompt.py +67 -0
- lfx/components/processing/python_repl_core.py +98 -0
- lfx/components/processing/regex.py +82 -0
- lfx/components/processing/save_file.py +225 -0
- lfx/components/processing/select_data.py +48 -0
- lfx/components/processing/split_text.py +141 -0
- lfx/components/processing/structured_output.py +202 -0
- lfx/components/processing/update_data.py +160 -0
- lfx/components/prototypes/__init__.py +34 -0
- lfx/components/prototypes/python_function.py +73 -0
- lfx/components/qdrant/__init__.py +34 -0
- lfx/components/qdrant/qdrant.py +109 -0
- lfx/components/redis/__init__.py +37 -0
- lfx/components/redis/redis.py +89 -0
- lfx/components/redis/redis_chat.py +43 -0
- lfx/components/sambanova/__init__.py +32 -0
- lfx/components/sambanova/sambanova.py +84 -0
- lfx/components/scrapegraph/__init__.py +40 -0
- lfx/components/scrapegraph/scrapegraph_markdownify_api.py +64 -0
- lfx/components/scrapegraph/scrapegraph_search_api.py +64 -0
- lfx/components/scrapegraph/scrapegraph_smart_scraper_api.py +71 -0
- lfx/components/searchapi/__init__.py +34 -0
- lfx/components/searchapi/search.py +79 -0
- lfx/components/serpapi/__init__.py +3 -0
- lfx/components/serpapi/serp.py +115 -0
- lfx/components/supabase/__init__.py +34 -0
- lfx/components/supabase/supabase.py +76 -0
- lfx/components/tavily/__init__.py +4 -0
- lfx/components/tavily/tavily_extract.py +117 -0
- lfx/components/tavily/tavily_search.py +212 -0
- lfx/components/textsplitters/__init__.py +3 -0
- lfx/components/toolkits/__init__.py +3 -0
- lfx/components/tools/__init__.py +72 -0
- lfx/components/tools/calculator.py +108 -0
- lfx/components/tools/google_search_api.py +45 -0
- lfx/components/tools/google_serper_api.py +115 -0
- lfx/components/tools/python_code_structured_tool.py +327 -0
- lfx/components/tools/python_repl.py +97 -0
- lfx/components/tools/search_api.py +87 -0
- lfx/components/tools/searxng.py +145 -0
- lfx/components/tools/serp_api.py +119 -0
- lfx/components/tools/tavily_search_tool.py +344 -0
- lfx/components/tools/wikidata_api.py +102 -0
- lfx/components/tools/wikipedia_api.py +49 -0
- lfx/components/tools/yahoo_finance.py +129 -0
- lfx/components/twelvelabs/__init__.py +52 -0
- lfx/components/twelvelabs/convert_astra_results.py +84 -0
- lfx/components/twelvelabs/pegasus_index.py +311 -0
- lfx/components/twelvelabs/split_video.py +291 -0
- lfx/components/twelvelabs/text_embeddings.py +57 -0
- lfx/components/twelvelabs/twelvelabs_pegasus.py +408 -0
- lfx/components/twelvelabs/video_embeddings.py +100 -0
- lfx/components/twelvelabs/video_file.py +179 -0
- lfx/components/unstructured/__init__.py +3 -0
- lfx/components/unstructured/unstructured.py +121 -0
- lfx/components/upstash/__init__.py +34 -0
- lfx/components/upstash/upstash.py +124 -0
- lfx/components/vectara/__init__.py +37 -0
- lfx/components/vectara/vectara.py +97 -0
- lfx/components/vectara/vectara_rag.py +164 -0
- lfx/components/vectorstores/__init__.py +40 -0
- lfx/components/vectorstores/astradb.py +1285 -0
- lfx/components/vectorstores/astradb_graph.py +319 -0
- lfx/components/vectorstores/cassandra.py +264 -0
- lfx/components/vectorstores/cassandra_graph.py +238 -0
- lfx/components/vectorstores/chroma.py +167 -0
- lfx/components/vectorstores/clickhouse.py +135 -0
- lfx/components/vectorstores/couchbase.py +102 -0
- lfx/components/vectorstores/elasticsearch.py +267 -0
- lfx/components/vectorstores/faiss.py +111 -0
- lfx/components/vectorstores/graph_rag.py +141 -0
- lfx/components/vectorstores/hcd.py +314 -0
- lfx/components/vectorstores/local_db.py +261 -0
- lfx/components/vectorstores/milvus.py +115 -0
- lfx/components/vectorstores/mongodb_atlas.py +213 -0
- lfx/components/vectorstores/opensearch.py +243 -0
- lfx/components/vectorstores/pgvector.py +72 -0
- lfx/components/vectorstores/pinecone.py +134 -0
- lfx/components/vectorstores/qdrant.py +109 -0
- lfx/components/vectorstores/supabase.py +76 -0
- lfx/components/vectorstores/upstash.py +124 -0
- lfx/components/vectorstores/vectara.py +97 -0
- lfx/components/vectorstores/vectara_rag.py +164 -0
- lfx/components/vectorstores/weaviate.py +89 -0
- lfx/components/vertexai/__init__.py +37 -0
- lfx/components/vertexai/vertexai.py +71 -0
- lfx/components/vertexai/vertexai_embeddings.py +67 -0
- lfx/components/weaviate/__init__.py +34 -0
- lfx/components/weaviate/weaviate.py +89 -0
- lfx/components/wikipedia/__init__.py +4 -0
- lfx/components/wikipedia/wikidata.py +86 -0
- lfx/components/wikipedia/wikipedia.py +53 -0
- lfx/components/wolframalpha/__init__.py +3 -0
- lfx/components/wolframalpha/wolfram_alpha_api.py +54 -0
- lfx/components/xai/__init__.py +32 -0
- lfx/components/xai/xai.py +167 -0
- lfx/components/yahoosearch/__init__.py +3 -0
- lfx/components/yahoosearch/yahoo.py +137 -0
- lfx/components/youtube/__init__.py +52 -0
- lfx/components/youtube/channel.py +227 -0
- lfx/components/youtube/comments.py +231 -0
- lfx/components/youtube/playlist.py +33 -0
- lfx/components/youtube/search.py +120 -0
- lfx/components/youtube/trending.py +285 -0
- lfx/components/youtube/video_details.py +263 -0
- lfx/components/youtube/youtube_transcripts.py +118 -0
- lfx/components/zep/__init__.py +3 -0
- lfx/components/zep/zep.py +44 -0
- lfx/constants.py +6 -0
- lfx/custom/__init__.py +7 -0
- lfx/custom/attributes.py +86 -0
- lfx/custom/code_parser/__init__.py +3 -0
- lfx/custom/code_parser/code_parser.py +361 -0
- lfx/custom/custom_component/__init__.py +0 -0
- lfx/custom/custom_component/base_component.py +128 -0
- lfx/custom/custom_component/component.py +1808 -0
- lfx/custom/custom_component/component_with_cache.py +8 -0
- lfx/custom/custom_component/custom_component.py +588 -0
- lfx/custom/dependency_analyzer.py +165 -0
- lfx/custom/directory_reader/__init__.py +3 -0
- lfx/custom/directory_reader/directory_reader.py +359 -0
- lfx/custom/directory_reader/utils.py +171 -0
- lfx/custom/eval.py +12 -0
- lfx/custom/schema.py +32 -0
- lfx/custom/tree_visitor.py +21 -0
- lfx/custom/utils.py +877 -0
- lfx/custom/validate.py +488 -0
- lfx/events/__init__.py +1 -0
- lfx/events/event_manager.py +110 -0
- lfx/exceptions/__init__.py +0 -0
- lfx/exceptions/component.py +15 -0
- lfx/field_typing/__init__.py +91 -0
- lfx/field_typing/constants.py +215 -0
- lfx/field_typing/range_spec.py +35 -0
- lfx/graph/__init__.py +6 -0
- lfx/graph/edge/__init__.py +0 -0
- lfx/graph/edge/base.py +277 -0
- lfx/graph/edge/schema.py +119 -0
- lfx/graph/edge/utils.py +0 -0
- lfx/graph/graph/__init__.py +0 -0
- lfx/graph/graph/ascii.py +202 -0
- lfx/graph/graph/base.py +2238 -0
- lfx/graph/graph/constants.py +63 -0
- lfx/graph/graph/runnable_vertices_manager.py +133 -0
- lfx/graph/graph/schema.py +52 -0
- lfx/graph/graph/state_model.py +66 -0
- lfx/graph/graph/utils.py +1024 -0
- lfx/graph/schema.py +75 -0
- lfx/graph/state/__init__.py +0 -0
- lfx/graph/state/model.py +237 -0
- lfx/graph/utils.py +200 -0
- lfx/graph/vertex/__init__.py +0 -0
- lfx/graph/vertex/base.py +823 -0
- lfx/graph/vertex/constants.py +0 -0
- lfx/graph/vertex/exceptions.py +4 -0
- lfx/graph/vertex/param_handler.py +264 -0
- lfx/graph/vertex/schema.py +26 -0
- lfx/graph/vertex/utils.py +19 -0
- lfx/graph/vertex/vertex_types.py +489 -0
- lfx/helpers/__init__.py +1 -0
- lfx/helpers/base_model.py +71 -0
- lfx/helpers/custom.py +13 -0
- lfx/helpers/data.py +167 -0
- lfx/helpers/flow.py +194 -0
- lfx/inputs/__init__.py +68 -0
- lfx/inputs/constants.py +2 -0
- lfx/inputs/input_mixin.py +328 -0
- lfx/inputs/inputs.py +714 -0
- lfx/inputs/validators.py +19 -0
- lfx/interface/__init__.py +6 -0
- lfx/interface/components.py +489 -0
- lfx/interface/importing/__init__.py +5 -0
- lfx/interface/importing/utils.py +39 -0
- lfx/interface/initialize/__init__.py +3 -0
- lfx/interface/initialize/loading.py +224 -0
- lfx/interface/listing.py +26 -0
- lfx/interface/run.py +16 -0
- lfx/interface/utils.py +111 -0
- lfx/io/__init__.py +63 -0
- lfx/io/schema.py +289 -0
- lfx/load/__init__.py +8 -0
- lfx/load/load.py +256 -0
- lfx/load/utils.py +99 -0
- lfx/log/__init__.py +5 -0
- lfx/log/logger.py +385 -0
- lfx/memory/__init__.py +90 -0
- lfx/memory/stubs.py +283 -0
- lfx/processing/__init__.py +1 -0
- lfx/processing/process.py +238 -0
- lfx/processing/utils.py +25 -0
- lfx/py.typed +0 -0
- lfx/schema/__init__.py +66 -0
- lfx/schema/artifact.py +83 -0
- lfx/schema/content_block.py +62 -0
- lfx/schema/content_types.py +91 -0
- lfx/schema/data.py +308 -0
- lfx/schema/dataframe.py +210 -0
- lfx/schema/dotdict.py +74 -0
- lfx/schema/encoders.py +13 -0
- lfx/schema/graph.py +47 -0
- lfx/schema/image.py +131 -0
- lfx/schema/json_schema.py +141 -0
- lfx/schema/log.py +61 -0
- lfx/schema/message.py +473 -0
- lfx/schema/openai_responses_schemas.py +74 -0
- lfx/schema/properties.py +41 -0
- lfx/schema/schema.py +171 -0
- lfx/schema/serialize.py +13 -0
- lfx/schema/table.py +140 -0
- lfx/schema/validators.py +114 -0
- lfx/serialization/__init__.py +5 -0
- lfx/serialization/constants.py +2 -0
- lfx/serialization/serialization.py +314 -0
- lfx/services/__init__.py +23 -0
- lfx/services/base.py +28 -0
- lfx/services/cache/__init__.py +6 -0
- lfx/services/cache/base.py +183 -0
- lfx/services/cache/service.py +166 -0
- lfx/services/cache/utils.py +169 -0
- lfx/services/chat/__init__.py +1 -0
- lfx/services/chat/config.py +2 -0
- lfx/services/chat/schema.py +10 -0
- lfx/services/deps.py +129 -0
- lfx/services/factory.py +19 -0
- lfx/services/initialize.py +19 -0
- lfx/services/interfaces.py +103 -0
- lfx/services/manager.py +172 -0
- lfx/services/schema.py +20 -0
- lfx/services/session.py +82 -0
- lfx/services/settings/__init__.py +3 -0
- lfx/services/settings/auth.py +130 -0
- lfx/services/settings/base.py +539 -0
- lfx/services/settings/constants.py +31 -0
- lfx/services/settings/factory.py +23 -0
- lfx/services/settings/feature_flags.py +12 -0
- lfx/services/settings/service.py +35 -0
- lfx/services/settings/utils.py +40 -0
- lfx/services/shared_component_cache/__init__.py +1 -0
- lfx/services/shared_component_cache/factory.py +30 -0
- lfx/services/shared_component_cache/service.py +9 -0
- lfx/services/storage/__init__.py +5 -0
- lfx/services/storage/local.py +155 -0
- lfx/services/storage/service.py +54 -0
- lfx/services/tracing/__init__.py +1 -0
- lfx/services/tracing/service.py +21 -0
- lfx/settings.py +6 -0
- lfx/template/__init__.py +6 -0
- lfx/template/field/__init__.py +0 -0
- lfx/template/field/base.py +257 -0
- lfx/template/field/prompt.py +15 -0
- lfx/template/frontend_node/__init__.py +6 -0
- lfx/template/frontend_node/base.py +212 -0
- lfx/template/frontend_node/constants.py +65 -0
- lfx/template/frontend_node/custom_components.py +79 -0
- lfx/template/template/__init__.py +0 -0
- lfx/template/template/base.py +100 -0
- lfx/template/utils.py +217 -0
- lfx/type_extraction/__init__.py +19 -0
- lfx/type_extraction/type_extraction.py +75 -0
- lfx/type_extraction.py +80 -0
- lfx/utils/__init__.py +1 -0
- lfx/utils/async_helpers.py +42 -0
- lfx/utils/component_utils.py +154 -0
- lfx/utils/concurrency.py +60 -0
- lfx/utils/connection_string_parser.py +11 -0
- lfx/utils/constants.py +205 -0
- lfx/utils/data_structure.py +212 -0
- lfx/utils/exceptions.py +22 -0
- lfx/utils/helpers.py +28 -0
- lfx/utils/image.py +73 -0
- lfx/utils/lazy_load.py +15 -0
- lfx/utils/request_utils.py +18 -0
- lfx/utils/schemas.py +139 -0
- lfx/utils/util.py +481 -0
- lfx/utils/util_strings.py +56 -0
- lfx/utils/version.py +24 -0
- lfx_nightly-0.1.11.dev0.dist-info/METADATA +293 -0
- lfx_nightly-0.1.11.dev0.dist-info/RECORD +699 -0
- lfx_nightly-0.1.11.dev0.dist-info/WHEEL +4 -0
- 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__)
|