Spaces:
Running
Running
| from langchain_mistralai.embeddings import MistralAIEmbeddings | |
| from pydantic.v1 import SecretStr | |
| from langflow.base.models.model import LCModelComponent | |
| from langflow.field_typing import Embeddings | |
| from langflow.io import DropdownInput, IntInput, MessageTextInput, Output, SecretStrInput | |
| class MistralAIEmbeddingsComponent(LCModelComponent): | |
| display_name = "MistralAI Embeddings" | |
| description = "Generate embeddings using MistralAI models." | |
| icon = "MistralAI" | |
| name = "MistalAIEmbeddings" | |
| inputs = [ | |
| DropdownInput( | |
| name="model", | |
| display_name="Model", | |
| advanced=False, | |
| options=["mistral-embed"], | |
| value="mistral-embed", | |
| ), | |
| SecretStrInput(name="mistral_api_key", display_name="Mistral API Key"), | |
| IntInput( | |
| name="max_concurrent_requests", | |
| display_name="Max Concurrent Requests", | |
| advanced=True, | |
| value=64, | |
| ), | |
| IntInput(name="max_retries", display_name="Max Retries", advanced=True, value=5), | |
| IntInput(name="timeout", display_name="Request Timeout", advanced=True, value=120), | |
| MessageTextInput( | |
| name="endpoint", | |
| display_name="API Endpoint", | |
| advanced=True, | |
| value="https://api.mistral.ai/v1/", | |
| ), | |
| ] | |
| outputs = [ | |
| Output(display_name="Embeddings", name="embeddings", method="build_embeddings"), | |
| ] | |
| def build_embeddings(self) -> Embeddings: | |
| if not self.mistral_api_key: | |
| msg = "Mistral API Key is required" | |
| raise ValueError(msg) | |
| api_key = SecretStr(self.mistral_api_key).get_secret_value() | |
| return MistralAIEmbeddings( | |
| api_key=api_key, | |
| model=self.model, | |
| endpoint=self.endpoint, | |
| max_concurrent_requests=self.max_concurrent_requests, | |
| max_retries=self.max_retries, | |
| timeout=self.timeout, | |
| ) | |