# AspireAzureOpenAIExtensions Methods

- Package: [Aspire.Azure.AI.OpenAI](/reference/api/csharp/aspire.azure.ai.openai.md)
- Type: [AspireAzureOpenAIExtensions](/reference/api/csharp/aspire.azure.ai.openai/aspireazureopenaiextensions.md)
- Kind: `Methods`
- Members: `2`

Provides extension methods for registering `OpenAI.AzureOpenAIClient` as a singleton in the services provided by the `Hosting.IHostApplicationBuilder`.

## AddAzureOpenAIClient(IHostApplicationBuilder, string, Action<AzureOpenAISettings>, Action<IAzureClientBuilder<AzureOpenAIClient, AzureOpenAIClientOptions>>)

- Name: `AddAzureOpenAIClient(IHostApplicationBuilder, string, Action<AzureOpenAISettings>, Action<IAzureClientBuilder<AzureOpenAIClient, AzureOpenAIClientOptions>>)`
- Modifiers: `extension`
- Returns: [AspireAzureOpenAIClientBuilder](/reference/api/csharp/aspire.azure.ai.openai/aspireazureopenaiclientbuilder.md)
- Source: [GitHub](https://github.com/microsoft/aspire/blob/5bd693ae1897dee5e2ce71c2cc08879c1c7eff51/src/Components/Aspire.Azure.AI.OpenAI/AspireAzureOpenAIExtensions.cs#L44-L53)

Registers `OpenAI.AzureOpenAIClient` as a singleton in the services provided by the `builder`. Additionally, registers the `OpenAI.AzureOpenAIClient` as an `OpenAIClient` service.

```csharp
public static class AspireAzureOpenAIExtensions
{
    public static AspireAzureOpenAIClientBuilder AddAzureOpenAIClient(
        this IHostApplicationBuilder builder,
        string connectionName,
        Action<AzureOpenAISettings>? configureSettings = null,
        Action<IAzureClientBuilder<AzureOpenAIClient, AzureOpenAIClientOptions>>? configureClientBuilder = null)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IHostApplicationBuilder`)
  The `Hosting.IHostApplicationBuilder` to read config from and add services to.
- `connectionName` (`string`)
  A name used to retrieve the connection string from the ConnectionStrings configuration section.
- `configureSettings` (`Action<AzureOpenAISettings>`) `optional`
  An optional method that can be used for customizing the [AzureOpenAISettings](/reference/api/csharp/aspire.azure.ai.openai/azureopenaisettings.md). It's invoked after the settings are read from the configuration.
- `configureClientBuilder` (`Action<IAzureClientBuilder<AzureOpenAIClient, AzureOpenAIClientOptions>>`) `optional`
  An optional method that can be used for customizing the `Extensions.IAzureClientBuilder`2`.

## Returns

[AspireAzureOpenAIClientBuilder](/reference/api/csharp/aspire.azure.ai.openai/aspireazureopenaiclientbuilder.md) -- An [AspireAzureOpenAIClientBuilder](/reference/api/csharp/aspire.azure.ai.openai/aspireazureopenaiclientbuilder.md) that can be used to register additional services.

## Remarks

Reads the configuration from "Aspire.Azure.AI.OpenAI" section.

## AddKeyedAzureOpenAIClient(IHostApplicationBuilder, string, Action<AzureOpenAISettings>, Action<IAzureClientBuilder<AzureOpenAIClient, AzureOpenAIClientOptions>>)

- Name: `AddKeyedAzureOpenAIClient(IHostApplicationBuilder, string, Action<AzureOpenAISettings>, Action<IAzureClientBuilder<AzureOpenAIClient, AzureOpenAIClientOptions>>)`
- Modifiers: `extension`
- Returns: [AspireAzureOpenAIClientBuilder](/reference/api/csharp/aspire.azure.ai.openai/aspireazureopenaiclientbuilder.md)
- Source: [GitHub](https://github.com/microsoft/aspire/blob/5bd693ae1897dee5e2ce71c2cc08879c1c7eff51/src/Components/Aspire.Azure.AI.OpenAI/AspireAzureOpenAIExtensions.cs#L73-L82)

Registers `OpenAI.AzureOpenAIClient` as a singleton for given `name` in the services provided by the `builder`. Additionally, registers the `OpenAI.AzureOpenAIClient` as an `OpenAIClient` service.

```csharp
public static class AspireAzureOpenAIExtensions
{
    public static AspireAzureOpenAIClientBuilder AddKeyedAzureOpenAIClient(
        this IHostApplicationBuilder builder,
        string name,
        Action<AzureOpenAISettings>? configureSettings = null,
        Action<IAzureClientBuilder<AzureOpenAIClient, AzureOpenAIClientOptions>>? configureClientBuilder = null)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IHostApplicationBuilder`)
  The `Hosting.IHostApplicationBuilder` to read config from and add services to.
- `name` (`string`)
  The name of the component, which is used as the `ServiceDescriptor.ServiceKey` of the service and also to retrieve the connection string from the ConnectionStrings configuration section.
- `configureSettings` (`Action<AzureOpenAISettings>`) `optional`
  An optional method that can be used for customizing the [AzureOpenAISettings](/reference/api/csharp/aspire.azure.ai.openai/azureopenaisettings.md). It's invoked after the settings are read from the configuration.
- `configureClientBuilder` (`Action<IAzureClientBuilder<AzureOpenAIClient, AzureOpenAIClientOptions>>`) `optional`
  An optional method that can be used for customizing the `Extensions.IAzureClientBuilder`2`.

## Returns

[AspireAzureOpenAIClientBuilder](/reference/api/csharp/aspire.azure.ai.openai/aspireazureopenaiclientbuilder.md) -- An [AspireAzureOpenAIClientBuilder](/reference/api/csharp/aspire.azure.ai.openai/aspireazureopenaiclientbuilder.md) that can be used to register additional services.

## Remarks

Reads the configuration from "Aspire.Azure.AI.OpenAI:{name}" section.
