From a3cc0c7fa67bfdee9c52ae02f4d9adf18587a6db Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Wed, 24 Jan 2024 19:57:58 -0300 Subject: [PATCH] Fix imports and formatting issues --- .../langflow/components/agents/CSVAgent.py | 1 + .../langflow/components/agents/JsonAgent.py | 7 ++-- .../langflow/components/agents/SQLAgent.py | 6 +-- .../components/agents/VectorStoreAgent.py | 6 +-- .../agents/VectorStoreRouterAgent.py | 10 ++--- .../components/agents/ZeroShotAgent.py | 9 +++-- .../components/chains/CombineDocsChain.py | 8 ++-- .../langflow/components/chains/LLMChain.py | 2 +- .../components/chains/LLMCheckerChain.py | 2 +- .../components/chains/LLMMathChain.py | 18 ++++----- .../langflow/components/chains/RetrievalQA.py | 24 ++++++------ .../chains/RetrievalQAWithSourcesChain.py | 29 ++++++++------- .../components/chains/SQLDatabaseChain.py | 10 ++--- .../documentloaders/AZLyricsLoader.py | 4 +- .../documentloaders/AirbyteJSONLoader.py | 2 +- .../components/documentloaders/CSVLoader.py | 10 ++--- .../documentloaders/CoNLLULoader.py | 2 +- .../CollegeConfidentialLoader.py | 14 +++---- .../documentloaders/DirectoryLoader.py | 2 +- .../documentloaders/EverNoteLoader.py | 3 +- .../documentloaders/FacebookChatLoader.py | 11 ++++-- .../documentloaders/GitbookLoader.py | 4 +- .../components/documentloaders/HNLoader.py | 19 +++------- .../documentloaders/IFixitLoader.py | 18 +++++++-- .../components/documentloaders/IMSDbLoader.py | 2 +- .../documentloaders/PyPDFDirectoryLoader.py | 23 ------------ .../components/documentloaders/PyPDFLoader.py | 20 +++++++--- .../documentloaders/ReadTheDocsLoader.py | 8 ++-- .../components/documentloaders/SRTLoader.py | 2 +- .../documentloaders/SlackDirectoryLoader.py | 9 +++-- .../components/documentloaders/TextLoader.py | 2 +- .../documentloaders/UnstructuredHTMLLoader.py | 17 +++++++-- .../UnstructuredPowerPointLoader.py | 1 - .../components/embeddings/CohereEmbeddings.py | 9 +++-- .../embeddings/HuggingFaceEmbeddings.py | 5 ++- .../components/embeddings/OpenAIEmbeddings.py | 6 +-- .../embeddings/VertexAIEmbeddings.py | 12 +++--- .../langflow/components/llms/Anthropic.py | 6 +-- .../components/llms/AzureChatOpenAI.py | 2 +- .../langflow/components/llms/CTransformers.py | 25 ++++++++----- .../langflow/components/llms/ChatAnthropic.py | 6 +-- .../langflow/components/llms/ChatOpenAI.py | 10 +++-- .../langflow/components/llms/ChatVertexAI.py | 15 ++++---- .../langflow/components/llms/Cohere.py | 22 ++--------- .../langflow/components/llms/LlamaCpp.py | 9 ++++- .../langflow/components/llms/OpenAI.py | 10 +++-- .../langflow/components/llms/VertexAI.py | 35 +++++++----------- .../retrievers/MultiQueryRetriever.py | 37 ++++++++++--------- .../textsplitters/CharacterTextSplitter.py | 1 - .../LanguageRecursiveTextSplitter.py | 8 ++-- .../components/toolkits/JsonToolkit.py | 2 +- .../components/toolkits/VectorStoreInfo.py | 2 +- .../toolkits/VectorStoreRouterToolkit.py | 16 ++++---- .../components/toolkits/VectorStoreToolkit.py | 6 +-- .../utilities/BingSearchAPIWrapper.py | 7 +--- .../utilities/GoogleSearchAPIWrapper.py | 3 +- .../utilities/GoogleSerperAPIWrapper.py | 19 +++------- .../utilities/SearxSearchWrapper.py | 17 ++++----- .../components/utilities/SerpAPIWrapper.py | 14 ++++--- .../utilities/WikipediaAPIWrapper.py | 4 +- .../utilities/WolframAlphaAPIWrapper.py | 10 ++--- .../langflow/components/vectorstores/FAISS.py | 6 +-- .../vectorstores/MongoDBAtlasVectorSearch.py | 2 +- .../components/vectorstores/Pinecone.py | 12 +++--- .../vectorstores/SupabaseVectorStore.py | 13 +++++-- .../components/vectorstores/Weaviate.py | 14 +++---- 66 files changed, 326 insertions(+), 344 deletions(-) delete mode 100644 src/backend/langflow/components/documentloaders/PyPDFDirectoryLoader.py diff --git a/src/backend/langflow/components/agents/CSVAgent.py b/src/backend/langflow/components/agents/CSVAgent.py index 30037dff2..b54e5d90d 100644 --- a/src/backend/langflow/components/agents/CSVAgent.py +++ b/src/backend/langflow/components/agents/CSVAgent.py @@ -2,6 +2,7 @@ from langflow import CustomComponent from langflow.field_typing import BaseLanguageModel, AgentExecutor from langchain_experimental.agents.agent_toolkits.csv.base import create_csv_agent + class CSVAgentComponent(CustomComponent): display_name = "CSVAgent" description = "Construct a CSV agent from a CSV and tools." diff --git a/src/backend/langflow/components/agents/JsonAgent.py b/src/backend/langflow/components/agents/JsonAgent.py index 2f45b037d..d15366b77 100644 --- a/src/backend/langflow/components/agents/JsonAgent.py +++ b/src/backend/langflow/components/agents/JsonAgent.py @@ -1,10 +1,11 @@ - from langflow import CustomComponent -from langchain.agents import AgentExecutor,create_json_agent +from langchain.agents import AgentExecutor, create_json_agent from langflow.field_typing import ( BaseLanguageModel, ) from langchain_community.agent_toolkits.base import BaseToolkit + + class JsonAgentComponent(CustomComponent): display_name = "JsonAgent" description = "Construct a json agent from an LLM and tools." @@ -20,4 +21,4 @@ class JsonAgentComponent(CustomComponent): llm: BaseLanguageModel, toolkit: BaseToolkit, ) -> AgentExecutor: - return create_json_agent(llm=llm, toolkit=toolkit) \ No newline at end of file + return create_json_agent(llm=llm, toolkit=toolkit) diff --git a/src/backend/langflow/components/agents/SQLAgent.py b/src/backend/langflow/components/agents/SQLAgent.py index 7b1865637..42b1b48f3 100644 --- a/src/backend/langflow/components/agents/SQLAgent.py +++ b/src/backend/langflow/components/agents/SQLAgent.py @@ -1,4 +1,3 @@ - from langflow import CustomComponent from typing import Union, Callable from langchain.agents import AgentExecutor @@ -6,7 +5,8 @@ from langflow.field_typing import BaseLanguageModel from langchain_community.agent_toolkits.sql.base import create_sql_agent from langchain.sql_database import SQLDatabase from langchain_community.agent_toolkits import SQLDatabaseToolkit - + + class SQLAgentComponent(CustomComponent): display_name = "SQLAgent" description = "Construct an SQL agent from an LLM and tools." @@ -15,7 +15,7 @@ class SQLAgentComponent(CustomComponent): return { "llm": {"display_name": "LLM"}, "database_uri": {"display_name": "Database URI"}, - "verbose": {"display_name": "Verbose", "value": False,"advanced": True}, + "verbose": {"display_name": "Verbose", "value": False, "advanced": True}, } def build( diff --git a/src/backend/langflow/components/agents/VectorStoreAgent.py b/src/backend/langflow/components/agents/VectorStoreAgent.py index 99424a797..b70ea4d59 100644 --- a/src/backend/langflow/components/agents/VectorStoreAgent.py +++ b/src/backend/langflow/components/agents/VectorStoreAgent.py @@ -1,10 +1,10 @@ - from langflow import CustomComponent from langchain.agents import AgentExecutor, create_vectorstore_agent -from langchain.agents.agent_toolkits.vectorstore.toolkit import VectorStoreToolkit +from langchain.agents.agent_toolkits.vectorstore.toolkit import VectorStoreToolkit from typing import Union, Callable from langflow.field_typing import BaseLanguageModel + class VectorStoreAgentComponent(CustomComponent): display_name = "VectorStoreAgent" description = "Construct an agent from a Vector Store." @@ -20,4 +20,4 @@ class VectorStoreAgentComponent(CustomComponent): llm: BaseLanguageModel, vector_store_toolkit: VectorStoreToolkit, ) -> Union[AgentExecutor, Callable]: - return create_vectorstore_agent(llm=llm,toolkit=vector_store_toolkit) + return create_vectorstore_agent(llm=llm, toolkit=vector_store_toolkit) diff --git a/src/backend/langflow/components/agents/VectorStoreRouterAgent.py b/src/backend/langflow/components/agents/VectorStoreRouterAgent.py index 8a3c3dc6a..3174d9513 100644 --- a/src/backend/langflow/components/agents/VectorStoreRouterAgent.py +++ b/src/backend/langflow/components/agents/VectorStoreRouterAgent.py @@ -1,10 +1,10 @@ - from langflow import CustomComponent from langchain_core.language_models.base import BaseLanguageModel from langchain.agents.agent_toolkits.vectorstore.toolkit import VectorStoreRouterToolkit from langchain.agents import create_vectorstore_router_agent from typing import Callable + class VectorStoreRouterAgentComponent(CustomComponent): display_name = "VectorStoreRouterAgent" description = "Construct an agent from a Vector Store Router." @@ -15,9 +15,5 @@ class VectorStoreRouterAgentComponent(CustomComponent): "vectorstoreroutertoolkit": {"display_name": "Vector Store Router Toolkit"}, } - def build( - self, - llm: BaseLanguageModel, - vectorstoreroutertoolkit: VectorStoreRouterToolkit - ) -> Callable: - return create_vectorstore_router_agent(llm=llm,toolkit=vectorstoreroutertoolkit) + def build(self, llm: BaseLanguageModel, vectorstoreroutertoolkit: VectorStoreRouterToolkit) -> Callable: + return create_vectorstore_router_agent(llm=llm, toolkit=vectorstoreroutertoolkit) diff --git a/src/backend/langflow/components/agents/ZeroShotAgent.py b/src/backend/langflow/components/agents/ZeroShotAgent.py index 8fba2db72..b65e14e41 100644 --- a/src/backend/langflow/components/agents/ZeroShotAgent.py +++ b/src/backend/langflow/components/agents/ZeroShotAgent.py @@ -1,10 +1,11 @@ +from typing import List -from langflow import CustomComponent from langchain.agents import ZeroShotAgent from langchain_core.tools import BaseTool -from typing import List, Optional +from langflow import CustomComponent from langflow.components.chains.LLMChain import LLMChain + class ZeroShotAgentComponent(CustomComponent): display_name = "ZeroShotAgent" description = "Construct an agent from an LLM and tools." @@ -21,7 +22,7 @@ class ZeroShotAgentComponent(CustomComponent): self, llm: LLMChain, tools: List[BaseTool], - prefix: Optional[str] = "Answer the following questions as best you can. You have access to the following tools:", - suffix: Optional[str] = "Begin!\n\nQuestion: {input}\nThought:{agent_scratchpad}", + prefix: str = "Answer the following questions as best you can. You have access to the following tools:", + suffix: str = "Begin!\n\nQuestion: {input}\nThought:{agent_scratchpad}", ) -> ZeroShotAgent: return ZeroShotAgent(llm_chain=llm, tools=tools, prefix=prefix, suffix=suffix) diff --git a/src/backend/langflow/components/chains/CombineDocsChain.py b/src/backend/langflow/components/chains/CombineDocsChain.py index 0697d00bb..bb5a32c29 100644 --- a/src/backend/langflow/components/chains/CombineDocsChain.py +++ b/src/backend/langflow/components/chains/CombineDocsChain.py @@ -1,9 +1,9 @@ - from langflow import CustomComponent from langflow.field_typing import BaseLanguageModel, Chain from typing import Union, Callable from langchain.chains.combine_documents.base import BaseCombineDocumentsChain + class CombineDocsChainComponent(CustomComponent): display_name = "CombineDocsChain" description = "Load question answering chain." @@ -13,7 +13,7 @@ class CombineDocsChainComponent(CustomComponent): "llm": {"display_name": "LLM"}, "chain_type": { "display_name": "Chain Type", - "options": ['stuff', 'map_reduce', 'map_rerank', 'refine'], + "options": ["stuff", "map_reduce", "map_rerank", "refine"], }, } @@ -22,7 +22,7 @@ class CombineDocsChainComponent(CustomComponent): llm: BaseLanguageModel, chain_type: str, ) -> Union[Chain, Callable]: - if chain_type not in ['stuff', 'map_reduce', 'map_rerank', 'refine']: + if chain_type not in ["stuff", "map_reduce", "map_rerank", "refine"]: raise ValueError(f"Invalid chain_type: {chain_type}") - return BaseCombineDocumentsChain() \ No newline at end of file + return BaseCombineDocumentsChain() diff --git a/src/backend/langflow/components/chains/LLMChain.py b/src/backend/langflow/components/chains/LLMChain.py index 85f7ae96d..c6efd04c7 100644 --- a/src/backend/langflow/components/chains/LLMChain.py +++ b/src/backend/langflow/components/chains/LLMChain.py @@ -28,5 +28,5 @@ class LLMChainComponent(CustomComponent): prompt: BasePromptTemplate, llm: BaseLanguageModel, memory: Optional[BaseMemory] = None, - ) -> Union[Chain, Callable,LLMChain]: + ) -> Union[Chain, Callable, LLMChain]: return LLMChain(prompt=prompt, llm=llm, memory=memory) diff --git a/src/backend/langflow/components/chains/LLMCheckerChain.py b/src/backend/langflow/components/chains/LLMCheckerChain.py index 0d2266470..cf5effac8 100644 --- a/src/backend/langflow/components/chains/LLMCheckerChain.py +++ b/src/backend/langflow/components/chains/LLMCheckerChain.py @@ -1,4 +1,3 @@ - from langflow import CustomComponent from langchain.chains import LLMCheckerChain from typing import Union, Callable @@ -7,6 +6,7 @@ from langflow.field_typing import ( Chain, ) + class LLMCheckerChainComponent(CustomComponent): display_name = "LLMCheckerChain" description = "" diff --git a/src/backend/langflow/components/chains/LLMMathChain.py b/src/backend/langflow/components/chains/LLMMathChain.py index cd508e478..28f430e6d 100644 --- a/src/backend/langflow/components/chains/LLMMathChain.py +++ b/src/backend/langflow/components/chains/LLMMathChain.py @@ -1,12 +1,10 @@ +from typing import Callable, Optional, Union + +from langchain.chains import LLMChain, LLMMathChain from langflow import CustomComponent -from langchain.chains import LLMChain,LLMMathChain -from typing import Callable, Optional, Union -from langflow.field_typing import ( - BaseLanguageModel, - BaseMemory, - Chain -) +from langflow.field_typing import BaseLanguageModel, BaseMemory, Chain + class LLMMathChainComponent(CustomComponent): display_name = "LLMMathChain" @@ -26,8 +24,8 @@ class LLMMathChainComponent(CustomComponent): self, llm: BaseLanguageModel, llm_chain: LLMChain, - input_key: Optional[str]="question", - output_key: Optional[str]="answer", + input_key: str = "question", + output_key: str = "answer", memory: Optional[BaseMemory] = None, - ) -> Union[LLMMathChain, Callable,Chain]: + ) -> Union[LLMMathChain, Callable, Chain]: return LLMMathChain(llm=llm, llm_chain=llm_chain, input_key=input_key, output_key=output_key, memory=memory) diff --git a/src/backend/langflow/components/chains/RetrievalQA.py b/src/backend/langflow/components/chains/RetrievalQA.py index 4f0abb264..5f1232443 100644 --- a/src/backend/langflow/components/chains/RetrievalQA.py +++ b/src/backend/langflow/components/chains/RetrievalQA.py @@ -1,11 +1,11 @@ +from typing import Callable, Optional, Union -from langflow import CustomComponent -from typing import Optional, Union, Callable -from langflow.field_typing import ( - BaseMemory, - BaseRetriever) -from langchain.chains.retrieval_qa.base import BaseRetrievalQA from langchain.chains.combine_documents.base import BaseCombineDocumentsChain +from langchain.chains.retrieval_qa.base import BaseRetrievalQA, RetrievalQA +from langflow import CustomComponent +from langflow.field_typing import BaseMemory, BaseRetriever + + class RetrievalQAComponent(CustomComponent): display_name = "RetrievalQA" description = "Chain for question-answering against an index." @@ -15,8 +15,8 @@ class RetrievalQAComponent(CustomComponent): "combine_documents_chain": {"display_name": "Combine Documents Chain"}, "retriever": {"display_name": "Retriever"}, "memory": {"display_name": "Memory", "required": False}, - "input_key": {"display_name": "Input Key","advanced":True}, - "output_key": {"display_name": "Output Key","advanced":True}, + "input_key": {"display_name": "Input Key", "advanced": True}, + "output_key": {"display_name": "Output Key", "advanced": True}, "return_source_documents": {"display_name": "Return Source Documents"}, } @@ -25,11 +25,11 @@ class RetrievalQAComponent(CustomComponent): combine_documents_chain: BaseCombineDocumentsChain, retriever: BaseRetriever, memory: Optional[BaseMemory] = None, - input_key: Optional[str] = "query", - output_key: Optional[str] = "result", - return_source_documents: Optional[bool] = True, + input_key: str = "query", + output_key: str = "result", + return_source_documents: bool = True, ) -> Union[BaseRetrievalQA, Callable]: - return BaseRetrievalQA( + return RetrievalQA( combine_documents_chain=combine_documents_chain, retriever=retriever, memory=memory, diff --git a/src/backend/langflow/components/chains/RetrievalQAWithSourcesChain.py b/src/backend/langflow/components/chains/RetrievalQAWithSourcesChain.py index 452572226..e10aac6bb 100644 --- a/src/backend/langflow/components/chains/RetrievalQAWithSourcesChain.py +++ b/src/backend/langflow/components/chains/RetrievalQAWithSourcesChain.py @@ -1,13 +1,11 @@ +from typing import Optional + +from langchain.chains import BaseQAWithSourcesChain, RetrievalQAWithSourcesChain +from langchain.chains.combine_documents.base import BaseCombineDocumentsChain from langflow import CustomComponent -from langchain.chains import RetrievalQAWithSourcesChain -from langchain.chains.combine_documents.base import BaseCombineDocumentsChain -from typing import Optional -from langflow.field_typing import ( - BaseMemory, - BaseRetriever, - BaseLanguageModel -) +from langflow.field_typing import BaseLanguageModel, BaseMemory, BaseRetriever + class RetrievalQAWithSourcesChainComponent(CustomComponent): display_name = "RetrievalQAWithSourcesChain" @@ -18,14 +16,12 @@ class RetrievalQAWithSourcesChainComponent(CustomComponent): "llm": {"display_name": "LLM"}, "chain_type": { "display_name": "Chain Type", - "options": ['stuff', 'map_reduce', 'map_rerank', 'refine'], + "options": ["stuff", "map_reduce", "map_rerank", "refine"], }, "memory": {"display_name": "Memory"}, "return_source_documents": {"display_name": "Return Source Documents"}, - } - def build( self, retriever: BaseRetriever, @@ -34,5 +30,12 @@ class RetrievalQAWithSourcesChainComponent(CustomComponent): chain_type: str, memory: Optional[BaseMemory] = None, return_source_documents: Optional[bool] = True, - ) -> RetrievalQAWithSourcesChain: - return RetrievalQAWithSourcesChain(combine_documents_chain=combine_documents_chain,memory=memory,return_source_documents=return_source_documents,retriever=retriever).from_chain_type(llm=llm, chain_type=chain_type) \ No newline at end of file + ) -> BaseQAWithSourcesChain: + return RetrievalQAWithSourcesChain.from_chain_type( + llm=llm, + chain_type=chain_type, + combine_documents_chain=combine_documents_chain, + memory=memory, + return_source_documents=return_source_documents, + retriever=retriever, + ) diff --git a/src/backend/langflow/components/chains/SQLDatabaseChain.py b/src/backend/langflow/components/chains/SQLDatabaseChain.py index 80be78e72..56bd433ba 100644 --- a/src/backend/langflow/components/chains/SQLDatabaseChain.py +++ b/src/backend/langflow/components/chains/SQLDatabaseChain.py @@ -1,14 +1,10 @@ - from langflow import CustomComponent from typing import Callable, Union -from langflow.field_typing import ( - BasePromptTemplate, - BaseLanguageModel, - Chain -) +from langflow.field_typing import BasePromptTemplate, BaseLanguageModel, Chain from langchain_community.utilities.sql_database import SQLDatabase from langchain_experimental.sql.base import SQLDatabaseChain + class SQLDatabaseChainComponent(CustomComponent): display_name = "SQLDatabaseChain" description = "" @@ -25,5 +21,5 @@ class SQLDatabaseChainComponent(CustomComponent): db: SQLDatabase, llm: BaseLanguageModel, prompt: BasePromptTemplate, - ) -> Union[Chain, Callable,SQLDatabaseChain]: + ) -> Union[Chain, Callable, SQLDatabaseChain]: return SQLDatabaseChain.from_llm(llm=llm, db=db, prompt=prompt) diff --git a/src/backend/langflow/components/documentloaders/AZLyricsLoader.py b/src/backend/langflow/components/documentloaders/AZLyricsLoader.py index f0a9236c1..eea64c2e1 100644 --- a/src/backend/langflow/components/documentloaders/AZLyricsLoader.py +++ b/src/backend/langflow/components/documentloaders/AZLyricsLoader.py @@ -17,10 +17,10 @@ class AZLyricsLoaderComponent(CustomComponent): def build(self, metadata: Optional[Dict] = None, web_path: str = "") -> Document: documents = AZLyricsLoader(web_path=web_path).load() - if(metadata): + if metadata: for document in documents: if not document.metadata: document.metadata = metadata else: document.metadata.update(metadata) - return documents \ No newline at end of file + return documents diff --git a/src/backend/langflow/components/documentloaders/AirbyteJSONLoader.py b/src/backend/langflow/components/documentloaders/AirbyteJSONLoader.py index 89a271945..eaff8fb4a 100644 --- a/src/backend/langflow/components/documentloaders/AirbyteJSONLoader.py +++ b/src/backend/langflow/components/documentloaders/AirbyteJSONLoader.py @@ -28,7 +28,7 @@ class AirbyteJSONLoaderComponent(CustomComponent): def build(self, file_path: str, metadata: Optional[Dict] = None) -> Document: documents = AirbyteJSONLoader(file_path=file_path).load() - if(metadata): + if metadata: for document in documents: if not document.metadata: document.metadata = metadata diff --git a/src/backend/langflow/components/documentloaders/CSVLoader.py b/src/backend/langflow/components/documentloaders/CSVLoader.py index f7d49da77..ac2b271e9 100644 --- a/src/backend/langflow/components/documentloaders/CSVLoader.py +++ b/src/backend/langflow/components/documentloaders/CSVLoader.py @@ -1,9 +1,9 @@ - from langflow import CustomComponent from typing import List from langchain_community.document_loaders.csv_loader import CSVLoader from langchain.docstore.document import Document + class CSVLoaderComponent(CustomComponent): display_name = "CSVLoader" description = "Load a `CSV` file into a list of Documents." @@ -23,13 +23,9 @@ class CSVLoaderComponent(CustomComponent): }, } - def build( - self, - file_path: str, - metadata: dict - ) -> List[Document]: + def build(self, file_path: str, metadata: dict) -> List[Document]: documents = CSVLoader(file_path=file_path).load() - if(metadata): + if metadata: for document in documents: if not document.metadata: document.metadata = metadata diff --git a/src/backend/langflow/components/documentloaders/CoNLLULoader.py b/src/backend/langflow/components/documentloaders/CoNLLULoader.py index ccc912c0c..2c243d25d 100644 --- a/src/backend/langflow/components/documentloaders/CoNLLULoader.py +++ b/src/backend/langflow/components/documentloaders/CoNLLULoader.py @@ -26,7 +26,7 @@ class CoNLLULoaderComponent(CustomComponent): def build(self, file_path: str, metadata: dict) -> Document: documents = CoNLLULoader(file_path=file_path).load() - if(metadata): + if metadata: for document in documents: if not document.metadata: document.metadata = metadata diff --git a/src/backend/langflow/components/documentloaders/CollegeConfidentialLoader.py b/src/backend/langflow/components/documentloaders/CollegeConfidentialLoader.py index 44fc8c9ab..dee77c1da 100644 --- a/src/backend/langflow/components/documentloaders/CollegeConfidentialLoader.py +++ b/src/backend/langflow/components/documentloaders/CollegeConfidentialLoader.py @@ -1,13 +1,15 @@ - from langflow import CustomComponent from langchain.docstore.document import Document from typing import Optional from langchain_community.document_loaders.college_confidential import CollegeConfidentialLoader + class CollegeConfidentialLoaderComponent(CustomComponent): display_name = "CollegeConfidentialLoader" description = "Load `College Confidential` webpages." - documentation = "https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/college_confidential" + documentation = ( + "https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/college_confidential" + ) def build_config(self): return { @@ -15,13 +17,9 @@ class CollegeConfidentialLoaderComponent(CustomComponent): "web_path": {"display_name": "Web Page", "required": True}, } - def build( - self, - web_path: str, - metadata: Optional[dict] = {} - ) -> Document: + def build(self, web_path: str, metadata: Optional[dict] = {}) -> Document: documents = CollegeConfidentialLoader(web_path=web_path).load() - if(metadata): + if metadata: for document in documents: if not document.metadata: document.metadata = metadata diff --git a/src/backend/langflow/components/documentloaders/DirectoryLoader.py b/src/backend/langflow/components/documentloaders/DirectoryLoader.py index 41ff19b7b..0b214dd34 100644 --- a/src/backend/langflow/components/documentloaders/DirectoryLoader.py +++ b/src/backend/langflow/components/documentloaders/DirectoryLoader.py @@ -1,8 +1,8 @@ - from langflow import CustomComponent from langchain.docstore.document import Document from typing import Optional, Dict, Any + class DirectoryLoaderComponent(CustomComponent): display_name = "DirectoryLoader" description = "Load from a directory." diff --git a/src/backend/langflow/components/documentloaders/EverNoteLoader.py b/src/backend/langflow/components/documentloaders/EverNoteLoader.py index 02d8882d3..ccf925e27 100644 --- a/src/backend/langflow/components/documentloaders/EverNoteLoader.py +++ b/src/backend/langflow/components/documentloaders/EverNoteLoader.py @@ -3,6 +3,7 @@ from langflow.field_typing import Document from typing import Optional, Dict from langchain_community.document_loaders.evernote import EverNoteLoader + class EverNoteLoaderComponent(CustomComponent): display_name = "EverNoteLoader" description = "Load from `EverNote`." @@ -28,7 +29,7 @@ class EverNoteLoaderComponent(CustomComponent): def build(self, file_path: str, metadata: Optional[Dict] = None) -> Document: documents = EverNoteLoader(file_path=file_path).load() - if(metadata): + if metadata: for document in documents: if not document.metadata: document.metadata = metadata diff --git a/src/backend/langflow/components/documentloaders/FacebookChatLoader.py b/src/backend/langflow/components/documentloaders/FacebookChatLoader.py index deb636eac..244066a7e 100644 --- a/src/backend/langflow/components/documentloaders/FacebookChatLoader.py +++ b/src/backend/langflow/components/documentloaders/FacebookChatLoader.py @@ -1,12 +1,15 @@ - from langflow import CustomComponent from langchain.docstore.document import Document from typing import Optional, Dict from langchain_community.document_loaders.facebook_chat import FacebookChatLoader + + class FacebookChatLoaderComponent(CustomComponent): display_name = "FacebookChatLoader" description = "Load `Facebook Chat` messages directory dump." - documentation = "https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/facebook_chat" + documentation = ( + "https://python.langchain.com/docs/modules/data_connection/document_loaders/integrations/facebook_chat" + ) def build_config(self): return { @@ -25,10 +28,10 @@ class FacebookChatLoaderComponent(CustomComponent): def build(self, file_path: str, metadata: Optional[Dict] = None) -> Document: documents = FacebookChatLoader(file_path=file_path).load() - if(metadata): + if metadata: for document in documents: if not document.metadata: document.metadata = metadata else: document.metadata.update(metadata) - return documents \ No newline at end of file + return documents diff --git a/src/backend/langflow/components/documentloaders/GitbookLoader.py b/src/backend/langflow/components/documentloaders/GitbookLoader.py index e859eccf0..f53f5959f 100644 --- a/src/backend/langflow/components/documentloaders/GitbookLoader.py +++ b/src/backend/langflow/components/documentloaders/GitbookLoader.py @@ -12,7 +12,7 @@ class GitbookLoaderComponent(CustomComponent): return { "metadata": { "display_name": "Metadata", - "field_type":"dict", + "field_type": "dict", "value": {}, }, "web_page": { @@ -23,7 +23,7 @@ class GitbookLoaderComponent(CustomComponent): def build(self, metadata: Optional[Dict] = None, web_page: str = "") -> Document: documents = GitbookLoader(web_page=web_page).load() - if(metadata): + if metadata: for document in documents: if not document.metadata: document.metadata = metadata diff --git a/src/backend/langflow/components/documentloaders/HNLoader.py b/src/backend/langflow/components/documentloaders/HNLoader.py index d54591d46..6e08f26e2 100644 --- a/src/backend/langflow/components/documentloaders/HNLoader.py +++ b/src/backend/langflow/components/documentloaders/HNLoader.py @@ -1,4 +1,3 @@ - from langflow import CustomComponent from typing import Optional, Dict from langchain_community.document_loaders.hn import HNLoader @@ -10,25 +9,17 @@ class HNLoaderComponent(CustomComponent): def build_config(self): return { - "metadata": { - "display_name": "Metadata", - "value": {}, - "required": False, - "field_type": "dict" - }, - "web_path": { - "display_name": "Web Page", - "required": True - }, + "metadata": {"display_name": "Metadata", "value": {}, "required": False, "field_type": "dict"}, + "web_path": {"display_name": "Web Page", "required": True}, } def build( - self, + self, web_path: str, - metadata: Optional[Dict] = None, + metadata: Optional[Dict] = None, ) -> HNLoader: documents = HNLoader(web_path=web_path).load() - if(metadata): + if metadata: for document in documents: if not document.metadata: document.metadata = metadata diff --git a/src/backend/langflow/components/documentloaders/IFixitLoader.py b/src/backend/langflow/components/documentloaders/IFixitLoader.py index b6a439b3e..48c5f7b47 100644 --- a/src/backend/langflow/components/documentloaders/IFixitLoader.py +++ b/src/backend/langflow/components/documentloaders/IFixitLoader.py @@ -1,6 +1,8 @@ +from typing import Dict, List, Optional + +from langchain_community.document_loaders.ifixit import IFixitLoader from langflow import CustomComponent from langflow.field_typing import Document -from typing import Optional, Dict class IFixitLoaderComponent(CustomComponent): @@ -14,7 +16,17 @@ class IFixitLoaderComponent(CustomComponent): "web_path": {"display_name": "Web Page", "type": "str"}, } - def build(self, web_path: str, metadata: Optional[Dict] = None) -> Document: + def build(self, web_path: str, metadata: Optional[Dict] = None) -> List[Document]: # Assuming IFixitLoader is the correct class name from the langchain library, # and it has a load method that returns a Document object. - return IFixitLoader(web_path=web_path, metadata=metadata).load() + if metadata is None: + metadata = {} + + docs = IFixitLoader(web_path=web_path).load() + + if metadata: + for doc in docs: + if doc.metadata is None: + doc.metadata = {} + doc.metadata.update(metadata) + return docs diff --git a/src/backend/langflow/components/documentloaders/IMSDbLoader.py b/src/backend/langflow/components/documentloaders/IMSDbLoader.py index 37c2c542c..1eebcc444 100644 --- a/src/backend/langflow/components/documentloaders/IMSDbLoader.py +++ b/src/backend/langflow/components/documentloaders/IMSDbLoader.py @@ -21,7 +21,7 @@ class IMSDbLoaderComponent(CustomComponent): web_path: str = "", ) -> Document: documents = IMSDbLoader(web_path=web_path).load() - if(metadata): + if metadata: for document in documents: if not document.metadata: document.metadata = metadata diff --git a/src/backend/langflow/components/documentloaders/PyPDFDirectoryLoader.py b/src/backend/langflow/components/documentloaders/PyPDFDirectoryLoader.py deleted file mode 100644 index fd3bc6ae8..000000000 --- a/src/backend/langflow/components/documentloaders/PyPDFDirectoryLoader.py +++ /dev/null @@ -1,23 +0,0 @@ - -from langflow import CustomComponent -from langchain.documents import Document -from typing import Optional, Dict - -class PyPDFDirectoryLoaderComponent(CustomComponent): - display_name = "PyPDFDirectoryLoader" - description = "Load a directory with `PDF` files using `pypdf` and chunks at character level." - - def build_config(self): - return { - "metadata": {"display_name": "Metadata", "required": False}, - "path": {"display_name": "Local directory", "required": True}, - } - - def build( - self, - path: str, - metadata: Optional[Dict] = None, - ) -> Document: - # Assuming there is a PyPDFDirectoryLoader class that takes these parameters - # Since the actual implementation is not provided, this is a placeholder - return PyPDFDirectoryLoader(path=path, metadata=metadata) diff --git a/src/backend/langflow/components/documentloaders/PyPDFLoader.py b/src/backend/langflow/components/documentloaders/PyPDFLoader.py index bf3667694..b44a90577 100644 --- a/src/backend/langflow/components/documentloaders/PyPDFLoader.py +++ b/src/backend/langflow/components/documentloaders/PyPDFLoader.py @@ -1,7 +1,10 @@ +from typing import Dict, List, Optional + +from langchain_community.document_loaders.pdf import PyPDFLoader +from langchain_core.documents import Document from langflow import CustomComponent -from langchain.document_loaders import BaseLoader -from typing import Optional, Dict + class PyPDFLoaderComponent(CustomComponent): display_name = "PyPDFLoader" @@ -22,10 +25,17 @@ class PyPDFLoaderComponent(CustomComponent): "required": False, "type": "dict", "show": True, - } + }, } - def build(self, file_path: str, metadata: Optional[Dict] = None) -> BaseLoader: + def build(self, file_path: str, metadata: Optional[Dict] = None) -> List[Document]: # Assuming there is a PyPDFLoader class that takes file_path and metadata as parameters # and inherits from BaseLoader - return PyPDFLoader(file_path=file_path, metadata=metadata) + docs = PyPDFLoader(file_path=file_path).load() + + if metadata: + for doc in docs: + if doc.metadata is None: + doc.metadata = {} + doc.metadata.update(metadata) + return docs diff --git a/src/backend/langflow/components/documentloaders/ReadTheDocsLoader.py b/src/backend/langflow/components/documentloaders/ReadTheDocsLoader.py index 1c78b7e34..55284b9bd 100644 --- a/src/backend/langflow/components/documentloaders/ReadTheDocsLoader.py +++ b/src/backend/langflow/components/documentloaders/ReadTheDocsLoader.py @@ -1,5 +1,5 @@ from langflow import CustomComponent -from typing import Dict, Optional,List +from typing import Dict, Optional, List from langchain_core.documents import Document from langchain_community.document_loaders.readthedocs import ReadTheDocsLoader @@ -10,7 +10,7 @@ class ReadTheDocsLoaderComponent(CustomComponent): def build_config(self): return { - "metadata": {"display_name": "Metadata", "default": {},"field_type": "dict"}, + "metadata": {"display_name": "Metadata", "default": {}, "field_type": "dict"}, "path": {"display_name": "Local directory", "required": True}, } @@ -20,10 +20,10 @@ class ReadTheDocsLoaderComponent(CustomComponent): metadata: Optional[Dict] = None, ) -> List[Document]: documents = ReadTheDocsLoader(path=path).load() - if(metadata): + if metadata: for document in documents: if not document.metadata: document.metadata = metadata else: document.metadata.update(metadata) - return documents \ No newline at end of file + return documents diff --git a/src/backend/langflow/components/documentloaders/SRTLoader.py b/src/backend/langflow/components/documentloaders/SRTLoader.py index 83a0cf1e8..5c640dee5 100644 --- a/src/backend/langflow/components/documentloaders/SRTLoader.py +++ b/src/backend/langflow/components/documentloaders/SRTLoader.py @@ -1,8 +1,8 @@ - from langflow import CustomComponent from langchain.documents import Document from typing import Optional, Dict + class SRTLoaderComponent(CustomComponent): display_name = "SRTLoader" description = "Load `.srt` (subtitle) files." diff --git a/src/backend/langflow/components/documentloaders/SlackDirectoryLoader.py b/src/backend/langflow/components/documentloaders/SlackDirectoryLoader.py index 6a38d1488..782f1cea9 100644 --- a/src/backend/langflow/components/documentloaders/SlackDirectoryLoader.py +++ b/src/backend/langflow/components/documentloaders/SlackDirectoryLoader.py @@ -1,8 +1,9 @@ - from langflow import CustomComponent from typing import Optional, Dict, List from langchain_core.documents import Document from langchain_community.document_loaders.slack_directory import SlackDirectoryLoader + + class SlackDirectoryLoaderComponent(CustomComponent): display_name = "SlackDirectoryLoader" description = "Load from a `Slack` directory dump." @@ -10,7 +11,7 @@ class SlackDirectoryLoaderComponent(CustomComponent): def build_config(self): return { - "zip_path": {"display_name": "Path to zip file","field_type": "file","file_types":[".zip"]}, + "zip_path": {"display_name": "Path to zip file", "field_type": "file", "file_types": [".zip"]}, "metadata": {"display_name": "Metadata", "field_type": "dict"}, "workspace_url": {"display_name": "Workspace URL"}, } @@ -21,8 +22,8 @@ class SlackDirectoryLoaderComponent(CustomComponent): metadata: Optional[Dict] = None, workspace_url: Optional[str] = None, ) -> List[Document]: - documents = SlackDirectoryLoader(zip_path=zip_path,workspace_url=workspace_url).load() - if(metadata): + documents = SlackDirectoryLoader(zip_path=zip_path, workspace_url=workspace_url).load() + if metadata: for document in documents: if not document.metadata: document.metadata = metadata diff --git a/src/backend/langflow/components/documentloaders/TextLoader.py b/src/backend/langflow/components/documentloaders/TextLoader.py index a8e6e18f7..0c4033898 100644 --- a/src/backend/langflow/components/documentloaders/TextLoader.py +++ b/src/backend/langflow/components/documentloaders/TextLoader.py @@ -1,8 +1,8 @@ - from langflow import CustomComponent from langchain.data_connections import Document from typing import Optional, Dict + class TextLoaderComponent(CustomComponent): display_name = "TextLoader" description = "Load text file." diff --git a/src/backend/langflow/components/documentloaders/UnstructuredHTMLLoader.py b/src/backend/langflow/components/documentloaders/UnstructuredHTMLLoader.py index 46dc5aa2e..41e5a468e 100644 --- a/src/backend/langflow/components/documentloaders/UnstructuredHTMLLoader.py +++ b/src/backend/langflow/components/documentloaders/UnstructuredHTMLLoader.py @@ -1,6 +1,8 @@ +from typing import Dict, List, Optional + from langchain import CustomComponent -from langflow.field_typing import Document -from typing import Optional, Dict +from langchain_community.document_loaders import UnstructuredHTMLLoader +from langchain_core.documents import Document class UnstructuredHTMLLoaderComponent(CustomComponent): @@ -14,7 +16,14 @@ class UnstructuredHTMLLoaderComponent(CustomComponent): "metadata": {"display_name": "Metadata"}, } - def build(self, file_path: str, metadata: Optional[Dict] = None) -> Document: + def build(self, file_path: str, metadata: Optional[Dict] = None) -> List[Document]: # Assuming the existence of a function or class named UnstructuredHTMLLoader that # loads HTML and creates a Document object; Replace with actual implementation. - return UnstructuredHTMLLoader(file_path=file_path, metadata=metadata) + docs = UnstructuredHTMLLoader(file_path=file_path).load() + + if metadata: + for doc in docs: + if doc.metadata is None: + doc.metadata = {} + doc.metadata.update(metadata) + return docs diff --git a/src/backend/langflow/components/documentloaders/UnstructuredPowerPointLoader.py b/src/backend/langflow/components/documentloaders/UnstructuredPowerPointLoader.py index 11cec9fc1..797ffbc12 100644 --- a/src/backend/langflow/components/documentloaders/UnstructuredPowerPointLoader.py +++ b/src/backend/langflow/components/documentloaders/UnstructuredPowerPointLoader.py @@ -1,4 +1,3 @@ - from langflow import CustomComponent from langchain.document_loaders import Document from typing import Optional, Dict diff --git a/src/backend/langflow/components/embeddings/CohereEmbeddings.py b/src/backend/langflow/components/embeddings/CohereEmbeddings.py index cac7c1d75..3fccc8c2c 100644 --- a/src/backend/langflow/components/embeddings/CohereEmbeddings.py +++ b/src/backend/langflow/components/embeddings/CohereEmbeddings.py @@ -1,7 +1,8 @@ +from typing import Optional + +from langchain_community.embeddings.cohere import CohereEmbeddings from langflow import CustomComponent -from langchain_community.embeddings.cohere import CohereEmbeddings -from typing import Optional class CohereEmbeddingsComponent(CustomComponent): @@ -10,7 +11,7 @@ class CohereEmbeddingsComponent(CustomComponent): def build_config(self): return { - "cohere_api_key": {"display_name": "Cohere API Key","password":True}, + "cohere_api_key": {"display_name": "Cohere API Key", "password": True}, "model": {"display_name": "Model", "default": "embed-english-v2.0", "advanced": True}, "truncate": {"display_name": "Truncate", "advanced": True}, "max_retries": {"display_name": "Max Retries", "advanced": True}, @@ -24,7 +25,7 @@ class CohereEmbeddingsComponent(CustomComponent): max_retries: Optional[int] = None, model: str = "embed-english-v2.0", truncate: Optional[str] = None, - user_agent: Optional[str] = "langchain", + user_agent: str = "langchain", ) -> CohereEmbeddings: return CohereEmbeddings( max_retries=max_retries, diff --git a/src/backend/langflow/components/embeddings/HuggingFaceEmbeddings.py b/src/backend/langflow/components/embeddings/HuggingFaceEmbeddings.py index 44ad25212..6f3540358 100644 --- a/src/backend/langflow/components/embeddings/HuggingFaceEmbeddings.py +++ b/src/backend/langflow/components/embeddings/HuggingFaceEmbeddings.py @@ -2,6 +2,7 @@ from langflow import CustomComponent from typing import Optional, Dict from langchain_community.embeddings.huggingface import HuggingFaceEmbeddings + class HuggingFaceEmbeddingsComponent(CustomComponent): display_name = "HuggingFaceEmbeddings" description = "HuggingFace sentence_transformers embedding models." @@ -12,8 +13,8 @@ class HuggingFaceEmbeddingsComponent(CustomComponent): def build_config(self): return { "cache_folder": {"display_name": "Cache Folder", "advanced": True}, - "encode_kwargs": {"display_name": "Encode Kwargs", "advanced": True,"field_type":"dict"}, - "model_kwargs": {"display_name": "Model Kwargs","field_type":"dict", "advanced": True}, + "encode_kwargs": {"display_name": "Encode Kwargs", "advanced": True, "field_type": "dict"}, + "model_kwargs": {"display_name": "Model Kwargs", "field_type": "dict", "advanced": True}, "model_name": {"display_name": "Model Name"}, "multi_process": {"display_name": "Multi Process", "advanced": True}, } diff --git a/src/backend/langflow/components/embeddings/OpenAIEmbeddings.py b/src/backend/langflow/components/embeddings/OpenAIEmbeddings.py index 6303389c8..6838a7759 100644 --- a/src/backend/langflow/components/embeddings/OpenAIEmbeddings.py +++ b/src/backend/langflow/components/embeddings/OpenAIEmbeddings.py @@ -42,9 +42,9 @@ class OpenAIEmbeddingsComponent(CustomComponent): "max_retries": {"display_name": "Max Retries", "advanced": True}, "model": {"display_name": "Model", "advanced": True}, "model_kwargs": {"display_name": "Model Kwargs", "advanced": True}, - "openai_api_base": {"display_name": "OpenAI API Base","password":True, "advanced": True}, - "openai_api_key": {"display_name": "OpenAI API Key","password":True}, - "openai_api_type": {"display_name": "OpenAI API Type", "advanced": True,"password":True}, + "openai_api_base": {"display_name": "OpenAI API Base", "password": True, "advanced": True}, + "openai_api_key": {"display_name": "OpenAI API Key", "password": True}, + "openai_api_type": {"display_name": "OpenAI API Type", "advanced": True, "password": True}, "openai_api_version": { "display_name": "OpenAI API Version", "advanced": True, diff --git a/src/backend/langflow/components/embeddings/VertexAIEmbeddings.py b/src/backend/langflow/components/embeddings/VertexAIEmbeddings.py index 542582a2e..053fd6c7f 100644 --- a/src/backend/langflow/components/embeddings/VertexAIEmbeddings.py +++ b/src/backend/langflow/components/embeddings/VertexAIEmbeddings.py @@ -1,20 +1,20 @@ - from langflow import CustomComponent from langchain.embeddings import VertexAIEmbeddings from typing import Optional, List + class VertexAIEmbeddingsComponent(CustomComponent): display_name = "VertexAIEmbeddings" description = "Google Cloud VertexAI embedding models." def build_config(self): return { - "credentials": {"display_name": "Credentials", "value": '', "file_types": ['.json'],"field_type": "file"}, + "credentials": {"display_name": "Credentials", "value": "", "file_types": [".json"], "field_type": "file"}, "instance": {"display_name": "instance", "advanced": True, "field_type": "dict"}, - "location": {"display_name": "Location", "value": 'us-central1', "advanced": True}, + "location": {"display_name": "Location", "value": "us-central1", "advanced": True}, "max_output_tokens": {"display_name": "Max Output Tokens", "value": 128}, "max_retries": {"display_name": "Max Retries", "value": 6, "advanced": True}, - "model_name": {"display_name": "Model Name", "value": 'textembedding-gecko'}, + "model_name": {"display_name": "Model Name", "value": "textembedding-gecko"}, "n": {"display_name": "N", "value": 1, "advanced": True}, "project": {"display_name": "Project", "advanced": True}, "request_parallelism": {"display_name": "Request Parallelism", "value": 5, "advanced": True}, @@ -29,10 +29,10 @@ class VertexAIEmbeddingsComponent(CustomComponent): self, instance: Optional[str] = None, credentials: Optional[str] = None, - location: str = 'us-central1', + location: str = "us-central1", max_output_tokens: int = 128, max_retries: int = 6, - model_name: str = 'textembedding-gecko', + model_name: str = "textembedding-gecko", n: int = 1, project: Optional[str] = None, request_parallelism: int = 5, diff --git a/src/backend/langflow/components/llms/Anthropic.py b/src/backend/langflow/components/llms/Anthropic.py index a588fa3a8..45292a6ea 100644 --- a/src/backend/langflow/components/llms/Anthropic.py +++ b/src/backend/langflow/components/llms/Anthropic.py @@ -1,6 +1,6 @@ from langflow import CustomComponent from typing import Optional -from langflow.field_typing import BaseLanguageModel,NestedDict +from langflow.field_typing import BaseLanguageModel, NestedDict from langchain_community.llms.anthropic import Anthropic @@ -21,7 +21,7 @@ class AnthropicComponent(CustomComponent): }, "model_kwargs": { "display_name": "Model Kwargs", - "field_type": 'NestedDict', + "field_type": "NestedDict", "advanced": True, }, "temperature": { @@ -42,4 +42,4 @@ class AnthropicComponent(CustomComponent): anthropic_api_url=anthropic_api_url, model_kwargs=model_kwargs, temperature=temperature, - ) \ No newline at end of file + ) diff --git a/src/backend/langflow/components/llms/AzureChatOpenAI.py b/src/backend/langflow/components/llms/AzureChatOpenAI.py index 53c2af9bb..1bce563bf 100644 --- a/src/backend/langflow/components/llms/AzureChatOpenAI.py +++ b/src/backend/langflow/components/llms/AzureChatOpenAI.py @@ -26,7 +26,7 @@ class AzureChatOpenAIComponent(CustomComponent): "2023-07-01-preview", "2023-08-01-preview", "2023-09-01-preview", - "2023-12-01-preview" + "2023-12-01-preview", ] def build_config(self): diff --git a/src/backend/langflow/components/llms/CTransformers.py b/src/backend/langflow/components/llms/CTransformers.py index 46b1c021e..f4826bf86 100644 --- a/src/backend/langflow/components/llms/CTransformers.py +++ b/src/backend/langflow/components/llms/CTransformers.py @@ -1,8 +1,8 @@ - from langflow import CustomComponent from langchain_community.llms.ctransformers import CTransformers from typing import Optional, Dict + class CTransformersComponent(CustomComponent): display_name = "CTransformers" description = "C Transformers LLM models" @@ -11,16 +11,21 @@ class CTransformersComponent(CustomComponent): def build_config(self): return { "model": {"display_name": "Model", "required": True}, - "model_file": {"display_name": "Model File", "required": False,"field_type":"file", "file_types":[".bin"]}, + "model_file": { + "display_name": "Model File", + "required": False, + "field_type": "file", + "file_types": [".bin"], + }, "model_type": {"display_name": "Model Type", "required": True}, - "config": {"display_name": "Config", "advanced": True, "required": False,"field_type":"dict","value":'{"top_k":40,"top_p":0.95,"temperature":0.8,"repetition_penalty":1.1,"last_n_tokens":64,"seed":-1,"max_new_tokens":256,"stop":"","stream":"False","reset":"True","batch_size":8,"threads":-1,"context_length":-1,"gpu_layers":0}'} + "config": { + "display_name": "Config", + "advanced": True, + "required": False, + "field_type": "dict", + "value": '{"top_k":40,"top_p":0.95,"temperature":0.8,"repetition_penalty":1.1,"last_n_tokens":64,"seed":-1,"max_new_tokens":256,"stop":"","stream":"False","reset":"True","batch_size":8,"threads":-1,"context_length":-1,"gpu_layers":0}', + }, } - def build( - self, - model: str, - model_file: str, - model_type: str, - config: Optional[Dict] = None - ) -> CTransformers: + def build(self, model: str, model_file: str, model_type: str, config: Optional[Dict] = None) -> CTransformers: return CTransformers(model=model, model_file=model_file, model_type=model_type, config=config) diff --git a/src/backend/langflow/components/llms/ChatAnthropic.py b/src/backend/langflow/components/llms/ChatAnthropic.py index a6e222ded..e6f8b1408 100644 --- a/src/backend/langflow/components/llms/ChatAnthropic.py +++ b/src/backend/langflow/components/llms/ChatAnthropic.py @@ -1,8 +1,9 @@ - from langflow import CustomComponent from typing import Optional, Union, Callable from langflow.field_typing import BaseLanguageModel from langchain_community.chat_models.anthropic import ChatAnthropic + + class ChatAnthropicComponent(CustomComponent): display_name = "ChatAnthropic" description = "`Anthropic` chat large language models." @@ -21,7 +22,7 @@ class ChatAnthropicComponent(CustomComponent): }, "model_kwargs": { "display_name": "Model Kwargs", - "field_type": 'dict', + "field_type": "dict", "advanced": True, }, "temperature": { @@ -37,7 +38,6 @@ class ChatAnthropicComponent(CustomComponent): model_kwargs: dict = {}, temperature: Optional[float] = None, ) -> Union[BaseLanguageModel, Callable]: - return ChatAnthropic( anthropic_api_key=anthropic_api_key, anthropic_api_url=anthropic_api_url, diff --git a/src/backend/langflow/components/llms/ChatOpenAI.py b/src/backend/langflow/components/llms/ChatOpenAI.py index 44fd8dd40..c2c3e9234 100644 --- a/src/backend/langflow/components/llms/ChatOpenAI.py +++ b/src/backend/langflow/components/llms/ChatOpenAI.py @@ -1,7 +1,9 @@ -from langflow import CustomComponent -from langchain.llms import BaseLLM from typing import Optional, Union + +from langchain.llms import BaseLLM from langchain_community.chat_models.openai import ChatOpenAI + +from langflow import CustomComponent from langflow.field_typing import BaseLanguageModel, NestedDict @@ -66,12 +68,12 @@ class ChatOpenAIComponent(CustomComponent): self, max_tokens: Optional[int] = 256, model_kwargs: Optional[NestedDict] = {}, - model_name: Optional[str] = "gpt-4-1106-preview", + model_name: str = "gpt-4-1106-preview", openai_api_base: Optional[str] = None, openai_api_key: Optional[str] = None, temperature: float = 0.7, ) -> Union[BaseLanguageModel, BaseLLM]: - if(not openai_api_base): + if not openai_api_base: openai_api_base = "https://api.openai.com/v1" return ChatOpenAI( max_tokens=max_tokens, diff --git a/src/backend/langflow/components/llms/ChatVertexAI.py b/src/backend/langflow/components/llms/ChatVertexAI.py index 072cc0a7f..df0ca3f65 100644 --- a/src/backend/langflow/components/llms/ChatVertexAI.py +++ b/src/backend/langflow/components/llms/ChatVertexAI.py @@ -1,9 +1,10 @@ -from langflow import CustomComponent from typing import List, Optional, Union -from langchain_core.messages.base import BaseMessage -from langchain_community.chat_models.vertexai import ChatVertexAI -from langflow.field_typing import BaseLanguageModel + from langchain.llms import BaseLLM +from langchain_community.chat_models.vertexai import ChatVertexAI +from langchain_core.messages.base import BaseMessage +from langflow import CustomComponent +from langflow.field_typing import BaseLanguageModel class ChatVertexAIComponent(CustomComponent): @@ -63,10 +64,10 @@ class ChatVertexAIComponent(CustomComponent): self, credentials: Optional[str], project: str, - examples: Optional[List[BaseMessage]]=[], - location: Optional[str] = "us-central1", + examples: Optional[List[BaseMessage]] = [], + location: str = "us-central1", max_output_tokens: Optional[int] = 128, - model_name: Optional[str] = "chat-bison", + model_name: str = "chat-bison", temperature: Optional[float] = 0.0, top_k: Optional[int] = 40, top_p: Optional[float] = 0.95, diff --git a/src/backend/langflow/components/llms/Cohere.py b/src/backend/langflow/components/llms/Cohere.py index 1e0fea8fb..41513e523 100644 --- a/src/backend/langflow/components/llms/Cohere.py +++ b/src/backend/langflow/components/llms/Cohere.py @@ -1,9 +1,9 @@ - from langflow import CustomComponent from langchain_core.language_models.base import BaseLanguageModel from typing import Optional from langchain_community.llms.cohere import Cohere + class CohereComponent(CustomComponent): display_name = "Cohere" description = "Cohere large language models." @@ -11,23 +11,9 @@ class CohereComponent(CustomComponent): def build_config(self): return { - "cohere_api_key": { - "display_name": "Cohere API Key", - "type": "password", - "password": True - }, - "max_tokens": { - "display_name": "Max Tokens", - "default": 256, - "type": "int", - "show": True - }, - "temperature": { - "display_name": "Temperature", - "default": 0.75, - "type": "float", - "show": True - }, + "cohere_api_key": {"display_name": "Cohere API Key", "type": "password", "password": True}, + "max_tokens": {"display_name": "Max Tokens", "default": 256, "type": "int", "show": True}, + "temperature": {"display_name": "Temperature", "default": 0.75, "type": "float", "show": True}, } def build( diff --git a/src/backend/langflow/components/llms/LlamaCpp.py b/src/backend/langflow/components/llms/LlamaCpp.py index 109bb1a7b..d10c9bec9 100644 --- a/src/backend/langflow/components/llms/LlamaCpp.py +++ b/src/backend/langflow/components/llms/LlamaCpp.py @@ -1,8 +1,8 @@ - from typing import Optional, List, Dict, Any from langflow import CustomComponent from langchain_community.llms.llamacpp import LlamaCpp + class LlamaCppComponent(CustomComponent): display_name = "LlamaCpp" description = "llama.cpp model." @@ -24,7 +24,12 @@ class LlamaCppComponent(CustomComponent): "max_tokens": {"display_name": "Max Tokens", "advanced": True}, "metadata": {"display_name": "Metadata", "advanced": True}, "model_kwargs": {"display_name": "Model Kwargs", "advanced": True}, - "model_path": {"display_name": "Model Path","field_type":"file", "file_types":[".bin"],"required":True}, + "model_path": { + "display_name": "Model Path", + "field_type": "file", + "file_types": [".bin"], + "required": True, + }, "n_batch": {"display_name": "N Batch", "advanced": True}, "n_ctx": {"display_name": "N Ctx", "advanced": True}, "n_gpu_layers": {"display_name": "N GPU Layers", "advanced": True}, diff --git a/src/backend/langflow/components/llms/OpenAI.py b/src/backend/langflow/components/llms/OpenAI.py index 15091f6e7..f4f26db2f 100644 --- a/src/backend/langflow/components/llms/OpenAI.py +++ b/src/backend/langflow/components/llms/OpenAI.py @@ -1,7 +1,9 @@ +from typing import Dict, Optional + +from langchain_openai.llms.base import OpenAI from langflow import CustomComponent -from typing import Optional, Dict -from langchain_openai.llms.base import OpenAI + class OpenAIComponent(CustomComponent): display_name = "OpenAI" @@ -41,12 +43,12 @@ class OpenAIComponent(CustomComponent): self, max_tokens: Optional[int] = 256, model_kwargs: Optional[Dict] = None, - model_name: Optional[str] = "text-davinci-003", + model_name: str = "text-davinci-003", openai_api_base: Optional[str] = "", openai_api_key: str = "", temperature: Optional[float] = 0.7, ) -> OpenAI: - if(not openai_api_base): + if not openai_api_base: openai_api_base = "https://api.openai.com/v1" return OpenAI( max_tokens=max_tokens, diff --git a/src/backend/langflow/components/llms/VertexAI.py b/src/backend/langflow/components/llms/VertexAI.py index 84f36330b..74f862c25 100644 --- a/src/backend/langflow/components/llms/VertexAI.py +++ b/src/backend/langflow/components/llms/VertexAI.py @@ -1,9 +1,9 @@ - from langflow import CustomComponent from langchain.llms import BaseLLM from typing import Optional, Union, Callable, Dict from langchain_community.llms.vertexai import VertexAI + class VertexAIComponent(CustomComponent): display_name = "VertexAI" description = "Google Vertex AI large language models" @@ -20,7 +20,7 @@ class VertexAIComponent(CustomComponent): "location": { "display_name": "Location", "type": "str", - "advanced":True, + "advanced": True, "value": "us-central1", "required": False, }, @@ -29,14 +29,14 @@ class VertexAIComponent(CustomComponent): "field_type": "int", "value": 128, "required": False, - "advanced":True + "advanced": True, }, "max_retries": { "display_name": "Max Retries", "type": "int", "value": 6, "required": False, - "advanced":True + "advanced": True, }, "metadata": { "display_name": "Metadata", @@ -51,7 +51,7 @@ class VertexAIComponent(CustomComponent): "required": False, }, "n": { - "advanced":True, + "advanced": True, "display_name": "N", "field_type": "int", "value": 1, @@ -68,42 +68,36 @@ class VertexAIComponent(CustomComponent): "field_type": "int", "value": 5, "required": False, - "advanced":True + "advanced": True, }, "streaming": { "display_name": "Streaming", "field_type": "bool", "value": False, "required": False, - "advanced":True + "advanced": True, }, "temperature": { "display_name": "Temperature", "field_type": "float", "value": 0.0, "required": False, - "advanced":True - }, - "top_k": { - "display_name": "Top K", - "type": "int", - "default": 40, - "required": False, - "advanced":True + "advanced": True, }, + "top_k": {"display_name": "Top K", "type": "int", "default": 40, "required": False, "advanced": True}, "top_p": { "display_name": "Top P", "field_type": "float", "value": 0.95, "required": False, - "advanced":True + "advanced": True, }, "tuned_model_name": { "display_name": "Tuned Model Name", "type": "str", "required": False, "value": None, - "advanced":True + "advanced": True, }, "verbose": { "display_name": "Verbose", @@ -111,10 +105,7 @@ class VertexAIComponent(CustomComponent): "value": False, "required": False, }, - "name":{ - "display_name":"Name", - "field_type":"str" - }, + "name": {"display_name": "Name", "field_type": "str"}, } def build( @@ -126,7 +117,7 @@ class VertexAIComponent(CustomComponent): metadata: Dict = None, model_name: str = "text-bison", n: int = 1, - name:Optional[str] = None, + name: Optional[str] = None, project: Optional[str] = None, request_parallelism: int = 5, streaming: bool = False, diff --git a/src/backend/langflow/components/retrievers/MultiQueryRetriever.py b/src/backend/langflow/components/retrievers/MultiQueryRetriever.py index 762756794..8c95d6d2a 100644 --- a/src/backend/langflow/components/retrievers/MultiQueryRetriever.py +++ b/src/backend/langflow/components/retrievers/MultiQueryRetriever.py @@ -1,4 +1,3 @@ - from langflow import CustomComponent from langchain.retrievers import MultiQueryRetriever from typing import Optional, Union, Callable @@ -8,6 +7,7 @@ from langflow.field_typing import ( BaseRetriever, ) + class MultiQueryRetrieverComponent(CustomComponent): display_name = "MultiQueryRetriever" description = "Initialize from llm using default template." @@ -16,22 +16,25 @@ class MultiQueryRetrieverComponent(CustomComponent): def build_config(self): return { "llm": {"display_name": "LLM"}, - "prompt": {"display_name": "Prompt", "default": { - "input_variables": ["question"], - "input_types": {}, - "output_parser": None, - "partial_variables": {}, - "template": 'You are an AI language model assistant. Your task is \n' - 'to generate 3 different versions of the given user \n' - 'question to retrieve relevant documents from a vector database. \n' - 'By generating multiple perspectives on the user question, \n' - 'your goal is to help the user overcome some of the limitations \n' - 'of distance-based similarity search. Provide these alternative \n' - 'questions separated by newlines. Original question: {question}', - "template_format": "f-string", - "validate_template": False, - "_type": "prompt" - }}, + "prompt": { + "display_name": "Prompt", + "default": { + "input_variables": ["question"], + "input_types": {}, + "output_parser": None, + "partial_variables": {}, + "template": "You are an AI language model assistant. Your task is \n" + "to generate 3 different versions of the given user \n" + "question to retrieve relevant documents from a vector database. \n" + "By generating multiple perspectives on the user question, \n" + "your goal is to help the user overcome some of the limitations \n" + "of distance-based similarity search. Provide these alternative \n" + "questions separated by newlines. Original question: {question}", + "template_format": "f-string", + "validate_template": False, + "_type": "prompt", + }, + }, "retriever": {"display_name": "Retriever"}, "parser_key": {"display_name": "Parser Key", "default": "lines"}, } diff --git a/src/backend/langflow/components/textsplitters/CharacterTextSplitter.py b/src/backend/langflow/components/textsplitters/CharacterTextSplitter.py index aa8fc77f2..d65c28dab 100644 --- a/src/backend/langflow/components/textsplitters/CharacterTextSplitter.py +++ b/src/backend/langflow/components/textsplitters/CharacterTextSplitter.py @@ -1,4 +1,3 @@ - from langflow import CustomComponent from langchain.text_splitter import CharacterTextSplitter from langchain_core.documents.base import Document diff --git a/src/backend/langflow/components/textsplitters/LanguageRecursiveTextSplitter.py b/src/backend/langflow/components/textsplitters/LanguageRecursiveTextSplitter.py index 636eb427e..1cea7a29b 100644 --- a/src/backend/langflow/components/textsplitters/LanguageRecursiveTextSplitter.py +++ b/src/backend/langflow/components/textsplitters/LanguageRecursiveTextSplitter.py @@ -1,7 +1,9 @@ from typing import Optional -from langflow import CustomComponent -from langchain.text_splitter import Language + from langchain.schema import Document +from langchain.text_splitter import Language + +from langflow import CustomComponent class LanguageRecursiveTextSplitterComponent(CustomComponent): @@ -48,7 +50,7 @@ class LanguageRecursiveTextSplitterComponent(CustomComponent): documents: list[Document], chunk_size: Optional[int] = 1000, chunk_overlap: Optional[int] = 200, - separator_type: Optional[str] = "Python", + separator_type: str = "Python", ) -> list[Document]: """ Split text into chunks of a specified length. diff --git a/src/backend/langflow/components/toolkits/JsonToolkit.py b/src/backend/langflow/components/toolkits/JsonToolkit.py index 70e3355e4..ec9e49621 100644 --- a/src/backend/langflow/components/toolkits/JsonToolkit.py +++ b/src/backend/langflow/components/toolkits/JsonToolkit.py @@ -13,4 +13,4 @@ class JsonToolkitComponent(CustomComponent): } def build(self, spec: JsonSpec) -> JsonToolkit: - return JsonToolkit(spec=spec) \ No newline at end of file + return JsonToolkit(spec=spec) diff --git a/src/backend/langflow/components/toolkits/VectorStoreInfo.py b/src/backend/langflow/components/toolkits/VectorStoreInfo.py index 27a5b3792..48e5d9d9f 100644 --- a/src/backend/langflow/components/toolkits/VectorStoreInfo.py +++ b/src/backend/langflow/components/toolkits/VectorStoreInfo.py @@ -1,9 +1,9 @@ - from langflow import CustomComponent from langchain.vectorstores import VectorStore from typing import Union, Callable from langchain.agents.agent_toolkits.vectorstore.toolkit import VectorStoreInfo + class VectorStoreInfoComponent(CustomComponent): display_name = "VectorStoreInfo" description = "Information about a VectorStore" diff --git a/src/backend/langflow/components/toolkits/VectorStoreRouterToolkit.py b/src/backend/langflow/components/toolkits/VectorStoreRouterToolkit.py index fb1c66ef4..ed8797044 100644 --- a/src/backend/langflow/components/toolkits/VectorStoreRouterToolkit.py +++ b/src/backend/langflow/components/toolkits/VectorStoreRouterToolkit.py @@ -1,9 +1,9 @@ - from langflow import CustomComponent from typing import List, Union from langchain.agents.agent_toolkits.vectorstore.toolkit import VectorStoreRouterToolkit from langchain.agents.agent_toolkits.vectorstore.toolkit import VectorStoreInfo -from langflow.field_typing import BaseLanguageModel,Tool +from langflow.field_typing import BaseLanguageModel, Tool + class VectorStoreRouterToolkitComponent(CustomComponent): display_name = "VectorStoreRouterToolkit" @@ -16,10 +16,8 @@ class VectorStoreRouterToolkitComponent(CustomComponent): } def build( - self, - vectorstores: List[VectorStoreInfo], - llm: BaseLanguageModel - )->Union[Tool,VectorStoreRouterToolkit]: - print("vectorstores",vectorstores) - print("llm",llm) - return VectorStoreRouterToolkit(vectorstores=vectorstores,llm=llm) + self, vectorstores: List[VectorStoreInfo], llm: BaseLanguageModel + ) -> Union[Tool, VectorStoreRouterToolkit]: + print("vectorstores", vectorstores) + print("llm", llm) + return VectorStoreRouterToolkit(vectorstores=vectorstores, llm=llm) diff --git a/src/backend/langflow/components/toolkits/VectorStoreToolkit.py b/src/backend/langflow/components/toolkits/VectorStoreToolkit.py index 58529b373..38b9c9171 100644 --- a/src/backend/langflow/components/toolkits/VectorStoreToolkit.py +++ b/src/backend/langflow/components/toolkits/VectorStoreToolkit.py @@ -1,4 +1,3 @@ - from langflow import CustomComponent from langchain.agents.agent_toolkits.vectorstore.toolkit import VectorStoreToolkit from langchain.agents.agent_toolkits.vectorstore.toolkit import VectorStoreInfo @@ -10,6 +9,7 @@ from langflow.field_typing import ( ) from typing import Union + class VectorStoreToolkitComponent(CustomComponent): display_name = "VectorStoreToolkit" description = "Toolkit for interacting with a Vector Store." @@ -24,5 +24,5 @@ class VectorStoreToolkitComponent(CustomComponent): self, vectorstore_info: VectorStoreInfo, llm: BaseLanguageModel, - ) -> Union[Tool,VectorStoreToolkit]: - return VectorStoreToolkit(vectorstore_info=vectorstore_info,llm=llm) + ) -> Union[Tool, VectorStoreToolkit]: + return VectorStoreToolkit(vectorstore_info=vectorstore_info, llm=llm) diff --git a/src/backend/langflow/components/utilities/BingSearchAPIWrapper.py b/src/backend/langflow/components/utilities/BingSearchAPIWrapper.py index 22443d021..bdb55473f 100644 --- a/src/backend/langflow/components/utilities/BingSearchAPIWrapper.py +++ b/src/backend/langflow/components/utilities/BingSearchAPIWrapper.py @@ -1,4 +1,3 @@ - from typing import Optional from langflow import CustomComponent @@ -30,8 +29,4 @@ class BingSearchAPIWrapperComponent(CustomComponent): k: Optional[int] = 10, ) -> BingSearchAPIWrapper: # 'k' has a default value and is not shown (show=False), so it is hardcoded here - return BingSearchAPIWrapper( - bing_search_url=bing_search_url, - bing_subscription_key=bing_subscription_key, - k=k - ) + return BingSearchAPIWrapper(bing_search_url=bing_search_url, bing_subscription_key=bing_subscription_key, k=k) diff --git a/src/backend/langflow/components/utilities/GoogleSearchAPIWrapper.py b/src/backend/langflow/components/utilities/GoogleSearchAPIWrapper.py index 205087076..37e9afff6 100644 --- a/src/backend/langflow/components/utilities/GoogleSearchAPIWrapper.py +++ b/src/backend/langflow/components/utilities/GoogleSearchAPIWrapper.py @@ -1,4 +1,3 @@ - from langflow import CustomComponent from typing import Union, Callable from langchain_community.utilities.google_search import GoogleSearchAPIWrapper @@ -11,7 +10,7 @@ class GoogleSearchAPIWrapperComponent(CustomComponent): def build_config(self): return { "google_api_key": {"display_name": "Google API Key", "password": True}, - "google_cse_id": {"display_name": "Google CSE ID","password":True}, + "google_cse_id": {"display_name": "Google CSE ID", "password": True}, } def build( diff --git a/src/backend/langflow/components/utilities/GoogleSerperAPIWrapper.py b/src/backend/langflow/components/utilities/GoogleSerperAPIWrapper.py index 0434dec53..84fefedad 100644 --- a/src/backend/langflow/components/utilities/GoogleSerperAPIWrapper.py +++ b/src/backend/langflow/components/utilities/GoogleSerperAPIWrapper.py @@ -1,4 +1,3 @@ - from langflow import CustomComponent from typing import Dict, Optional @@ -21,15 +20,10 @@ class GoogleSerperAPIWrapperComponent(CustomComponent): "name": "result_key_for_type", "advanced": False, "dynamic": False, - "info": '', + "info": "", "field_type": "dict", "list": False, - "value": { - "news": "news", - "places": "places", - "images": "images", - "search": "organic" - } + "value": {"news": "news", "places": "places", "images": "images", "search": "organic"}, }, "serper_api_key": { "display_name": "Serper API Key", @@ -39,10 +33,10 @@ class GoogleSerperAPIWrapperComponent(CustomComponent): "name": "serper_api_key", "advanced": False, "dynamic": False, - "info": '', + "info": "", "type": "str", "list": False, - } + }, } def build( @@ -50,7 +44,4 @@ class GoogleSerperAPIWrapperComponent(CustomComponent): serper_api_key: str, result_key_for_type: Optional[Dict[str, str]] = None, ) -> GoogleSerperAPIWrapper: - return GoogleSerperAPIWrapper( - result_key_for_type=result_key_for_type, - serper_api_key=serper_api_key - ) + return GoogleSerperAPIWrapper(result_key_for_type=result_key_for_type, serper_api_key=serper_api_key) diff --git a/src/backend/langflow/components/utilities/SearxSearchWrapper.py b/src/backend/langflow/components/utilities/SearxSearchWrapper.py index 51464cd0b..d89ecacf2 100644 --- a/src/backend/langflow/components/utilities/SearxSearchWrapper.py +++ b/src/backend/langflow/components/utilities/SearxSearchWrapper.py @@ -1,6 +1,8 @@ from langflow import CustomComponent from typing import Optional, Dict from langchain_community.utilities.searx_search import SearxSearchWrapper + + class SearxSearchWrapperComponent(CustomComponent): display_name = "SearxSearchWrapper" description = "Wrapper for Searx API." @@ -8,17 +10,12 @@ class SearxSearchWrapperComponent(CustomComponent): def build_config(self): return { "headers": { - "field_type":"dict", + "field_type": "dict", "display_name": "Headers", "multiline": True, - "value": '{"Authorization": "Bearer "}' - }, - "k": { - "display_name": "k", - "advanced": True, - "field_type": "int", - "value": 10 + "value": '{"Authorization": "Bearer "}', }, + "k": {"display_name": "k", "advanced": True, "field_type": "int", "value": 10}, "searx_host": { "display_name": "Searx Host", "field_type": "str", @@ -32,5 +29,5 @@ class SearxSearchWrapperComponent(CustomComponent): k: Optional[int] = 10, headers: Optional[Dict[str, str]] = None, searx_host: Optional[str] = None, - )->SearxSearchWrapper: - return SearxSearchWrapper(headers=headers,k=k,searx_host=searx_host) + ) -> SearxSearchWrapper: + return SearxSearchWrapper(headers=headers, k=k, searx_host=searx_host) diff --git a/src/backend/langflow/components/utilities/SerpAPIWrapper.py b/src/backend/langflow/components/utilities/SerpAPIWrapper.py index 79f806957..1513f4c5e 100644 --- a/src/backend/langflow/components/utilities/SerpAPIWrapper.py +++ b/src/backend/langflow/components/utilities/SerpAPIWrapper.py @@ -2,6 +2,7 @@ from langflow import CustomComponent from typing import Callable, Union from langchain_community.utilities.serpapi import SerpAPIWrapper + class SerpAPIWrapperComponent(CustomComponent): display_name = "SerpAPIWrapper" description = "Wrapper around SerpAPI" @@ -9,7 +10,13 @@ class SerpAPIWrapperComponent(CustomComponent): def build_config(self): return { "serpapi_api_key": {"display_name": "SerpAPI API Key", "type": "str", "password": True}, - "params": {"display_name": "Parameters", "type": "dict","advanced":True, "multiline": True,"value": '{"engine": "google","google_domain": "google.com","gl": "us","hl": "en"}'}, + "params": { + "display_name": "Parameters", + "type": "dict", + "advanced": True, + "multiline": True, + "value": '{"engine": "google","google_domain": "google.com","gl": "us","hl": "en"}', + }, } def build( @@ -17,7 +24,4 @@ class SerpAPIWrapperComponent(CustomComponent): serpapi_api_key: str, params: dict, ) -> Union[SerpAPIWrapper, Callable]: # Removed quotes around SerpAPIWrapper - return SerpAPIWrapper( - serpapi_api_key=serpapi_api_key, - params=params - ) \ No newline at end of file + return SerpAPIWrapper(serpapi_api_key=serpapi_api_key, params=params) diff --git a/src/backend/langflow/components/utilities/WikipediaAPIWrapper.py b/src/backend/langflow/components/utilities/WikipediaAPIWrapper.py index f099d78c3..a5dc908d6 100644 --- a/src/backend/langflow/components/utilities/WikipediaAPIWrapper.py +++ b/src/backend/langflow/components/utilities/WikipediaAPIWrapper.py @@ -1,12 +1,12 @@ - from langflow import CustomComponent from typing import Union, Callable from langchain_community.utilities.wikipedia import WikipediaAPIWrapper # Assuming WikipediaAPIWrapper is a class that needs to be imported. -# The import statement is not included as it is not provided in the JSON +# The import statement is not included as it is not provided in the JSON # and the actual implementation details are unknown. + class WikipediaAPIWrapperComponent(CustomComponent): display_name = "WikipediaAPIWrapper" description = "Wrapper around WikipediaAPI." diff --git a/src/backend/langflow/components/utilities/WolframAlphaAPIWrapper.py b/src/backend/langflow/components/utilities/WolframAlphaAPIWrapper.py index 025998b05..72e656a54 100644 --- a/src/backend/langflow/components/utilities/WolframAlphaAPIWrapper.py +++ b/src/backend/langflow/components/utilities/WolframAlphaAPIWrapper.py @@ -1,18 +1,16 @@ - from langflow import CustomComponent from typing import Callable, Union from langchain_community.utilities.wolfram_alpha import WolframAlphaAPIWrapper # Since all the fields in the JSON have show=False, we will only create a basic component # without any configurable fields. + class WolframAlphaAPIWrapperComponent(CustomComponent): display_name = "WolframAlphaAPIWrapper" description = "Wrapper for Wolfram Alpha." def build_config(self): - return { - "appid": {"display_name": "App ID", "type": "str", "password": True} - } + return {"appid": {"display_name": "App ID", "type": "str", "password": True}} - def build(self,appid:str) -> Union[Callable, WolframAlphaAPIWrapper]: - return WolframAlphaAPIWrapper(wolfram_alpha_appid=appid) \ No newline at end of file + def build(self, appid: str) -> Union[Callable, WolframAlphaAPIWrapper]: + return WolframAlphaAPIWrapper(wolfram_alpha_appid=appid) diff --git a/src/backend/langflow/components/vectorstores/FAISS.py b/src/backend/langflow/components/vectorstores/FAISS.py index 2e516e7bc..b171802a2 100644 --- a/src/backend/langflow/components/vectorstores/FAISS.py +++ b/src/backend/langflow/components/vectorstores/FAISS.py @@ -1,4 +1,3 @@ - from langflow import CustomComponent from langchain_community.vectorstores.faiss import FAISS from typing import Optional, List, Union @@ -9,6 +8,7 @@ from langflow.field_typing import ( Embeddings, ) + class FAISSComponent(CustomComponent): display_name = "FAISS" description = "Construct FAISS wrapper from raw documents." @@ -24,5 +24,5 @@ class FAISSComponent(CustomComponent): self, embedding: Embeddings, documents: Optional[List[Document]] = None, - ) -> Union[VectorStore,FAISS,BaseRetriever]: - return FAISS.from_documents(documents=documents,embedding=embedding) + ) -> Union[VectorStore, FAISS, BaseRetriever]: + return FAISS.from_documents(documents=documents, embedding=embedding) diff --git a/src/backend/langflow/components/vectorstores/MongoDBAtlasVectorSearch.py b/src/backend/langflow/components/vectorstores/MongoDBAtlasVectorSearch.py index 1d416780d..b477e8f54 100644 --- a/src/backend/langflow/components/vectorstores/MongoDBAtlasVectorSearch.py +++ b/src/backend/langflow/components/vectorstores/MongoDBAtlasVectorSearch.py @@ -1,4 +1,3 @@ - from langflow import CustomComponent from langchain.vectorstores import MongoDBAtlasVectorSearch from typing import Optional, List @@ -8,6 +7,7 @@ from langflow.field_typing import ( NestedDict, ) + class MongoDBAtlasComponent(CustomComponent): display_name = "MongoDB Atlas" description = "Construct a `MongoDB Atlas Vector Search` vector store from raw documents." diff --git a/src/backend/langflow/components/vectorstores/Pinecone.py b/src/backend/langflow/components/vectorstores/Pinecone.py index 6e62dd766..ca443f2e2 100644 --- a/src/backend/langflow/components/vectorstores/Pinecone.py +++ b/src/backend/langflow/components/vectorstores/Pinecone.py @@ -8,6 +8,8 @@ from langflow.field_typing import ( from langchain.schema import BaseRetriever from langchain.vectorstores.base import VectorStore import pinecone + + class PineconeComponent(CustomComponent): display_name = "Pinecone" description = "Construct Pinecone wrapper from raw documents." @@ -18,8 +20,8 @@ class PineconeComponent(CustomComponent): "embedding": {"display_name": "Embedding", "default": 1000}, "index_name": {"display_name": "Index Name"}, "namespace": {"display_name": "Namespace"}, - "pinecone_api_key": {"display_name": "Pinecone API Key", "default": "","password": True,"required": True}, - "pinecone_env": {"display_name": "Pinecone Environment", "default": "","required": True}, + "pinecone_api_key": {"display_name": "Pinecone API Key", "default": "", "password": True, "required": True}, + "pinecone_env": {"display_name": "Pinecone Environment", "default": "", "required": True}, "search_kwargs": {"display_name": "Search Kwargs", "default": "{}"}, } @@ -30,6 +32,6 @@ class PineconeComponent(CustomComponent): index_name: Optional[str] = None, pinecone_api_key: Optional[str] = None, pinecone_env: Optional[str] = None, - ) -> Union[VectorStore,Pinecone,BaseRetriever]: - pinecone.init(api_key=pinecone_api_key,environment=pinecone_env) - return Pinecone.from_documents(documents=documents,embedding=embedding,index_name=index_name) + ) -> Union[VectorStore, Pinecone, BaseRetriever]: + pinecone.init(api_key=pinecone_api_key, environment=pinecone_env) + return Pinecone.from_documents(documents=documents, embedding=embedding, index_name=index_name) diff --git a/src/backend/langflow/components/vectorstores/SupabaseVectorStore.py b/src/backend/langflow/components/vectorstores/SupabaseVectorStore.py index 6c2b801ec..2e2812e08 100644 --- a/src/backend/langflow/components/vectorstores/SupabaseVectorStore.py +++ b/src/backend/langflow/components/vectorstores/SupabaseVectorStore.py @@ -1,5 +1,5 @@ from langflow import CustomComponent -from typing import Optional, List,Union +from typing import Optional, List, Union from langchain_community.vectorstores.supabase import SupabaseVectorStore from langflow.field_typing import ( Document, @@ -35,6 +35,13 @@ class SupabaseComponent(CustomComponent): supabase_service_key: str = "", supabase_url: str = "", table_name: str = "", - ) -> Union[VectorStore,SupabaseVectorStore,BaseRetriever]: + ) -> Union[VectorStore, SupabaseVectorStore, BaseRetriever]: supabase: Client = create_client(supabase_url, supabase_key=supabase_service_key) - return SupabaseVectorStore.from_documents(documents=documents,embedding=embedding,query_name=query_name,search_kwargs=search_kwargs,client=supabase,table_name=table_name) \ No newline at end of file + return SupabaseVectorStore.from_documents( + documents=documents, + embedding=embedding, + query_name=query_name, + search_kwargs=search_kwargs, + client=supabase, + table_name=table_name, + ) diff --git a/src/backend/langflow/components/vectorstores/Weaviate.py b/src/backend/langflow/components/vectorstores/Weaviate.py index bab1322f7..3f0a208bb 100644 --- a/src/backend/langflow/components/vectorstores/Weaviate.py +++ b/src/backend/langflow/components/vectorstores/Weaviate.py @@ -1,12 +1,12 @@ -import weaviate # type: ignore from typing import Optional, Union -from langflow import CustomComponent -from langchain.vectorstores import Weaviate -from langchain.schema import Document -from langchain.vectorstores.base import VectorStore -from langchain.schema import BaseRetriever +import weaviate # type: ignore from langchain.embeddings.base import Embeddings +from langchain.schema import BaseRetriever, Document +from langchain.vectorstores import Weaviate +from langchain.vectorstores.base import VectorStore + +from langflow import CustomComponent class WeaviateVectorStore(CustomComponent): @@ -45,7 +45,7 @@ class WeaviateVectorStore(CustomComponent): search_by_text: bool = False, api_key: Optional[str] = None, index_name: Optional[str] = None, - text_key: Optional[str] = "text", + text_key: str = "text", embedding: Optional[Embeddings] = None, documents: Optional[Document] = None, attributes: Optional[list] = None,