Class AzureOpenAiChatModel

java.lang.Object
dev.langchain4j.model.azure.AzureOpenAiChatModel
All Implemented Interfaces:
ChatLanguageModel, TokenCountEstimator

public class AzureOpenAiChatModel extends Object implements ChatLanguageModel, TokenCountEstimator
Represents an OpenAI language model, hosted on Azure, that has a chat completion interface, such as gpt-3.5-turbo.

Mandatory parameters for initialization are: endpoint and apikey (or an alternate authentication method, see below for more information). Optionally you can set serviceVersion (if not, the latest version is used) and deploymentName (if not, a default name is used). You can also provide your own OpenAIClient instance, if you need more flexibility.

There are 3 authentication methods:

1. Azure OpenAI API Key Authentication: this is the most common method, using an Azure OpenAI API key. You need to provide the OpenAI API Key as a parameter, using the apiKey() method in the Builder, or the apiKey parameter in the constructor: For example, you would use `builder.apiKey("{key}")`.

2. non-Azure OpenAI API Key Authentication: this method allows to use the OpenAI service, instead of Azure OpenAI. You can use the nonAzureApiKey() method in the Builder, which will also automatically set the endpoint to "https://api.openai.com/v1". For example, you would use `builder.nonAzureApiKey("{key}")`. The constructor requires a KeyCredential instance, which can be created using `new AzureKeyCredential("{key}")`, and doesn't set up the endpoint.

3. Azure OpenAI client with Microsoft Entra ID (formerly Azure Active Directory) credentials. - This requires to add the `com.azure:azure-identity` dependency to your project, which is an optional dependency to this library. - You need to provide a TokenCredential instance, using the tokenCredential() method in the Builder, or the tokenCredential parameter in the constructor. As an example, DefaultAzureCredential can be used to authenticate the client: Set the values of the client ID, tenant ID, and client secret of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, AZURE_CLIENT_SECRET. Then, provide the DefaultAzureCredential instance to the builder: `builder.tokenCredential(new DefaultAzureCredentialBuilder().build())`.

  • Constructor Details

  • Method Details

    • supportedCapabilities

      public Set<Capability> supportedCapabilities()
      Specified by:
      supportedCapabilities in interface ChatLanguageModel
    • generate

      public Response<AiMessage> generate(List<ChatMessage> messages)
      Description copied from interface: ChatLanguageModel
      Generates a response from the model based on a sequence of messages. Typically, the sequence contains messages in the following order: System (optional) - User - AI - User - AI - User ...
      Specified by:
      generate in interface ChatLanguageModel
      Parameters:
      messages - A list of messages.
      Returns:
      The response generated by the model.
    • generate

      public Response<AiMessage> generate(List<ChatMessage> messages, List<ToolSpecification> toolSpecifications)
      Description copied from interface: ChatLanguageModel
      Generates a response from the model based on a list of messages and a list of tool specifications. The response may either be a text message or a request to execute one of the specified tools. Typically, the list contains messages in the following order: System (optional) - User - AI - User - AI - User ...
      Specified by:
      generate in interface ChatLanguageModel
      Parameters:
      messages - A list of messages.
      toolSpecifications - A list of tools that the model is allowed to execute. The model autonomously decides whether to use any of these tools.
      Returns:
      The response generated by the model. AiMessage can contain either a textual response or a request to execute one of the tools.
    • generate

      public Response<AiMessage> generate(List<ChatMessage> messages, ToolSpecification toolSpecification)
      Description copied from interface: ChatLanguageModel
      Generates a response from the model based on a list of messages and a single tool specification. The model is forced to execute the specified tool. This is usually achieved by setting `tool_choice=ANY` in the LLM provider API.
      Typically, the list contains messages in the following order: System (optional) - User - AI - User - AI - User ...
      Specified by:
      generate in interface ChatLanguageModel
      Parameters:
      messages - A list of messages.
      toolSpecification - The specification of a tool that must be executed. The model is forced to execute this tool.
      Returns:
      The response generated by the model. AiMessage contains a request to execute the specified tool.
    • chat

      public ChatResponse chat(ChatRequest request)
      Description copied from interface: ChatLanguageModel
      This is the main API to interact with the chat model. All the existing generate(...) methods (see below) will be deprecated and removed before 1.0.0 release.

      A temporary default implementation of this method is necessary until all ChatLanguageModel implementations adopt it. It should be removed once that occurs.

      Specified by:
      chat in interface ChatLanguageModel
      Parameters:
      request - a ChatRequest, containing all the inputs to the LLM
      Returns:
      a ChatResponse, containing all the outputs from the LLM
    • estimateTokenCount

      public int estimateTokenCount(List<ChatMessage> messages)
      Description copied from interface: TokenCountEstimator
      Estimates the count of tokens in the specified list of messages.
      Specified by:
      estimateTokenCount in interface TokenCountEstimator
      Parameters:
      messages - the list of messages
      Returns:
      the estimated count of tokens
    • builder

      public static AzureOpenAiChatModel.Builder builder()