From b3e512f55f71bf8e713b63280d4bb58353381cef Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Wed, 9 Aug 2023 14:37:20 -0300 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20feat(PromptRunner.py):=20add=20Prom?= =?UTF-8?q?ptRunner=20component=20to=20run=20a=20Chain=20with=20a=20given?= =?UTF-8?q?=20PromptTemplate=20=E2=9C=A8=20feat(Vectara.py):=20add=20Vecta?= =?UTF-8?q?raComponent=20to=20implement=20Vector=20Store=20using=20Vectara?= =?UTF-8?q?=20=F0=9F=94=A7=20chore(vectorstores):=20add=20empty=20=5F=5Fin?= =?UTF-8?q?it=5F=5F.py=20file=20to=20the=20vectorstores=20directory?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../{prompt_runner.py => PromptRunner.py} | 0 .../components/vectorstores/Vectara.py | 46 +++++++++++++++++++ .../components/vectorstores/__init__.py | 0 3 files changed, 46 insertions(+) rename src/backend/langflow/components/chains/{prompt_runner.py => PromptRunner.py} (100%) create mode 100644 src/backend/langflow/components/vectorstores/Vectara.py create mode 100644 src/backend/langflow/components/vectorstores/__init__.py diff --git a/src/backend/langflow/components/chains/prompt_runner.py b/src/backend/langflow/components/chains/PromptRunner.py similarity index 100% rename from src/backend/langflow/components/chains/prompt_runner.py rename to src/backend/langflow/components/chains/PromptRunner.py diff --git a/src/backend/langflow/components/vectorstores/Vectara.py b/src/backend/langflow/components/vectorstores/Vectara.py new file mode 100644 index 000000000..6092b1b04 --- /dev/null +++ b/src/backend/langflow/components/vectorstores/Vectara.py @@ -0,0 +1,46 @@ +from typing import Optional, Union +from langflow import CustomComponent + +from langchain.vectorstores import Vectara +from langchain.schema import Document +from langchain.vectorstores.base import VectorStore +from langchain.schema import BaseRetriever + + +class VectaraComponent(CustomComponent): + display_name: str = "Vectara" + description: str = "Implementation of Vector Store using Vectara" + documentation = ( + "https://python.langchain.com/docs/integrations/vectorstores/vectara" + ) + beta = True + # api key should be password = True + field_config = { + "vectara_customer_id": {"display_name": "Vectara Customer ID"}, + "vectara_corpus_id": {"display_name": "Vectara Corpus ID"}, + "vectara_api_key": {"display_name": "Vectara API Key", "password": True}, + "code": {"show": False}, + "documents": {"display_name": "Documents"}, + } + + def build( + self, + documents: Optional[Document], + vectara_customer_id: str, + vectara_corpus_id: str, + vectara_api_key: str, + ) -> Union[VectorStore, BaseRetriever]: + # If documents, then we need to create a Vectara instance using .from_documents + if documents: + return Vectara.from_documents( + documents=documents, + vectara_customer_id=vectara_customer_id, + vectara_corpus_id=vectara_corpus_id, + vectara_api_key=vectara_api_key, + ) + + return Vectara( + vectara_customer_id=vectara_customer_id, + vectara_corpus_id=vectara_corpus_id, + vectara_api_key=vectara_api_key, + ) diff --git a/src/backend/langflow/components/vectorstores/__init__.py b/src/backend/langflow/components/vectorstores/__init__.py new file mode 100644 index 000000000..e69de29bb