from langflow.base.models.model import LCModelComponent from langflow.field_typing import Embeddings from langflow.io import BoolInput, FileInput, FloatInput, IntInput, MessageTextInput, Output class VertexAIEmbeddingsComponent(LCModelComponent): display_name = "VertexAI Embeddings" description = "Generate embeddings using Google Cloud VertexAI models." icon = "VertexAI" name = "VertexAIEmbeddings" inputs = [ FileInput( name="credentials", display_name="Credentials", info="JSON credentials file. Leave empty to fallback to environment variables", value="", file_types=["json"], ), MessageTextInput(name="location", display_name="Location", value="us-central1", advanced=True), MessageTextInput(name="project", display_name="Project", info="The project ID.", advanced=True), IntInput(name="max_output_tokens", display_name="Max Output Tokens", advanced=True), IntInput(name="max_retries", display_name="Max Retries", value=1, advanced=True), MessageTextInput(name="model_name", display_name="Model Name", value="textembedding-gecko"), IntInput(name="n", display_name="N", value=1, advanced=True), IntInput(name="request_parallelism", value=5, display_name="Request Parallelism", advanced=True), MessageTextInput(name="stop_sequences", display_name="Stop", advanced=True, is_list=True), BoolInput(name="streaming", display_name="Streaming", value=False, advanced=True), FloatInput(name="temperature", value=0.0, display_name="Temperature"), IntInput(name="top_k", display_name="Top K", advanced=True), FloatInput(name="top_p", display_name="Top P", value=0.95, advanced=True), ] outputs = [ Output(display_name="Embeddings", name="embeddings", method="build_embeddings"), ] def build_embeddings(self) -> Embeddings: try: from langchain_google_vertexai import VertexAIEmbeddings except ImportError as e: msg = "Please install the langchain-google-vertexai package to use the VertexAIEmbeddings component." raise ImportError(msg) from e from google.oauth2 import service_account if self.credentials: gcloud_credentials = service_account.Credentials.from_service_account_file(self.credentials) else: # will fallback to environment variable or inferred from gcloud CLI gcloud_credentials = None return VertexAIEmbeddings( credentials=gcloud_credentials, location=self.location, max_output_tokens=self.max_output_tokens or None, max_retries=self.max_retries, model_name=self.model_name, n=self.n, project=self.project, request_parallelism=self.request_parallelism, stop=self.stop_sequences or None, streaming=self.streaming, temperature=self.temperature, top_k=self.top_k or None, top_p=self.top_p, )