diff --git a/src/backend/langflow/components/chains/ConversationChain.py b/src/backend/langflow/components/chains/ConversationChain.py index 72783a6be..1709ab9c0 100644 --- a/src/backend/langflow/components/chains/ConversationChain.py +++ b/src/backend/langflow/components/chains/ConversationChain.py @@ -23,7 +23,7 @@ class ConversationChainComponent(CustomComponent): def build( self, - input_value: str, + input_value: Text, llm: BaseLanguageModel, memory: Optional[BaseMemory] = None, ) -> Text: @@ -34,7 +34,7 @@ class ConversationChainComponent(CustomComponent): result = chain.invoke({chain.input_key: input_value}) # result is an AIMessage which is a subclass of BaseMessage # We need to check if it is a string or a BaseMessage - result_str: str = "" + result_str: Text = "" if hasattr(result, "content") and isinstance(result.content, str): result_str = result.content @@ -43,6 +43,6 @@ class ConversationChainComponent(CustomComponent): result_str = result else: # is dict - result_str = result.get("response") + result_str = Text(result.get("response")) self.status = result_str return result_str diff --git a/src/backend/langflow/components/chains/LLMCheckerChain.py b/src/backend/langflow/components/chains/LLMCheckerChain.py index 2e846b226..613670fa3 100644 --- a/src/backend/langflow/components/chains/LLMCheckerChain.py +++ b/src/backend/langflow/components/chains/LLMCheckerChain.py @@ -18,13 +18,13 @@ class LLMCheckerChainComponent(CustomComponent): def build( self, - input_value: str, + input_value: Text, llm: BaseLanguageModel, ) -> Text: chain = LLMCheckerChain.from_llm(llm=llm) response = chain.invoke({chain.input_key: input_value}) result = response.get(chain.output_key, "") - result_str = str(result) + result_str = Text(result) self.status = result_str return result_str diff --git a/src/backend/langflow/components/chains/LLMMathChain.py b/src/backend/langflow/components/chains/LLMMathChain.py index 7f2be6f95..2b8f05bda 100644 --- a/src/backend/langflow/components/chains/LLMMathChain.py +++ b/src/backend/langflow/components/chains/LLMMathChain.py @@ -40,6 +40,6 @@ class LLMMathChainComponent(CustomComponent): ) response = chain.invoke({input_key: input_value}) result = response.get(output_key) - result_str = str(result) + result_str = Text(result) self.status = result_str return result_str diff --git a/src/backend/langflow/components/chains/RetrievalQA.py b/src/backend/langflow/components/chains/RetrievalQA.py index 30647641d..453b66d32 100644 --- a/src/backend/langflow/components/chains/RetrievalQA.py +++ b/src/backend/langflow/components/chains/RetrievalQA.py @@ -57,6 +57,6 @@ class RetrievalQAComponent(CustomComponent): references_str = self.create_references_from_records(records) result_str = result.get("result", "") - final_result = "\n".join([str(result_str), references_str]) + final_result = "\n".join([Text(result_str), references_str]) self.status = final_result return final_result # OK diff --git a/src/backend/langflow/components/chains/RetrievalQAWithSourcesChain.py b/src/backend/langflow/components/chains/RetrievalQAWithSourcesChain.py index 8270c9778..9a1b63756 100644 --- a/src/backend/langflow/components/chains/RetrievalQAWithSourcesChain.py +++ b/src/backend/langflow/components/chains/RetrievalQAWithSourcesChain.py @@ -26,7 +26,7 @@ class RetrievalQAWithSourcesChainComponent(CustomComponent): def build( self, - input_value: str, + input_value: Text, retriever: BaseRetriever, llm: BaseLanguageModel, chain_type: str, @@ -52,7 +52,7 @@ class RetrievalQAWithSourcesChainComponent(CustomComponent): references_str = "" if return_source_documents: references_str = self.create_references_from_records(records) - result_str = str(result.get("answer", "")) + result_str = Text(result.get("answer", "")) final_result = "\n".join([result_str, references_str]) self.status = final_result return final_result diff --git a/src/backend/langflow/components/documentloaders/GatherRecords.py b/src/backend/langflow/components/documentloaders/GatherRecords.py index 5cd6af317..ac298c092 100644 --- a/src/backend/langflow/components/documentloaders/GatherRecords.py +++ b/src/backend/langflow/components/documentloaders/GatherRecords.py @@ -1,6 +1,6 @@ from concurrent import futures from pathlib import Path -from typing import Any, Dict, List, Optional +from typing import Any, Dict, List, Optional, Text from langflow import CustomComponent from langflow.schema import Record @@ -71,7 +71,9 @@ class GatherRecordsComponent(CustomComponent): glob = "**/*" if recursive else "*" paths = walk_level(path_obj, depth) if depth else path_obj.glob(glob) file_paths = [ - str(p) for p in paths if p.is_file() and match_types(p) and is_not_hidden(p) + Text(p) + for p in paths + if p.is_file() and match_types(p) and is_not_hidden(p) ] return file_paths @@ -90,7 +92,7 @@ class GatherRecordsComponent(CustomComponent): return None # Create a Record - text = "\n\n".join([str(el) for el in elements]) + text = "\n\n".join([Text(el) for el in elements]) metadata = elements.metadata if hasattr(elements, "metadata") else {} metadata["file_path"] = file_path record = Record(text=text, data=metadata) @@ -136,7 +138,7 @@ class GatherRecordsComponent(CustomComponent): recursive: bool = True, silent_errors: bool = False, use_multithreading: bool = True, - ) -> List[Record]: + ) -> List[Optional[Record]]: if types is None: types = [] resolved_path = self.resolve_path(path) diff --git a/src/backend/langflow/components/io/base/chat.py b/src/backend/langflow/components/io/base/chat.py index e5ff38249..8695dbcbc 100644 --- a/src/backend/langflow/components/io/base/chat.py +++ b/src/backend/langflow/components/io/base/chat.py @@ -98,7 +98,7 @@ class ChatComponent(CustomComponent): if not input_value: input_value = "" if return_record and input_value_record: - result = input_value_record + result: Union[Text, Record] = input_value_record else: result = input_value self.status = result diff --git a/src/backend/langflow/components/model_specs/ChatLiteLLMSpecs.py b/src/backend/langflow/components/model_specs/ChatLiteLLMSpecs.py index 2aea38475..52ab1e090 100644 --- a/src/backend/langflow/components/model_specs/ChatLiteLLMSpecs.py +++ b/src/backend/langflow/components/model_specs/ChatLiteLLMSpecs.py @@ -139,7 +139,7 @@ class ChatLiteLLMComponent(CustomComponent): "OpenRouter": "openrouter_api_key", } # Set the API key based on the provider - api_keys = {v: None for v in provider_map.values()} + api_keys: dict[str, Optional[str]] = {v: None for v in provider_map.values()} if variable_name := provider_map.get(provider): api_keys[variable_name] = api_key diff --git a/src/backend/langflow/components/models/AmazonBedrockModel.py b/src/backend/langflow/components/models/AmazonBedrockModel.py index fdddc07d1..ce7347fde 100644 --- a/src/backend/langflow/components/models/AmazonBedrockModel.py +++ b/src/backend/langflow/components/models/AmazonBedrockModel.py @@ -44,7 +44,7 @@ class AmazonBedrockComponent(LCModelComponent): def build( self, - input_value: str, + input_value: Text, model_id: str = "anthropic.claude-instant-v1", credentials_profile_name: Optional[str] = None, region_name: Optional[str] = None, diff --git a/src/backend/langflow/components/models/AnthropicModel.py b/src/backend/langflow/components/models/AnthropicModel.py index a3ba510a4..e45526093 100644 --- a/src/backend/langflow/components/models/AnthropicModel.py +++ b/src/backend/langflow/components/models/AnthropicModel.py @@ -60,7 +60,7 @@ class AnthropicLLM(LCModelComponent): def build( self, model: str, - input_value: str, + input_value: Text, anthropic_api_key: Optional[str] = None, max_tokens: Optional[int] = None, temperature: Optional[float] = None, diff --git a/src/backend/langflow/components/models/AzureOpenAIModel.py b/src/backend/langflow/components/models/AzureOpenAIModel.py index a823a7067..995f81d2f 100644 --- a/src/backend/langflow/components/models/AzureOpenAIModel.py +++ b/src/backend/langflow/components/models/AzureOpenAIModel.py @@ -2,9 +2,10 @@ from typing import Optional from langchain.llms.base import BaseLanguageModel from langchain_openai import AzureChatOpenAI +from pydantic.v1 import SecretStr from langflow.components.models.base.model import LCModelComponent -from pydantic.v1 import SecretStr +from langflow.field_typing import Text class AzureChatOpenAIComponent(LCModelComponent): @@ -86,7 +87,7 @@ class AzureChatOpenAIComponent(LCModelComponent): self, model: str, azure_endpoint: str, - input_value: str, + input_value: Text, azure_deployment: str, api_key: str, api_version: str, diff --git a/src/backend/langflow/components/models/BaiduQianfanChatModel.py b/src/backend/langflow/components/models/BaiduQianfanChatModel.py index f0815603f..1ef65ee33 100644 --- a/src/backend/langflow/components/models/BaiduQianfanChatModel.py +++ b/src/backend/langflow/components/models/BaiduQianfanChatModel.py @@ -78,7 +78,7 @@ class QianfanChatEndpointComponent(LCModelComponent): def build( self, - input_value: str, + input_value: Text, model: str = "ERNIE-Bot-turbo", qianfan_ak: Optional[str] = None, qianfan_sk: Optional[str] = None, diff --git a/src/backend/langflow/components/models/CTransformersModel.py b/src/backend/langflow/components/models/CTransformersModel.py index 537ceae2f..219d74440 100644 --- a/src/backend/langflow/components/models/CTransformersModel.py +++ b/src/backend/langflow/components/models/CTransformersModel.py @@ -39,7 +39,7 @@ class CTransformersComponent(LCModelComponent): self, model: str, model_file: str, - input_value: str, + input_value: Text, model_type: str, stream: bool = False, config: Optional[Dict] = None, diff --git a/src/backend/langflow/components/models/CohereModel.py b/src/backend/langflow/components/models/CohereModel.py index d6625d6bf..c0b603695 100644 --- a/src/backend/langflow/components/models/CohereModel.py +++ b/src/backend/langflow/components/models/CohereModel.py @@ -40,7 +40,7 @@ class CohereComponent(LCModelComponent): def build( self, cohere_api_key: str, - input_value: str, + input_value: Text, temperature: float = 0.75, stream: bool = False, ) -> Text: diff --git a/src/backend/langflow/components/models/GoogleGenerativeAIModel.py b/src/backend/langflow/components/models/GoogleGenerativeAIModel.py index 50a3f0f7a..c979e6db4 100644 --- a/src/backend/langflow/components/models/GoogleGenerativeAIModel.py +++ b/src/backend/langflow/components/models/GoogleGenerativeAIModel.py @@ -62,7 +62,7 @@ class GoogleGenerativeAIComponent(LCModelComponent): self, google_api_key: str, model: str, - input_value: str, + input_value: Text, max_output_tokens: Optional[int] = None, temperature: float = 0.1, top_k: Optional[int] = None, diff --git a/src/backend/langflow/components/models/HuggingFaceModel.py b/src/backend/langflow/components/models/HuggingFaceModel.py index 6b437810b..33cc57815 100644 --- a/src/backend/langflow/components/models/HuggingFaceModel.py +++ b/src/backend/langflow/components/models/HuggingFaceModel.py @@ -34,7 +34,7 @@ class HuggingFaceEndpointsComponent(LCModelComponent): def build( self, - input_value: str, + input_value: Text, endpoint_url: str, model: Optional[str] = None, task: str = "text2text-generation", diff --git a/src/backend/langflow/components/models/LlamaCppModel.py b/src/backend/langflow/components/models/LlamaCppModel.py index 1ca2cd3c1..468a1ac8b 100644 --- a/src/backend/langflow/components/models/LlamaCppModel.py +++ b/src/backend/langflow/components/models/LlamaCppModel.py @@ -66,7 +66,7 @@ class LlamaCppComponent(LCModelComponent): def build( self, model_path: str, - input_value: str, + input_value: Text, grammar: Optional[str] = None, cache: Optional[bool] = None, client: Optional[Any] = None, diff --git a/src/backend/langflow/components/models/OllamaModel.py b/src/backend/langflow/components/models/OllamaModel.py index d7ef12052..9de1847f0 100644 --- a/src/backend/langflow/components/models/OllamaModel.py +++ b/src/backend/langflow/components/models/OllamaModel.py @@ -177,7 +177,7 @@ class ChatOllamaComponent(LCModelComponent): self, base_url: Optional[str], model: str, - input_value: str, + input_value: Text, mirostat: Optional[str], mirostat_eta: Optional[float] = None, mirostat_tau: Optional[float] = None, diff --git a/src/backend/langflow/components/models/VertexAiModel.py b/src/backend/langflow/components/models/VertexAiModel.py index aeb535be3..c4354d999 100644 --- a/src/backend/langflow/components/models/VertexAiModel.py +++ b/src/backend/langflow/components/models/VertexAiModel.py @@ -9,8 +9,7 @@ from langflow.field_typing import Text class ChatVertexAIComponent(LCModelComponent): display_name = "ChatVertexAIModel" description = "Generate text using Vertex AI Chat large language models API." - icon="VertexAI" - + icon = "VertexAI" def build_config(self): return { @@ -68,7 +67,7 @@ class ChatVertexAIComponent(LCModelComponent): def build( self, - input_value: str, + input_value: Text, credentials: Optional[str], project: str, examples: Optional[List[BaseMessage]] = [], diff --git a/src/backend/langflow/components/prompts/Prompt.py b/src/backend/langflow/components/prompts/Prompt.py index 737e82504..d8afbcb43 100644 --- a/src/backend/langflow/components/prompts/Prompt.py +++ b/src/backend/langflow/components/prompts/Prompt.py @@ -20,7 +20,7 @@ class PromptComponent(CustomComponent): template: Prompt, **kwargs, ) -> Text: - prompt_template = PromptTemplate.from_template(str(template)) + prompt_template = PromptTemplate.from_template(Text(template)) attributes_to_check = ["text", "page_content"] for key, value in kwargs.items(): diff --git a/src/backend/langflow/components/utilities/GetRequest.py b/src/backend/langflow/components/utilities/GetRequest.py index b143a8e7e..449f4e338 100644 --- a/src/backend/langflow/components/utilities/GetRequest.py +++ b/src/backend/langflow/components/utilities/GetRequest.py @@ -1,7 +1,8 @@ -from typing import Optional +from typing import Optional, Text import requests from langchain_core.documents import Document + from langflow import CustomComponent from langflow.services.database.models.base import orjson_dumps @@ -31,7 +32,9 @@ class GetRequest(CustomComponent): }, } - def get_document(self, session: requests.Session, url: str, headers: Optional[dict], timeout: int) -> Document: + def get_document( + self, session: requests.Session, url: str, headers: Optional[dict], timeout: int + ) -> Document: try: response = session.get(url, headers=headers, timeout=int(timeout)) try: @@ -55,7 +58,7 @@ class GetRequest(CustomComponent): ) except Exception as exc: return Document( - page_content=str(exc), + page_content=Text(exc), metadata={"source": url, "headers": headers, "status_code": 500}, ) diff --git a/src/backend/langflow/components/utilities/IDGenerator.py b/src/backend/langflow/components/utilities/IDGenerator.py index 5b81e61e5..d1b371b36 100644 --- a/src/backend/langflow/components/utilities/IDGenerator.py +++ b/src/backend/langflow/components/utilities/IDGenerator.py @@ -9,7 +9,7 @@ class UUIDGeneratorComponent(CustomComponent): description = "Generates a unique ID." def generate(self, *args, **kwargs): - return str(uuid.uuid4().hex) + return Text(uuid.uuid4().hex) def build_config(self): return {"unique_id": {"display_name": "Value", "value": self.generate}} diff --git a/src/backend/langflow/components/utilities/PostRequest.py b/src/backend/langflow/components/utilities/PostRequest.py index baf734f54..fea1bc410 100644 --- a/src/backend/langflow/components/utilities/PostRequest.py +++ b/src/backend/langflow/components/utilities/PostRequest.py @@ -1,7 +1,8 @@ -from typing import Optional +from typing import Optional, Text import requests from langchain_core.documents import Document + from langflow import CustomComponent from langflow.services.database.models.base import orjson_dumps @@ -47,7 +48,7 @@ class PostRequest(CustomComponent): ) except Exception as exc: return Document( - page_content=str(exc), + page_content=Text(exc), metadata={ "source": url, "headers": headers, @@ -66,12 +67,16 @@ class PostRequest(CustomComponent): if not isinstance(document, list) and isinstance(document, Document): documents: list[Document] = [document] - elif isinstance(document, list) and all(isinstance(doc, Document) for doc in document): + elif isinstance(document, list) and all( + isinstance(doc, Document) for doc in document + ): documents = document else: raise ValueError("document must be a Document or a list of Documents") with requests.Session() as session: - documents = [self.post_document(session, doc, url, headers) for doc in documents] + documents = [ + self.post_document(session, doc, url, headers) for doc in documents + ] self.repr_value = documents return documents diff --git a/src/backend/langflow/components/utilities/RunnableExecutor.py b/src/backend/langflow/components/utilities/RunnableExecutor.py index d5c54c69b..1a3e1fa7f 100644 --- a/src/backend/langflow/components/utilities/RunnableExecutor.py +++ b/src/backend/langflow/components/utilities/RunnableExecutor.py @@ -32,7 +32,7 @@ class RunnableExecComponent(CustomComponent): def build( self, input_key: str, - input_value: str, + input_value: Text, runnable: Runnable, output_key: str = "output", ) -> Text: diff --git a/src/backend/langflow/components/utilities/SQLExecutor.py b/src/backend/langflow/components/utilities/SQLExecutor.py index da6fe98fc..530391c31 100644 --- a/src/backend/langflow/components/utilities/SQLExecutor.py +++ b/src/backend/langflow/components/utilities/SQLExecutor.py @@ -40,7 +40,7 @@ class SQLExecutorComponent(CustomComponent): result = tool.run(query, include_columns=include_columns) self.status = result except Exception as e: - result = str(e) + result = Text(e) self.status = result if not passthrough: raise e diff --git a/src/backend/langflow/components/utilities/ShouldRunNext.py b/src/backend/langflow/components/utilities/ShouldRunNext.py index 2f595b01b..24b2d589c 100644 --- a/src/backend/langflow/components/utilities/ShouldRunNext.py +++ b/src/backend/langflow/components/utilities/ShouldRunNext.py @@ -1,4 +1,5 @@ # Implement ShouldRunNext component +from typing import Text from langchain_core.prompts import PromptTemplate from langflow import CustomComponent @@ -23,7 +24,7 @@ class ShouldRunNext(CustomComponent): def build(self, template: Prompt, llm: BaseLanguageModel, **kwargs) -> dict: # This is a simple component that always returns True - prompt_template = PromptTemplate.from_template(str(template)) + prompt_template = PromptTemplate.from_template(Text(template)) attributes_to_check = ["text", "page_content"] for key, value in kwargs.items(): diff --git a/src/backend/langflow/components/utilities/UpdateRequest.py b/src/backend/langflow/components/utilities/UpdateRequest.py index bd40f642d..1393c9e5b 100644 --- a/src/backend/langflow/components/utilities/UpdateRequest.py +++ b/src/backend/langflow/components/utilities/UpdateRequest.py @@ -1,7 +1,8 @@ -from typing import List, Optional +from typing import List, Optional, Text import requests from langchain_core.documents import Document + from langflow import CustomComponent from langflow.services.database.models.base import orjson_dumps @@ -40,7 +41,9 @@ class UpdateRequest(CustomComponent): ) -> Document: try: if method == "PATCH": - response = session.patch(url, headers=headers, data=document.page_content) + response = session.patch( + url, headers=headers, data=document.page_content + ) elif method == "PUT": response = session.put(url, headers=headers, data=document.page_content) else: @@ -61,7 +64,7 @@ class UpdateRequest(CustomComponent): ) except Exception as exc: return Document( - page_content=str(exc), + page_content=Text(exc), metadata={"source": url, "headers": headers, "status_code": 500}, ) @@ -77,12 +80,17 @@ class UpdateRequest(CustomComponent): if not isinstance(document, list) and isinstance(document, Document): documents: list[Document] = [document] - elif isinstance(document, list) and all(isinstance(doc, Document) for doc in document): + elif isinstance(document, list) and all( + isinstance(doc, Document) for doc in document + ): documents = document else: raise ValueError("document must be a Document or a list of Documents") with requests.Session() as session: - documents = [self.update_document(session, doc, url, headers, method) for doc in documents] + documents = [ + self.update_document(session, doc, url, headers, method) + for doc in documents + ] self.repr_value = documents return documents diff --git a/src/backend/langflow/components/vectorstores/FAISS.py b/src/backend/langflow/components/vectorstores/FAISS.py index d68d8d085..a0324456e 100644 --- a/src/backend/langflow/components/vectorstores/FAISS.py +++ b/src/backend/langflow/components/vectorstores/FAISS.py @@ -1,4 +1,4 @@ -from typing import List, Union +from typing import List, Text, Union from langchain.schema import BaseRetriever from langchain_community.vectorstores import VectorStore @@ -35,5 +35,5 @@ class FAISSComponent(CustomComponent): if not folder_path: raise ValueError("Folder path is required to save the FAISS index.") path = self.resolve_path(folder_path) - vector_store.save_local(str(path), index_name) + vector_store.save_local(Text(path), index_name) return vector_store diff --git a/src/backend/langflow/components/vectorstores/FAISSSearch.py b/src/backend/langflow/components/vectorstores/FAISSSearch.py index dbc63faac..f6ddf4f7a 100644 --- a/src/backend/langflow/components/vectorstores/FAISSSearch.py +++ b/src/backend/langflow/components/vectorstores/FAISSSearch.py @@ -3,7 +3,7 @@ from typing import List from langchain_community.vectorstores.faiss import FAISS from langflow.components.vectorstores.base.model import LCVectorStoreComponent -from langflow.field_typing import Embeddings +from langflow.field_typing import Embeddings, Text from langflow.schema import Record @@ -26,7 +26,7 @@ class FAISSSearchComponent(LCVectorStoreComponent): def build( self, - input_value: str, + input_value: Text, embedding: Embeddings, folder_path: str, index_name: str = "langflow_index", @@ -35,7 +35,7 @@ class FAISSSearchComponent(LCVectorStoreComponent): raise ValueError("Folder path is required to save the FAISS index.") path = self.resolve_path(folder_path) vector_store = FAISS.load_local( - folder_path=str(path), embeddings=embedding, index_name=index_name + folder_path=Text(path), embeddings=embedding, index_name=index_name ) if not vector_store: raise ValueError("Failed to load the FAISS index.") diff --git a/src/backend/langflow/components/vectorstores/MongoDBAtlasVectorSearch.py b/src/backend/langflow/components/vectorstores/MongoDBAtlasVectorSearch.py index 2d65dd2e6..0c713950a 100644 --- a/src/backend/langflow/components/vectorstores/MongoDBAtlasVectorSearch.py +++ b/src/backend/langflow/components/vectorstores/MongoDBAtlasVectorSearch.py @@ -2,7 +2,7 @@ from typing import List, Optional from langflow.components.vectorstores.base.model import LCVectorStoreComponent from langflow.components.vectorstores.MongoDBAtlasVector import MongoDBAtlasComponent -from langflow.field_typing import Embeddings, NestedDict +from langflow.field_typing import Embeddings, NestedDict, Text from langflow.schema import Record @@ -27,7 +27,7 @@ class MongoDBAtlasSearchComponent(MongoDBAtlasComponent, LCVectorStoreComponent) def build( # type: ignore[override] self, - input_value: str, + input_value: Text, search_type: str, embedding: Embeddings, collection_name: str = "", diff --git a/src/backend/langflow/components/vectorstores/PineconeSearch.py b/src/backend/langflow/components/vectorstores/PineconeSearch.py index c34f6666d..95cd28ded 100644 --- a/src/backend/langflow/components/vectorstores/PineconeSearch.py +++ b/src/backend/langflow/components/vectorstores/PineconeSearch.py @@ -2,7 +2,7 @@ from typing import List, Optional from langflow.components.vectorstores.base.model import LCVectorStoreComponent from langflow.components.vectorstores.Pinecone import PineconeComponent -from langflow.field_typing import Embeddings +from langflow.field_typing import Embeddings, Text from langflow.schema import Record @@ -42,7 +42,7 @@ class PineconeSearchComponent(PineconeComponent, LCVectorStoreComponent): def build( # type: ignore[override] self, - input_value: str, + input_value: Text, embedding: Embeddings, pinecone_env: str, text_key: str = "text", diff --git a/src/backend/langflow/components/vectorstores/QdrantSearch.py b/src/backend/langflow/components/vectorstores/QdrantSearch.py index 8b2c954fb..1562a9cd0 100644 --- a/src/backend/langflow/components/vectorstores/QdrantSearch.py +++ b/src/backend/langflow/components/vectorstores/QdrantSearch.py @@ -2,15 +2,14 @@ from typing import List, Optional from langflow.components.vectorstores.base.model import LCVectorStoreComponent from langflow.components.vectorstores.Qdrant import QdrantComponent -from langflow.field_typing import Embeddings, NestedDict +from langflow.field_typing import Embeddings, NestedDict, Text from langflow.schema import Record class QdrantSearchComponent(QdrantComponent, LCVectorStoreComponent): display_name = "Qdrant Search" description = "Construct Qdrant wrapper from a list of texts." - icon="Qdrant" - + icon = "Qdrant" def build_config(self): return { @@ -46,7 +45,7 @@ class QdrantSearchComponent(QdrantComponent, LCVectorStoreComponent): def build( # type: ignore[override] self, - input_value: str, + input_value: Text, embedding: Embeddings, collection_name: str, search_type: str = "similarity", diff --git a/src/backend/langflow/components/vectorstores/RedisSearch.py b/src/backend/langflow/components/vectorstores/RedisSearch.py index 25938ed52..4089d4f47 100644 --- a/src/backend/langflow/components/vectorstores/RedisSearch.py +++ b/src/backend/langflow/components/vectorstores/RedisSearch.py @@ -4,6 +4,7 @@ from langchain.embeddings.base import Embeddings from langflow.components.vectorstores.base.model import LCVectorStoreComponent from langflow.components.vectorstores.Redis import RedisComponent +from langflow.field_typing import Text from langflow.schema import Record @@ -44,7 +45,7 @@ class RedisSearchComponent(RedisComponent, LCVectorStoreComponent): def build( # type: ignore[override] self, - input_value: str, + input_value: Text, search_type: str, embedding: Embeddings, redis_server_url: str, diff --git a/src/backend/langflow/components/vectorstores/SupabaseVectorStoreSearch.py b/src/backend/langflow/components/vectorstores/SupabaseVectorStoreSearch.py index 3a57f7951..5fd4dbd18 100644 --- a/src/backend/langflow/components/vectorstores/SupabaseVectorStoreSearch.py +++ b/src/backend/langflow/components/vectorstores/SupabaseVectorStoreSearch.py @@ -4,14 +4,14 @@ from langchain_community.vectorstores.supabase import SupabaseVectorStore from supabase.client import Client, create_client from langflow.components.vectorstores.base.model import LCVectorStoreComponent -from langflow.field_typing import Embeddings +from langflow.field_typing import Embeddings, Text from langflow.schema import Record class SupabaseSearchComponent(LCVectorStoreComponent): display_name = "Supabase Search" description = "Search a Supabase Vector Store for similar documents." - icon="Supabase" + icon = "Supabase" def build_config(self): return { @@ -30,7 +30,7 @@ class SupabaseSearchComponent(LCVectorStoreComponent): def build( self, - input_value: str, + input_value: Text, search_type: str, embedding: Embeddings, query_name: str = "", diff --git a/src/backend/langflow/components/vectorstores/VectaraSearch.py b/src/backend/langflow/components/vectorstores/VectaraSearch.py index fa6752b8f..ae2d442be 100644 --- a/src/backend/langflow/components/vectorstores/VectaraSearch.py +++ b/src/backend/langflow/components/vectorstores/VectaraSearch.py @@ -4,6 +4,7 @@ from langchain_community.vectorstores.vectara import Vectara from langflow.components.vectorstores.base.model import LCVectorStoreComponent from langflow.components.vectorstores.Vectara import VectaraComponent +from langflow.field_typing import Text from langflow.schema import Record @@ -14,7 +15,7 @@ class VectaraSearchComponent(VectaraComponent, LCVectorStoreComponent): "https://python.langchain.com/docs/integrations/vectorstores/vectara" ) beta = True - icon="Vectara" + icon = "Vectara" field_config = { "search_type": { @@ -44,7 +45,7 @@ class VectaraSearchComponent(VectaraComponent, LCVectorStoreComponent): def build( # type: ignore[override] self, - input_value: str, + input_value: Text, search_type: str, vectara_customer_id: str, vectara_corpus_id: str, diff --git a/src/backend/langflow/components/vectorstores/WeaviateSearch.py b/src/backend/langflow/components/vectorstores/WeaviateSearch.py index ab8bec222..6eee202c9 100644 --- a/src/backend/langflow/components/vectorstores/WeaviateSearch.py +++ b/src/backend/langflow/components/vectorstores/WeaviateSearch.py @@ -4,6 +4,7 @@ from langchain.embeddings.base import Embeddings from langflow.components.vectorstores.base.model import LCVectorStoreComponent from langflow.components.vectorstores.Weaviate import WeaviateVectorStoreComponent +from langflow.field_typing import Text from langflow.schema import Record @@ -14,7 +15,7 @@ class WeaviateSearchVectorStore(WeaviateVectorStoreComponent, LCVectorStoreCompo "https://python.langchain.com/docs/integrations/vectorstores/weaviate" ) beta = True - icon="Weaviate" + icon = "Weaviate" field_config = { "search_type": { @@ -57,7 +58,7 @@ class WeaviateSearchVectorStore(WeaviateVectorStoreComponent, LCVectorStoreCompo def build( # type: ignore[override] self, - input_value: str, + input_value: Text, search_type: str, url: str, search_by_text: bool = False, diff --git a/src/backend/langflow/components/vectorstores/base/model.py b/src/backend/langflow/components/vectorstores/base/model.py index c0e916313..bf8ca09e8 100644 --- a/src/backend/langflow/components/vectorstores/base/model.py +++ b/src/backend/langflow/components/vectorstores/base/model.py @@ -5,7 +5,8 @@ from langchain_core.retrievers import BaseRetriever from langchain_core.vectorstores import VectorStore from langflow import CustomComponent -from langflow.schema import Record, docs_to_records +from langflow.field_typing import Text, docs_to_records +from langflow.schema import Record class LCVectorStoreComponent(CustomComponent): @@ -16,7 +17,7 @@ class LCVectorStoreComponent(CustomComponent): def search_with_vector_store( self, - input_value: str, + input_value: Text, search_type: str, vector_store: Union[VectorStore, BaseRetriever], ) -> List[Record]: diff --git a/src/backend/langflow/components/vectorstores/pgvectorSearch.py b/src/backend/langflow/components/vectorstores/pgvectorSearch.py index 5a75617fb..f40e5ed26 100644 --- a/src/backend/langflow/components/vectorstores/pgvectorSearch.py +++ b/src/backend/langflow/components/vectorstores/pgvectorSearch.py @@ -4,6 +4,7 @@ from langchain.embeddings.base import Embeddings from langflow.components.vectorstores.base.model import LCVectorStoreComponent from langflow.components.vectorstores.pgvector import PGVectorComponent +from langflow.field_typing import Text from langflow.schema import Record @@ -42,7 +43,7 @@ class PGVectorSearchComponent(PGVectorComponent, LCVectorStoreComponent): def build( # type: ignore[override] self, - input_value: str, + input_value: Text, embedding: Embeddings, search_type: str, pg_server_url: str,