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,92 @@
|
|
1
|
+
from lfx.base.memory.model import LCChatMemoryComponent
|
2
|
+
from lfx.field_typing.constants import Memory
|
3
|
+
from lfx.inputs.inputs import DictInput, MessageTextInput, SecretStrInput
|
4
|
+
|
5
|
+
|
6
|
+
class CassandraChatMemory(LCChatMemoryComponent):
|
7
|
+
display_name = "Cassandra Chat Memory"
|
8
|
+
description = "Retrieves and store chat messages from Apache Cassandra."
|
9
|
+
name = "CassandraChatMemory"
|
10
|
+
icon = "Cassandra"
|
11
|
+
|
12
|
+
inputs = [
|
13
|
+
MessageTextInput(
|
14
|
+
name="database_ref",
|
15
|
+
display_name="Contact Points / Astra Database ID",
|
16
|
+
info="Contact points for the database (or Astra DB database ID)",
|
17
|
+
required=True,
|
18
|
+
),
|
19
|
+
MessageTextInput(
|
20
|
+
name="username", display_name="Username", info="Username for the database (leave empty for Astra DB)."
|
21
|
+
),
|
22
|
+
SecretStrInput(
|
23
|
+
name="token",
|
24
|
+
display_name="Password / Astra DB Token",
|
25
|
+
info="User password for the database (or Astra DB token).",
|
26
|
+
required=True,
|
27
|
+
),
|
28
|
+
MessageTextInput(
|
29
|
+
name="keyspace",
|
30
|
+
display_name="Keyspace",
|
31
|
+
info="Table Keyspace (or Astra DB namespace).",
|
32
|
+
required=True,
|
33
|
+
),
|
34
|
+
MessageTextInput(
|
35
|
+
name="table_name",
|
36
|
+
display_name="Table Name",
|
37
|
+
info="The name of the table (or Astra DB collection) where vectors will be stored.",
|
38
|
+
required=True,
|
39
|
+
),
|
40
|
+
MessageTextInput(
|
41
|
+
name="session_id", display_name="Session ID", info="Session ID for the message.", advanced=True
|
42
|
+
),
|
43
|
+
DictInput(
|
44
|
+
name="cluster_kwargs",
|
45
|
+
display_name="Cluster arguments",
|
46
|
+
info="Optional dictionary of additional keyword arguments for the Cassandra cluster.",
|
47
|
+
advanced=True,
|
48
|
+
is_list=True,
|
49
|
+
),
|
50
|
+
]
|
51
|
+
|
52
|
+
def build_message_history(self) -> Memory:
|
53
|
+
from langchain_community.chat_message_histories import CassandraChatMessageHistory
|
54
|
+
|
55
|
+
try:
|
56
|
+
import cassio
|
57
|
+
except ImportError as e:
|
58
|
+
msg = "Could not import cassio integration package. Please install it with `pip install cassio`."
|
59
|
+
raise ImportError(msg) from e
|
60
|
+
|
61
|
+
from uuid import UUID
|
62
|
+
|
63
|
+
database_ref = self.database_ref
|
64
|
+
|
65
|
+
try:
|
66
|
+
UUID(self.database_ref)
|
67
|
+
is_astra = True
|
68
|
+
except ValueError:
|
69
|
+
is_astra = False
|
70
|
+
if "," in self.database_ref:
|
71
|
+
# use a copy because we can't change the type of the parameter
|
72
|
+
database_ref = self.database_ref.split(",")
|
73
|
+
|
74
|
+
if is_astra:
|
75
|
+
cassio.init(
|
76
|
+
database_id=database_ref,
|
77
|
+
token=self.token,
|
78
|
+
cluster_kwargs=self.cluster_kwargs,
|
79
|
+
)
|
80
|
+
else:
|
81
|
+
cassio.init(
|
82
|
+
contact_points=database_ref,
|
83
|
+
username=self.username,
|
84
|
+
password=self.token,
|
85
|
+
cluster_kwargs=self.cluster_kwargs,
|
86
|
+
)
|
87
|
+
|
88
|
+
return CassandraChatMessageHistory(
|
89
|
+
session_id=self.session_id,
|
90
|
+
table_name=self.table_name,
|
91
|
+
keyspace=self.keyspace,
|
92
|
+
)
|
@@ -0,0 +1,58 @@
|
|
1
|
+
from lfx.base.astra_assistants.util import get_patched_openai_client
|
2
|
+
from lfx.custom.custom_component.component_with_cache import ComponentWithCache
|
3
|
+
from lfx.inputs.inputs import MultilineInput, StrInput
|
4
|
+
from lfx.log.logger import logger
|
5
|
+
from lfx.schema.message import Message
|
6
|
+
from lfx.template.field.base import Output
|
7
|
+
|
8
|
+
|
9
|
+
class AssistantsCreateAssistant(ComponentWithCache):
|
10
|
+
icon = "AstraDB"
|
11
|
+
display_name = "Create Assistant"
|
12
|
+
description = "Creates an Assistant and returns it's id"
|
13
|
+
|
14
|
+
inputs = [
|
15
|
+
StrInput(
|
16
|
+
name="assistant_name",
|
17
|
+
display_name="Assistant Name",
|
18
|
+
info="Name for the assistant being created",
|
19
|
+
),
|
20
|
+
StrInput(
|
21
|
+
name="instructions",
|
22
|
+
display_name="Instructions",
|
23
|
+
info="Instructions for the assistant, think of these as the system prompt.",
|
24
|
+
),
|
25
|
+
StrInput(
|
26
|
+
name="model",
|
27
|
+
display_name="Model name",
|
28
|
+
info=(
|
29
|
+
"Model for the assistant.\n\n"
|
30
|
+
"Environment variables for provider credentials can be set with the Dotenv Component.\n\n"
|
31
|
+
"Models are supported via LiteLLM, "
|
32
|
+
"see (https://docs.litellm.ai/docs/providers) for supported model names and env vars."
|
33
|
+
),
|
34
|
+
# refresh_model=True
|
35
|
+
),
|
36
|
+
MultilineInput(
|
37
|
+
name="env_set",
|
38
|
+
display_name="Environment Set",
|
39
|
+
info="Dummy input to allow chaining with Dotenv Component.",
|
40
|
+
),
|
41
|
+
]
|
42
|
+
|
43
|
+
outputs = [
|
44
|
+
Output(display_name="Assistant ID", name="assistant_id", method="process_inputs"),
|
45
|
+
]
|
46
|
+
|
47
|
+
def __init__(self, **kwargs) -> None:
|
48
|
+
super().__init__(**kwargs)
|
49
|
+
self.client = get_patched_openai_client(self._shared_component_cache)
|
50
|
+
|
51
|
+
def process_inputs(self) -> Message:
|
52
|
+
logger.info(f"env_set is {self.env_set}")
|
53
|
+
assistant = self.client.beta.assistants.create(
|
54
|
+
name=self.assistant_name,
|
55
|
+
instructions=self.instructions,
|
56
|
+
model=self.model,
|
57
|
+
)
|
58
|
+
return Message(text=assistant.id)
|
@@ -0,0 +1,32 @@
|
|
1
|
+
from lfx.base.astra_assistants.util import get_patched_openai_client
|
2
|
+
from lfx.custom.custom_component.component_with_cache import ComponentWithCache
|
3
|
+
from lfx.inputs.inputs import MultilineInput
|
4
|
+
from lfx.schema.message import Message
|
5
|
+
from lfx.template.field.base import Output
|
6
|
+
|
7
|
+
|
8
|
+
class AssistantsCreateThread(ComponentWithCache):
|
9
|
+
display_name = "Create Assistant Thread"
|
10
|
+
description = "Creates a thread and returns the thread id"
|
11
|
+
icon = "AstraDB"
|
12
|
+
inputs = [
|
13
|
+
MultilineInput(
|
14
|
+
name="env_set",
|
15
|
+
display_name="Environment Set",
|
16
|
+
info="Dummy input to allow chaining with Dotenv Component.",
|
17
|
+
),
|
18
|
+
]
|
19
|
+
|
20
|
+
outputs = [
|
21
|
+
Output(display_name="Thread ID", name="thread_id", method="process_inputs"),
|
22
|
+
]
|
23
|
+
|
24
|
+
def __init__(self, **kwargs) -> None:
|
25
|
+
super().__init__(**kwargs)
|
26
|
+
self.client = get_patched_openai_client(self._shared_component_cache)
|
27
|
+
|
28
|
+
def process_inputs(self) -> Message:
|
29
|
+
thread = self.client.beta.threads.create()
|
30
|
+
thread_id = thread.id
|
31
|
+
|
32
|
+
return Message(text=thread_id)
|
@@ -0,0 +1,35 @@
|
|
1
|
+
import io
|
2
|
+
|
3
|
+
from dotenv import load_dotenv
|
4
|
+
|
5
|
+
from lfx.custom.custom_component.component import Component
|
6
|
+
from lfx.inputs.inputs import MultilineSecretInput
|
7
|
+
from lfx.schema.message import Message
|
8
|
+
from lfx.template.field.base import Output
|
9
|
+
|
10
|
+
|
11
|
+
class Dotenv(Component):
|
12
|
+
display_name = "Dotenv"
|
13
|
+
description = "Load .env file into env vars"
|
14
|
+
icon = "AstraDB"
|
15
|
+
inputs = [
|
16
|
+
MultilineSecretInput(
|
17
|
+
name="dotenv_file_content",
|
18
|
+
display_name="Dotenv file content",
|
19
|
+
info="Paste the content of your .env file directly, since contents are sensitive, "
|
20
|
+
"using a Global variable set as 'password' is recommended",
|
21
|
+
)
|
22
|
+
]
|
23
|
+
|
24
|
+
outputs = [
|
25
|
+
Output(display_name="env_set", name="env_set", method="process_inputs"),
|
26
|
+
]
|
27
|
+
|
28
|
+
def process_inputs(self) -> Message:
|
29
|
+
fake_file = io.StringIO(self.dotenv_file_content)
|
30
|
+
result = load_dotenv(stream=fake_file, override=True)
|
31
|
+
|
32
|
+
message = Message(text="No variables found in .env")
|
33
|
+
if result:
|
34
|
+
message = Message(text="Loaded .env")
|
35
|
+
return message
|
@@ -0,0 +1,37 @@
|
|
1
|
+
from lfx.base.astra_assistants.util import get_patched_openai_client
|
2
|
+
from lfx.custom.custom_component.component_with_cache import ComponentWithCache
|
3
|
+
from lfx.inputs.inputs import MultilineInput, StrInput
|
4
|
+
from lfx.schema.message import Message
|
5
|
+
from lfx.template.field.base import Output
|
6
|
+
|
7
|
+
|
8
|
+
class AssistantsGetAssistantName(ComponentWithCache):
|
9
|
+
display_name = "Get Assistant name"
|
10
|
+
description = "Assistant by id"
|
11
|
+
icon = "AstraDB"
|
12
|
+
inputs = [
|
13
|
+
StrInput(
|
14
|
+
name="assistant_id",
|
15
|
+
display_name="Assistant ID",
|
16
|
+
info="ID of the assistant",
|
17
|
+
),
|
18
|
+
MultilineInput(
|
19
|
+
name="env_set",
|
20
|
+
display_name="Environment Set",
|
21
|
+
info="Dummy input to allow chaining with Dotenv Component.",
|
22
|
+
),
|
23
|
+
]
|
24
|
+
|
25
|
+
outputs = [
|
26
|
+
Output(display_name="Assistant Name", name="assistant_name", method="process_inputs"),
|
27
|
+
]
|
28
|
+
|
29
|
+
def __init__(self, **kwargs) -> None:
|
30
|
+
super().__init__(**kwargs)
|
31
|
+
self.client = get_patched_openai_client(self._shared_component_cache)
|
32
|
+
|
33
|
+
def process_inputs(self) -> Message:
|
34
|
+
assistant = self.client.beta.assistants.retrieve(
|
35
|
+
assistant_id=self.assistant_id,
|
36
|
+
)
|
37
|
+
return Message(text=assistant.name)
|
@@ -0,0 +1,30 @@
|
|
1
|
+
import os
|
2
|
+
|
3
|
+
from lfx.custom.custom_component.component import Component
|
4
|
+
from lfx.inputs.inputs import StrInput
|
5
|
+
from lfx.schema.message import Message
|
6
|
+
from lfx.template.field.base import Output
|
7
|
+
|
8
|
+
|
9
|
+
class GetEnvVar(Component):
|
10
|
+
display_name = "Get Environment Variable"
|
11
|
+
description = "Gets the value of an environment variable from the system."
|
12
|
+
icon = "AstraDB"
|
13
|
+
|
14
|
+
inputs = [
|
15
|
+
StrInput(
|
16
|
+
name="env_var_name",
|
17
|
+
display_name="Environment Variable Name",
|
18
|
+
info="Name of the environment variable to get",
|
19
|
+
)
|
20
|
+
]
|
21
|
+
|
22
|
+
outputs = [
|
23
|
+
Output(display_name="Environment Variable Value", name="env_var_value", method="process_inputs"),
|
24
|
+
]
|
25
|
+
|
26
|
+
def process_inputs(self) -> Message:
|
27
|
+
if self.env_var_name not in os.environ:
|
28
|
+
msg = f"Environment variable {self.env_var_name} not set"
|
29
|
+
raise ValueError(msg)
|
30
|
+
return Message(text=os.environ[self.env_var_name])
|
@@ -0,0 +1,141 @@
|
|
1
|
+
import inspect
|
2
|
+
from abc import ABC
|
3
|
+
|
4
|
+
import graph_retriever.strategies as strategies_module
|
5
|
+
from langchain_graph_retriever import GraphRetriever
|
6
|
+
|
7
|
+
from lfx.base.vectorstores.model import LCVectorStoreComponent
|
8
|
+
from lfx.helpers.data import docs_to_data
|
9
|
+
from lfx.inputs.inputs import DropdownInput, HandleInput, MultilineInput, NestedDictInput, StrInput
|
10
|
+
from lfx.schema.data import Data
|
11
|
+
|
12
|
+
|
13
|
+
def traversal_strategies() -> list[str]:
|
14
|
+
"""Retrieves a list of class names from the strategies_module.
|
15
|
+
|
16
|
+
This function uses the `inspect` module to get all the class members
|
17
|
+
from the `strategies_module` and returns their names as a list of strings.
|
18
|
+
|
19
|
+
Returns:
|
20
|
+
list[str]: A list of strategy class names.
|
21
|
+
"""
|
22
|
+
classes = inspect.getmembers(strategies_module, inspect.isclass)
|
23
|
+
return [name for name, cls in classes if ABC not in cls.__bases__]
|
24
|
+
|
25
|
+
|
26
|
+
class GraphRAGComponent(LCVectorStoreComponent):
|
27
|
+
"""GraphRAGComponent is a component for performing Graph RAG traversal in a vector store.
|
28
|
+
|
29
|
+
Attributes:
|
30
|
+
display_name (str): The display name of the component.
|
31
|
+
description (str): A brief description of the component.
|
32
|
+
name (str): The name of the component.
|
33
|
+
icon (str): The icon representing the component.
|
34
|
+
inputs (list): A list of input configurations for the component.
|
35
|
+
|
36
|
+
Methods:
|
37
|
+
_build_search_args():
|
38
|
+
Builds the arguments required for the search operation.
|
39
|
+
search_documents() -> list[Data]:
|
40
|
+
Searches for documents using the specified strategy, edge definition, and query.
|
41
|
+
_edge_definition_from_input() -> tuple:
|
42
|
+
Processes the edge definition input and returns it as a tuple.
|
43
|
+
"""
|
44
|
+
|
45
|
+
display_name: str = "Graph RAG"
|
46
|
+
description: str = "Graph RAG traversal for vector store."
|
47
|
+
name = "Graph RAG"
|
48
|
+
icon: str = "AstraDB"
|
49
|
+
|
50
|
+
inputs = [
|
51
|
+
HandleInput(
|
52
|
+
name="embedding_model",
|
53
|
+
display_name="Embedding Model",
|
54
|
+
input_types=["Embeddings"],
|
55
|
+
info="Specify the Embedding Model. Not required for Astra Vectorize collections.",
|
56
|
+
required=False,
|
57
|
+
),
|
58
|
+
HandleInput(
|
59
|
+
name="vector_store",
|
60
|
+
display_name="Vector Store Connection",
|
61
|
+
input_types=["VectorStore"],
|
62
|
+
info="Connection to Vector Store.",
|
63
|
+
),
|
64
|
+
StrInput(
|
65
|
+
name="edge_definition",
|
66
|
+
display_name="Edge Definition",
|
67
|
+
info="Edge definition for the graph traversal.",
|
68
|
+
),
|
69
|
+
DropdownInput(
|
70
|
+
name="strategy",
|
71
|
+
display_name="Traversal Strategies",
|
72
|
+
options=traversal_strategies(),
|
73
|
+
),
|
74
|
+
MultilineInput(
|
75
|
+
name="search_query",
|
76
|
+
display_name="Search Query",
|
77
|
+
tool_mode=True,
|
78
|
+
),
|
79
|
+
NestedDictInput(
|
80
|
+
name="graphrag_strategy_kwargs",
|
81
|
+
display_name="Strategy Parameters",
|
82
|
+
info=(
|
83
|
+
"Optional dictionary of additional parameters for the retrieval strategy. "
|
84
|
+
"Please see https://datastax.github.io/graph-rag/reference/graph_retriever/strategies/ for details."
|
85
|
+
),
|
86
|
+
advanced=True,
|
87
|
+
),
|
88
|
+
]
|
89
|
+
|
90
|
+
def search_documents(self) -> list[Data]:
|
91
|
+
"""Searches for documents using the graph retriever based on the selected strategy, edge definition, and query.
|
92
|
+
|
93
|
+
Returns:
|
94
|
+
list[Data]: A list of retrieved documents.
|
95
|
+
|
96
|
+
Raises:
|
97
|
+
AttributeError: If there is an issue with attribute access.
|
98
|
+
TypeError: If there is a type mismatch.
|
99
|
+
ValueError: If there is a value error.
|
100
|
+
"""
|
101
|
+
additional_params = self.graphrag_strategy_kwargs or {}
|
102
|
+
|
103
|
+
# Invoke the graph retriever based on the selected strategy, edge definition, and query
|
104
|
+
strategy_class = getattr(strategies_module, self.strategy)
|
105
|
+
retriever = GraphRetriever(
|
106
|
+
store=self.vector_store,
|
107
|
+
edges=[self._evaluate_edge_definition_input()],
|
108
|
+
strategy=strategy_class(**additional_params),
|
109
|
+
)
|
110
|
+
|
111
|
+
return docs_to_data(retriever.invoke(self.search_query))
|
112
|
+
|
113
|
+
def _edge_definition_from_input(self) -> tuple:
|
114
|
+
"""Generates the edge definition from the input data.
|
115
|
+
|
116
|
+
Returns:
|
117
|
+
tuple: A tuple representing the edge definition.
|
118
|
+
"""
|
119
|
+
values = self.edge_definition.split(",")
|
120
|
+
values = [value.strip() for value in values]
|
121
|
+
|
122
|
+
return tuple(values)
|
123
|
+
|
124
|
+
def _evaluate_edge_definition_input(self) -> tuple:
|
125
|
+
from graph_retriever.edges.metadata import Id
|
126
|
+
|
127
|
+
"""Evaluates the edge definition, converting any function calls from strings.
|
128
|
+
|
129
|
+
Args:
|
130
|
+
edge_definition (tuple): The edge definition to evaluate.
|
131
|
+
|
132
|
+
Returns:
|
133
|
+
tuple: The evaluated edge definition.
|
134
|
+
"""
|
135
|
+
evaluated_values = []
|
136
|
+
for value in self._edge_definition_from_input():
|
137
|
+
if value == "Id()":
|
138
|
+
evaluated_values.append(Id()) # Evaluate Id() as a function call
|
139
|
+
else:
|
140
|
+
evaluated_values.append(value)
|
141
|
+
return tuple(evaluated_values)
|