Spaces:
Running
Running
| from langchain_openai import AzureChatOpenAI | |
| from langflow.base.models.model import LCModelComponent | |
| from langflow.field_typing import LanguageModel | |
| from langflow.inputs import MessageTextInput | |
| from langflow.inputs.inputs import HandleInput | |
| from langflow.io import DropdownInput, FloatInput, IntInput, SecretStrInput | |
| class AzureChatOpenAIComponent(LCModelComponent): | |
| display_name: str = "Azure OpenAI" | |
| description: str = "Generate text using Azure OpenAI LLMs." | |
| documentation: str = "https://python.langchain.com/docs/integrations/llms/azure_openai" | |
| beta = False | |
| icon = "Azure" | |
| name = "AzureOpenAIModel" | |
| AZURE_OPENAI_API_VERSIONS = [ | |
| "2024-06-01", | |
| "2024-07-01-preview", | |
| "2024-08-01-preview", | |
| "2024-09-01-preview", | |
| "2024-10-01-preview", | |
| "2023-05-15", | |
| "2023-12-01-preview", | |
| "2024-02-15-preview", | |
| "2024-03-01-preview", | |
| ] | |
| inputs = [ | |
| *LCModelComponent._base_inputs, | |
| MessageTextInput( | |
| name="azure_endpoint", | |
| display_name="Azure Endpoint", | |
| info="Your Azure endpoint, including the resource. Example: `https://example-resource.azure.openai.com/`", | |
| required=True, | |
| ), | |
| MessageTextInput(name="azure_deployment", display_name="Deployment Name", required=True), | |
| SecretStrInput(name="api_key", display_name="API Key"), | |
| DropdownInput( | |
| name="api_version", | |
| display_name="API Version", | |
| options=sorted(AZURE_OPENAI_API_VERSIONS, reverse=True), | |
| value=next( | |
| ( | |
| version | |
| for version in sorted(AZURE_OPENAI_API_VERSIONS, reverse=True) | |
| if not version.endswith("-preview") | |
| ), | |
| AZURE_OPENAI_API_VERSIONS[0], | |
| ), | |
| ), | |
| FloatInput(name="temperature", display_name="Temperature", value=0.7), | |
| IntInput( | |
| name="max_tokens", | |
| display_name="Max Tokens", | |
| advanced=True, | |
| info="The maximum number of tokens to generate. Set to 0 for unlimited tokens.", | |
| ), | |
| HandleInput( | |
| name="output_parser", | |
| display_name="Output Parser", | |
| info="The parser to use to parse the output of the model", | |
| advanced=True, | |
| input_types=["OutputParser"], | |
| ), | |
| ] | |
| def build_model(self) -> LanguageModel: # type: ignore[type-var] | |
| azure_endpoint = self.azure_endpoint | |
| azure_deployment = self.azure_deployment | |
| api_version = self.api_version | |
| api_key = self.api_key | |
| temperature = self.temperature | |
| max_tokens = self.max_tokens | |
| stream = self.stream | |
| try: | |
| output = AzureChatOpenAI( | |
| azure_endpoint=azure_endpoint, | |
| azure_deployment=azure_deployment, | |
| api_version=api_version, | |
| api_key=api_key, | |
| temperature=temperature, | |
| max_tokens=max_tokens or None, | |
| streaming=stream, | |
| ) | |
| except Exception as e: | |
| msg = f"Could not connect to AzureOpenAI API: {e}" | |
| raise ValueError(msg) from e | |
| return output | |