| | 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: |
| | 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 |
| |
|