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