| from langchain_openai import AzureOpenAIEmbeddings |
|
|
| from langflow.base.models.model import LCModelComponent |
| from langflow.base.models.openai_constants import OPENAI_EMBEDDING_MODEL_NAMES |
| from langflow.field_typing import Embeddings |
| from langflow.io import DropdownInput, IntInput, MessageTextInput, Output, SecretStrInput |
|
|
|
|
| class AzureOpenAIEmbeddingsComponent(LCModelComponent): |
| display_name: str = "Azure OpenAI Embeddings" |
| description: str = "Generate embeddings using Azure OpenAI models." |
| documentation: str = "https://python.langchain.com/docs/integrations/text_embedding/azureopenai" |
| icon = "Azure" |
| name = "AzureOpenAIEmbeddings" |
|
|
| API_VERSION_OPTIONS = [ |
| "2022-12-01", |
| "2023-03-15-preview", |
| "2023-05-15", |
| "2023-06-01-preview", |
| "2023-07-01-preview", |
| "2023-08-01-preview", |
| ] |
|
|
| inputs = [ |
| DropdownInput( |
| name="model", |
| display_name="Model", |
| advanced=False, |
| options=OPENAI_EMBEDDING_MODEL_NAMES, |
| value=OPENAI_EMBEDDING_MODEL_NAMES[0], |
| ), |
| MessageTextInput( |
| name="azure_endpoint", |
| display_name="Azure Endpoint", |
| required=True, |
| info="Your Azure endpoint, including the resource. Example: `https://example-resource.azure.openai.com/`", |
| ), |
| MessageTextInput( |
| name="azure_deployment", |
| display_name="Deployment Name", |
| required=True, |
| ), |
| DropdownInput( |
| name="api_version", |
| display_name="API Version", |
| options=API_VERSION_OPTIONS, |
| value=API_VERSION_OPTIONS[-1], |
| advanced=True, |
| ), |
| SecretStrInput( |
| name="api_key", |
| display_name="API Key", |
| required=True, |
| ), |
| IntInput( |
| name="dimensions", |
| display_name="Dimensions", |
| info="The number of dimensions the resulting output embeddings should have. " |
| "Only supported by certain models.", |
| advanced=True, |
| ), |
| ] |
|
|
| outputs = [ |
| Output(display_name="Embeddings", name="embeddings", method="build_embeddings"), |
| ] |
|
|
| def build_embeddings(self) -> Embeddings: |
| try: |
| embeddings = AzureOpenAIEmbeddings( |
| model=self.model, |
| azure_endpoint=self.azure_endpoint, |
| azure_deployment=self.azure_deployment, |
| api_version=self.api_version, |
| api_key=self.api_key, |
| dimensions=self.dimensions or None, |
| ) |
| except Exception as e: |
| msg = f"Could not connect to AzureOpenAIEmbeddings API: {e}" |
| raise ValueError(msg) from e |
|
|
| return embeddings |
|
|