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,84 @@
|
|
1
|
+
from langchain_community.document_loaders import ConfluenceLoader
|
2
|
+
from langchain_community.document_loaders.confluence import ContentFormat
|
3
|
+
|
4
|
+
from lfx.custom.custom_component.component import Component
|
5
|
+
from lfx.io import BoolInput, DropdownInput, IntInput, Output, SecretStrInput, StrInput
|
6
|
+
from lfx.schema.data import Data
|
7
|
+
|
8
|
+
|
9
|
+
class ConfluenceComponent(Component):
|
10
|
+
display_name = "Confluence"
|
11
|
+
description = "Confluence wiki collaboration platform"
|
12
|
+
documentation = "https://python.langchain.com/v0.2/docs/integrations/document_loaders/confluence/"
|
13
|
+
trace_type = "tool"
|
14
|
+
icon = "Confluence"
|
15
|
+
name = "Confluence"
|
16
|
+
|
17
|
+
inputs = [
|
18
|
+
StrInput(
|
19
|
+
name="url",
|
20
|
+
display_name="Site URL",
|
21
|
+
required=True,
|
22
|
+
info="The base URL of the Confluence Space. Example: https://<company>.atlassian.net/wiki.",
|
23
|
+
),
|
24
|
+
StrInput(
|
25
|
+
name="username",
|
26
|
+
display_name="Username",
|
27
|
+
required=True,
|
28
|
+
info="Atlassian User E-mail. Example: email@example.com",
|
29
|
+
),
|
30
|
+
SecretStrInput(
|
31
|
+
name="api_key",
|
32
|
+
display_name="API Key",
|
33
|
+
required=True,
|
34
|
+
info="Atlassian Key. Create at: https://id.atlassian.com/manage-profile/security/api-tokens",
|
35
|
+
),
|
36
|
+
StrInput(name="space_key", display_name="Space Key", required=True),
|
37
|
+
BoolInput(name="cloud", display_name="Use Cloud?", required=True, value=True, advanced=True),
|
38
|
+
DropdownInput(
|
39
|
+
name="content_format",
|
40
|
+
display_name="Content Format",
|
41
|
+
options=[
|
42
|
+
ContentFormat.EDITOR.value,
|
43
|
+
ContentFormat.EXPORT_VIEW.value,
|
44
|
+
ContentFormat.ANONYMOUS_EXPORT_VIEW.value,
|
45
|
+
ContentFormat.STORAGE.value,
|
46
|
+
ContentFormat.VIEW.value,
|
47
|
+
],
|
48
|
+
value=ContentFormat.STORAGE.value,
|
49
|
+
required=True,
|
50
|
+
advanced=True,
|
51
|
+
info="Specify content format, defaults to ContentFormat.STORAGE",
|
52
|
+
),
|
53
|
+
IntInput(
|
54
|
+
name="max_pages",
|
55
|
+
display_name="Max Pages",
|
56
|
+
required=False,
|
57
|
+
value=1000,
|
58
|
+
advanced=True,
|
59
|
+
info="Maximum number of pages to retrieve in total, defaults 1000",
|
60
|
+
),
|
61
|
+
]
|
62
|
+
|
63
|
+
outputs = [
|
64
|
+
Output(name="data", display_name="Data", method="load_documents"),
|
65
|
+
]
|
66
|
+
|
67
|
+
def build_confluence(self) -> ConfluenceLoader:
|
68
|
+
content_format = ContentFormat(self.content_format)
|
69
|
+
return ConfluenceLoader(
|
70
|
+
url=self.url,
|
71
|
+
username=self.username,
|
72
|
+
api_key=self.api_key,
|
73
|
+
cloud=self.cloud,
|
74
|
+
space_key=self.space_key,
|
75
|
+
content_format=content_format,
|
76
|
+
max_pages=self.max_pages,
|
77
|
+
)
|
78
|
+
|
79
|
+
def load_documents(self) -> list[Data]:
|
80
|
+
confluence = self.build_confluence()
|
81
|
+
documents = confluence.load()
|
82
|
+
data = [Data.from_document(doc) for doc in documents] # Using the from_document method of Data
|
83
|
+
self.status = data
|
84
|
+
return data
|
@@ -0,0 +1,34 @@
|
|
1
|
+
from __future__ import annotations
|
2
|
+
|
3
|
+
from typing import TYPE_CHECKING, Any
|
4
|
+
|
5
|
+
from lfx.components._importing import import_mod
|
6
|
+
|
7
|
+
if TYPE_CHECKING:
|
8
|
+
from .couchbase import CouchbaseVectorStoreComponent
|
9
|
+
|
10
|
+
_dynamic_imports = {
|
11
|
+
"CouchbaseVectorStoreComponent": "couchbase",
|
12
|
+
}
|
13
|
+
|
14
|
+
__all__ = [
|
15
|
+
"CouchbaseVectorStoreComponent",
|
16
|
+
]
|
17
|
+
|
18
|
+
|
19
|
+
def __getattr__(attr_name: str) -> Any:
|
20
|
+
"""Lazily import Couchbase components on attribute access."""
|
21
|
+
if attr_name not in _dynamic_imports:
|
22
|
+
msg = f"module '{__name__}' has no attribute '{attr_name}'"
|
23
|
+
raise AttributeError(msg)
|
24
|
+
try:
|
25
|
+
result = import_mod(attr_name, _dynamic_imports[attr_name], __spec__.parent)
|
26
|
+
except (ModuleNotFoundError, ImportError, AttributeError) as e:
|
27
|
+
msg = f"Could not import '{attr_name}' from '{__name__}': {e}"
|
28
|
+
raise AttributeError(msg) from e
|
29
|
+
globals()[attr_name] = result
|
30
|
+
return result
|
31
|
+
|
32
|
+
|
33
|
+
def __dir__() -> list[str]:
|
34
|
+
return list(__all__)
|
@@ -0,0 +1,102 @@
|
|
1
|
+
from datetime import timedelta
|
2
|
+
|
3
|
+
from langchain_community.vectorstores import CouchbaseVectorStore
|
4
|
+
|
5
|
+
from lfx.base.vectorstores.model import LCVectorStoreComponent, check_cached_vector_store
|
6
|
+
from lfx.helpers.data import docs_to_data
|
7
|
+
from lfx.io import HandleInput, IntInput, SecretStrInput, StrInput
|
8
|
+
from lfx.schema.data import Data
|
9
|
+
|
10
|
+
|
11
|
+
class CouchbaseVectorStoreComponent(LCVectorStoreComponent):
|
12
|
+
display_name = "Couchbase"
|
13
|
+
description = "Couchbase Vector Store with search capabilities"
|
14
|
+
name = "Couchbase"
|
15
|
+
icon = "Couchbase"
|
16
|
+
|
17
|
+
inputs = [
|
18
|
+
SecretStrInput(
|
19
|
+
name="couchbase_connection_string", display_name="Couchbase Cluster connection string", required=True
|
20
|
+
),
|
21
|
+
StrInput(name="couchbase_username", display_name="Couchbase username", required=True),
|
22
|
+
SecretStrInput(name="couchbase_password", display_name="Couchbase password", required=True),
|
23
|
+
StrInput(name="bucket_name", display_name="Bucket Name", required=True),
|
24
|
+
StrInput(name="scope_name", display_name="Scope Name", required=True),
|
25
|
+
StrInput(name="collection_name", display_name="Collection Name", required=True),
|
26
|
+
StrInput(name="index_name", display_name="Index Name", required=True),
|
27
|
+
*LCVectorStoreComponent.inputs,
|
28
|
+
HandleInput(name="embedding", display_name="Embedding", input_types=["Embeddings"]),
|
29
|
+
IntInput(
|
30
|
+
name="number_of_results",
|
31
|
+
display_name="Number of Results",
|
32
|
+
info="Number of results to return.",
|
33
|
+
value=4,
|
34
|
+
advanced=True,
|
35
|
+
),
|
36
|
+
]
|
37
|
+
|
38
|
+
@check_cached_vector_store
|
39
|
+
def build_vector_store(self) -> CouchbaseVectorStore:
|
40
|
+
try:
|
41
|
+
from couchbase.auth import PasswordAuthenticator
|
42
|
+
from couchbase.cluster import Cluster
|
43
|
+
from couchbase.options import ClusterOptions
|
44
|
+
except ImportError as e:
|
45
|
+
msg = "Failed to import Couchbase dependencies. Install it using `uv pip install langflow[couchbase] --pre`"
|
46
|
+
raise ImportError(msg) from e
|
47
|
+
|
48
|
+
try:
|
49
|
+
auth = PasswordAuthenticator(self.couchbase_username, self.couchbase_password)
|
50
|
+
options = ClusterOptions(auth)
|
51
|
+
cluster = Cluster(self.couchbase_connection_string, options)
|
52
|
+
|
53
|
+
cluster.wait_until_ready(timedelta(seconds=5))
|
54
|
+
except Exception as e:
|
55
|
+
msg = f"Failed to connect to Couchbase: {e}"
|
56
|
+
raise ValueError(msg) from e
|
57
|
+
|
58
|
+
self.ingest_data = self._prepare_ingest_data()
|
59
|
+
|
60
|
+
documents = []
|
61
|
+
for _input in self.ingest_data or []:
|
62
|
+
if isinstance(_input, Data):
|
63
|
+
documents.append(_input.to_lc_document())
|
64
|
+
else:
|
65
|
+
documents.append(_input)
|
66
|
+
|
67
|
+
if documents:
|
68
|
+
couchbase_vs = CouchbaseVectorStore.from_documents(
|
69
|
+
documents=documents,
|
70
|
+
cluster=cluster,
|
71
|
+
bucket_name=self.bucket_name,
|
72
|
+
scope_name=self.scope_name,
|
73
|
+
collection_name=self.collection_name,
|
74
|
+
embedding=self.embedding,
|
75
|
+
index_name=self.index_name,
|
76
|
+
)
|
77
|
+
|
78
|
+
else:
|
79
|
+
couchbase_vs = CouchbaseVectorStore(
|
80
|
+
cluster=cluster,
|
81
|
+
bucket_name=self.bucket_name,
|
82
|
+
scope_name=self.scope_name,
|
83
|
+
collection_name=self.collection_name,
|
84
|
+
embedding=self.embedding,
|
85
|
+
index_name=self.index_name,
|
86
|
+
)
|
87
|
+
|
88
|
+
return couchbase_vs
|
89
|
+
|
90
|
+
def search_documents(self) -> list[Data]:
|
91
|
+
vector_store = self.build_vector_store()
|
92
|
+
|
93
|
+
if self.search_query and isinstance(self.search_query, str) and self.search_query.strip():
|
94
|
+
docs = vector_store.similarity_search(
|
95
|
+
query=self.search_query,
|
96
|
+
k=self.number_of_results,
|
97
|
+
)
|
98
|
+
|
99
|
+
data = docs_to_data(docs)
|
100
|
+
self.status = data
|
101
|
+
return data
|
102
|
+
return []
|
@@ -0,0 +1,49 @@
|
|
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 .crewai import CrewAIAgentComponent
|
9
|
+
from .hierarchical_crew import HierarchicalCrewComponent
|
10
|
+
from .hierarchical_task import HierarchicalTaskComponent
|
11
|
+
from .sequential_crew import SequentialCrewComponent
|
12
|
+
from .sequential_task import SequentialTaskComponent
|
13
|
+
from .sequential_task_agent import SequentialTaskAgentComponent
|
14
|
+
|
15
|
+
_dynamic_imports = {
|
16
|
+
"CrewAIAgentComponent": "crewai",
|
17
|
+
"HierarchicalCrewComponent": "hierarchical_crew",
|
18
|
+
"HierarchicalTaskComponent": "hierarchical_task",
|
19
|
+
"SequentialCrewComponent": "sequential_crew",
|
20
|
+
"SequentialTaskAgentComponent": "sequential_task_agent",
|
21
|
+
"SequentialTaskComponent": "sequential_task",
|
22
|
+
}
|
23
|
+
|
24
|
+
__all__ = [
|
25
|
+
"CrewAIAgentComponent",
|
26
|
+
"HierarchicalCrewComponent",
|
27
|
+
"HierarchicalTaskComponent",
|
28
|
+
"SequentialCrewComponent",
|
29
|
+
"SequentialTaskAgentComponent",
|
30
|
+
"SequentialTaskComponent",
|
31
|
+
]
|
32
|
+
|
33
|
+
|
34
|
+
def __getattr__(attr_name: str) -> Any:
|
35
|
+
"""Lazily import crewai components on attribute access."""
|
36
|
+
if attr_name not in _dynamic_imports:
|
37
|
+
msg = f"module '{__name__}' has no attribute '{attr_name}'"
|
38
|
+
raise AttributeError(msg)
|
39
|
+
try:
|
40
|
+
result = import_mod(attr_name, _dynamic_imports[attr_name], __spec__.parent)
|
41
|
+
except (ModuleNotFoundError, ImportError, AttributeError) as e:
|
42
|
+
msg = f"Could not import '{attr_name}' from '{__name__}': {e}"
|
43
|
+
raise AttributeError(msg) from e
|
44
|
+
globals()[attr_name] = result
|
45
|
+
return result
|
46
|
+
|
47
|
+
|
48
|
+
def __dir__() -> list[str]:
|
49
|
+
return list(__all__)
|
@@ -0,0 +1,107 @@
|
|
1
|
+
from lfx.base.agents.crewai.crew import convert_llm, convert_tools
|
2
|
+
from lfx.custom.custom_component.component import Component
|
3
|
+
from lfx.io import BoolInput, DictInput, HandleInput, MultilineInput, Output
|
4
|
+
|
5
|
+
|
6
|
+
class CrewAIAgentComponent(Component):
|
7
|
+
"""Component for creating a CrewAI agent.
|
8
|
+
|
9
|
+
This component allows you to create a CrewAI agent with the specified role, goal, backstory, tools,
|
10
|
+
and language model.
|
11
|
+
|
12
|
+
Args:
|
13
|
+
Component (Component): Base class for all components.
|
14
|
+
|
15
|
+
Returns:
|
16
|
+
Agent: CrewAI agent.
|
17
|
+
"""
|
18
|
+
|
19
|
+
display_name = "CrewAI Agent"
|
20
|
+
description = "Represents an agent of CrewAI."
|
21
|
+
documentation: str = "https://docs.crewai.com/how-to/LLM-Connections/"
|
22
|
+
icon = "CrewAI"
|
23
|
+
legacy = True
|
24
|
+
|
25
|
+
inputs = [
|
26
|
+
MultilineInput(name="role", display_name="Role", info="The role of the agent."),
|
27
|
+
MultilineInput(name="goal", display_name="Goal", info="The objective of the agent."),
|
28
|
+
MultilineInput(name="backstory", display_name="Backstory", info="The backstory of the agent."),
|
29
|
+
HandleInput(
|
30
|
+
name="tools",
|
31
|
+
display_name="Tools",
|
32
|
+
input_types=["Tool"],
|
33
|
+
is_list=True,
|
34
|
+
info="Tools at agents disposal",
|
35
|
+
value=[],
|
36
|
+
),
|
37
|
+
HandleInput(
|
38
|
+
name="llm",
|
39
|
+
display_name="Language Model",
|
40
|
+
info="Language model that will run the agent.",
|
41
|
+
input_types=["LanguageModel"],
|
42
|
+
),
|
43
|
+
BoolInput(
|
44
|
+
name="memory",
|
45
|
+
display_name="Memory",
|
46
|
+
info="Whether the agent should have memory or not",
|
47
|
+
advanced=True,
|
48
|
+
value=True,
|
49
|
+
),
|
50
|
+
BoolInput(
|
51
|
+
name="verbose",
|
52
|
+
display_name="Verbose",
|
53
|
+
advanced=True,
|
54
|
+
value=False,
|
55
|
+
),
|
56
|
+
BoolInput(
|
57
|
+
name="allow_delegation",
|
58
|
+
display_name="Allow Delegation",
|
59
|
+
info="Whether the agent is allowed to delegate tasks to other agents.",
|
60
|
+
value=True,
|
61
|
+
),
|
62
|
+
BoolInput(
|
63
|
+
name="allow_code_execution",
|
64
|
+
display_name="Allow Code Execution",
|
65
|
+
info="Whether the agent is allowed to execute code.",
|
66
|
+
value=False,
|
67
|
+
advanced=True,
|
68
|
+
),
|
69
|
+
DictInput(
|
70
|
+
name="kwargs",
|
71
|
+
display_name="kwargs",
|
72
|
+
info="kwargs of agent.",
|
73
|
+
is_list=True,
|
74
|
+
advanced=True,
|
75
|
+
),
|
76
|
+
]
|
77
|
+
|
78
|
+
outputs = [
|
79
|
+
Output(display_name="Agent", name="output", method="build_output"),
|
80
|
+
]
|
81
|
+
|
82
|
+
def build_output(self):
|
83
|
+
try:
|
84
|
+
from crewai import Agent
|
85
|
+
except ImportError as e:
|
86
|
+
msg = "CrewAI is not installed. Please install it with `uv pip install crewai`."
|
87
|
+
raise ImportError(msg) from e
|
88
|
+
|
89
|
+
kwargs = self.kwargs or {}
|
90
|
+
|
91
|
+
# Define the Agent
|
92
|
+
agent = Agent(
|
93
|
+
role=self.role,
|
94
|
+
goal=self.goal,
|
95
|
+
backstory=self.backstory,
|
96
|
+
llm=convert_llm(self.llm),
|
97
|
+
verbose=self.verbose,
|
98
|
+
memory=self.memory,
|
99
|
+
tools=convert_tools(self.tools),
|
100
|
+
allow_delegation=self.allow_delegation,
|
101
|
+
allow_code_execution=self.allow_code_execution,
|
102
|
+
**kwargs,
|
103
|
+
)
|
104
|
+
|
105
|
+
self.status = repr(agent)
|
106
|
+
|
107
|
+
return agent
|
@@ -0,0 +1,46 @@
|
|
1
|
+
from lfx.base.agents.crewai.crew import BaseCrewComponent
|
2
|
+
from lfx.io import HandleInput
|
3
|
+
|
4
|
+
|
5
|
+
class HierarchicalCrewComponent(BaseCrewComponent):
|
6
|
+
display_name: str = "Hierarchical Crew"
|
7
|
+
description: str = (
|
8
|
+
"Represents a group of agents, defining how they should collaborate and the tasks they should perform."
|
9
|
+
)
|
10
|
+
documentation: str = "https://docs.crewai.com/how-to/Hierarchical/"
|
11
|
+
icon = "CrewAI"
|
12
|
+
legacy = True
|
13
|
+
|
14
|
+
inputs = [
|
15
|
+
*BaseCrewComponent.get_base_inputs(),
|
16
|
+
HandleInput(name="agents", display_name="Agents", input_types=["Agent"], is_list=True),
|
17
|
+
HandleInput(name="tasks", display_name="Tasks", input_types=["HierarchicalTask"], is_list=True),
|
18
|
+
HandleInput(name="manager_llm", display_name="Manager LLM", input_types=["LanguageModel"], required=False),
|
19
|
+
HandleInput(name="manager_agent", display_name="Manager Agent", input_types=["Agent"], required=False),
|
20
|
+
]
|
21
|
+
|
22
|
+
def build_crew(self):
|
23
|
+
try:
|
24
|
+
from crewai import Crew, Process
|
25
|
+
except ImportError as e:
|
26
|
+
msg = "CrewAI is not installed. Please install it with `uv pip install crewai`."
|
27
|
+
raise ImportError(msg) from e
|
28
|
+
|
29
|
+
tasks, agents = self.get_tasks_and_agents()
|
30
|
+
manager_llm = self.get_manager_llm()
|
31
|
+
|
32
|
+
return Crew(
|
33
|
+
agents=agents,
|
34
|
+
tasks=tasks,
|
35
|
+
process=Process.hierarchical,
|
36
|
+
verbose=self.verbose,
|
37
|
+
memory=self.memory,
|
38
|
+
cache=self.use_cache,
|
39
|
+
max_rpm=self.max_rpm,
|
40
|
+
share_crew=self.share_crew,
|
41
|
+
function_calling_llm=self.function_calling_llm,
|
42
|
+
manager_agent=self.manager_agent,
|
43
|
+
manager_llm=manager_llm,
|
44
|
+
step_callback=self.get_step_callback(),
|
45
|
+
task_callback=self.get_task_callback(),
|
46
|
+
)
|
@@ -0,0 +1,44 @@
|
|
1
|
+
from lfx.base.agents.crewai.tasks import HierarchicalTask
|
2
|
+
from lfx.custom.custom_component.component import Component
|
3
|
+
from lfx.io import HandleInput, MultilineInput, Output
|
4
|
+
|
5
|
+
|
6
|
+
class HierarchicalTaskComponent(Component):
|
7
|
+
display_name: str = "Hierarchical Task"
|
8
|
+
description: str = "Each task must have a description, an expected output and an agent responsible for execution."
|
9
|
+
icon = "CrewAI"
|
10
|
+
legacy = True
|
11
|
+
inputs = [
|
12
|
+
MultilineInput(
|
13
|
+
name="task_description",
|
14
|
+
display_name="Description",
|
15
|
+
info="Descriptive text detailing task's purpose and execution.",
|
16
|
+
),
|
17
|
+
MultilineInput(
|
18
|
+
name="expected_output",
|
19
|
+
display_name="Expected Output",
|
20
|
+
info="Clear definition of expected task outcome.",
|
21
|
+
),
|
22
|
+
HandleInput(
|
23
|
+
name="tools",
|
24
|
+
display_name="Tools",
|
25
|
+
input_types=["Tool"],
|
26
|
+
is_list=True,
|
27
|
+
info="List of tools/resources limited for task execution. Uses the Agent tools by default.",
|
28
|
+
required=False,
|
29
|
+
advanced=True,
|
30
|
+
),
|
31
|
+
]
|
32
|
+
|
33
|
+
outputs = [
|
34
|
+
Output(display_name="Task", name="task_output", method="build_task"),
|
35
|
+
]
|
36
|
+
|
37
|
+
def build_task(self) -> HierarchicalTask:
|
38
|
+
task = HierarchicalTask(
|
39
|
+
description=self.task_description,
|
40
|
+
expected_output=self.expected_output,
|
41
|
+
tools=self.tools or [],
|
42
|
+
)
|
43
|
+
self.status = task
|
44
|
+
return task
|
@@ -0,0 +1,52 @@
|
|
1
|
+
from lfx.base.agents.crewai.crew import BaseCrewComponent
|
2
|
+
from lfx.io import HandleInput
|
3
|
+
from lfx.schema.message import Message
|
4
|
+
|
5
|
+
|
6
|
+
class SequentialCrewComponent(BaseCrewComponent):
|
7
|
+
display_name: str = "Sequential Crew"
|
8
|
+
description: str = "Represents a group of agents with tasks that are executed sequentially."
|
9
|
+
documentation: str = "https://docs.crewai.com/how-to/Sequential/"
|
10
|
+
icon = "CrewAI"
|
11
|
+
legacy = True
|
12
|
+
|
13
|
+
inputs = [
|
14
|
+
*BaseCrewComponent.get_base_inputs(),
|
15
|
+
HandleInput(name="tasks", display_name="Tasks", input_types=["SequentialTask"], is_list=True),
|
16
|
+
]
|
17
|
+
|
18
|
+
@property
|
19
|
+
def agents(self: "SequentialCrewComponent") -> list:
|
20
|
+
# Derive agents directly from linked tasks
|
21
|
+
return [task.agent for task in self.tasks if hasattr(task, "agent")]
|
22
|
+
|
23
|
+
def get_tasks_and_agents(self, agents_list=None) -> tuple[list, list]:
|
24
|
+
# Use the agents property to derive agents
|
25
|
+
if not agents_list:
|
26
|
+
existing_agents = self.agents
|
27
|
+
agents_list = existing_agents + (agents_list or [])
|
28
|
+
|
29
|
+
return super().get_tasks_and_agents(agents_list=agents_list)
|
30
|
+
|
31
|
+
def build_crew(self) -> Message:
|
32
|
+
try:
|
33
|
+
from crewai import Crew, Process
|
34
|
+
except ImportError as e:
|
35
|
+
msg = "CrewAI is not installed. Please install it with `uv pip install crewai`."
|
36
|
+
raise ImportError(msg) from e
|
37
|
+
|
38
|
+
tasks, agents = self.get_tasks_and_agents()
|
39
|
+
|
40
|
+
return Crew(
|
41
|
+
agents=agents,
|
42
|
+
tasks=tasks,
|
43
|
+
process=Process.sequential,
|
44
|
+
verbose=self.verbose,
|
45
|
+
memory=self.memory,
|
46
|
+
cache=self.use_cache,
|
47
|
+
max_rpm=self.max_rpm,
|
48
|
+
share_crew=self.share_crew,
|
49
|
+
function_calling_llm=self.function_calling_llm,
|
50
|
+
step_callback=self.get_step_callback(),
|
51
|
+
task_callback=self.get_task_callback(),
|
52
|
+
)
|
@@ -0,0 +1,73 @@
|
|
1
|
+
from lfx.base.agents.crewai.tasks import SequentialTask
|
2
|
+
from lfx.custom.custom_component.component import Component
|
3
|
+
from lfx.io import BoolInput, HandleInput, MultilineInput, Output
|
4
|
+
|
5
|
+
|
6
|
+
class SequentialTaskComponent(Component):
|
7
|
+
display_name: str = "Sequential Task"
|
8
|
+
description: str = "Each task must have a description, an expected output and an agent responsible for execution."
|
9
|
+
icon = "CrewAI"
|
10
|
+
legacy = True
|
11
|
+
inputs = [
|
12
|
+
MultilineInput(
|
13
|
+
name="task_description",
|
14
|
+
display_name="Description",
|
15
|
+
info="Descriptive text detailing task's purpose and execution.",
|
16
|
+
),
|
17
|
+
MultilineInput(
|
18
|
+
name="expected_output",
|
19
|
+
display_name="Expected Output",
|
20
|
+
info="Clear definition of expected task outcome.",
|
21
|
+
),
|
22
|
+
HandleInput(
|
23
|
+
name="tools",
|
24
|
+
display_name="Tools",
|
25
|
+
input_types=["Tool"],
|
26
|
+
is_list=True,
|
27
|
+
info="List of tools/resources limited for task execution. Uses the Agent tools by default.",
|
28
|
+
required=False,
|
29
|
+
advanced=True,
|
30
|
+
),
|
31
|
+
HandleInput(
|
32
|
+
name="agent",
|
33
|
+
display_name="Agent",
|
34
|
+
input_types=["Agent"],
|
35
|
+
info="CrewAI Agent that will perform the task",
|
36
|
+
required=True,
|
37
|
+
),
|
38
|
+
HandleInput(
|
39
|
+
name="task",
|
40
|
+
display_name="Task",
|
41
|
+
input_types=["SequentialTask"],
|
42
|
+
info="CrewAI Task that will perform the task",
|
43
|
+
),
|
44
|
+
BoolInput(
|
45
|
+
name="async_execution",
|
46
|
+
display_name="Async Execution",
|
47
|
+
value=True,
|
48
|
+
advanced=True,
|
49
|
+
info="Boolean flag indicating asynchronous task execution.",
|
50
|
+
),
|
51
|
+
]
|
52
|
+
|
53
|
+
outputs = [
|
54
|
+
Output(display_name="Task", name="task_output", method="build_task"),
|
55
|
+
]
|
56
|
+
|
57
|
+
def build_task(self) -> list[SequentialTask]:
|
58
|
+
tasks: list[SequentialTask] = []
|
59
|
+
task = SequentialTask(
|
60
|
+
description=self.task_description,
|
61
|
+
expected_output=self.expected_output,
|
62
|
+
tools=self.agent.tools,
|
63
|
+
async_execution=False,
|
64
|
+
agent=self.agent,
|
65
|
+
)
|
66
|
+
tasks.append(task)
|
67
|
+
self.status = task
|
68
|
+
if self.task:
|
69
|
+
if isinstance(self.task, list) and all(isinstance(task_item, SequentialTask) for task_item in self.task):
|
70
|
+
tasks = self.task + tasks
|
71
|
+
elif isinstance(self.task, SequentialTask):
|
72
|
+
tasks = [self.task, *tasks]
|
73
|
+
return tasks
|