# AzureOpenAIExtensions Methods

- Package: [Aspire.Hosting.Azure.CognitiveServices](/reference/api/csharp/aspire.hosting.azure.cognitiveservices.md)
- Type: [AzureOpenAIExtensions](/reference/api/csharp/aspire.hosting.azure.cognitiveservices/azureopenaiextensions.md)
- Kind: `Methods`
- Members: `5`

Provides extension methods for adding the Azure OpenAI resources to the application model.

## AddAzureOpenAI(IDistributedApplicationBuilder, string)

- Name: `AddAzureOpenAI(IDistributedApplicationBuilder, string)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<AzureOpenAIResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/cbc352350f1a9bafbaff10d14a2c8de4ac186a48/src/Aspire.Hosting.Azure.CognitiveServices/AzureOpenAIExtensions.cs#L38-L120)

Adds an Azure OpenAI resource to the application model.

```csharp
public static class AzureOpenAIExtensions
{
    public static IResourceBuilder<AzureOpenAIResource> AddAzureOpenAI(
        this IDistributedApplicationBuilder builder,
        string name)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IDistributedApplicationBuilder`)
  The `Hosting.IDistributedApplicationBuilder`.
- `name` (`string`)
  The name of the resource. This name will be used as the connection string name when referenced in a dependency.

## Returns

`IResourceBuilder<AzureOpenAIResource>` -- A reference to the `ApplicationModel.IResourceBuilder`1`.

## Remarks

By default references to the Azure OpenAI resource will be assigned the following roles: - `CognitiveServicesBuiltInRole.CognitiveServicesOpenAIContributor` These can be replaced by calling [AzureOpenAIExtensions.WithRoleAssignments(IResourceBuilder<T>, IResourceBuilder<AzureOpenAIResource>, CognitiveServicesBuiltInRole[])](/reference/api/csharp/aspire.hosting.azure.cognitiveservices/azureopenaiextensions/methods.md#withroleassignments-iresourcebuilder-t-iresourcebuilder-azureopenairesource-cognitiveservicesbuiltinrole).

## ATS metadata

### ATS export

- Available to Polyglot AppHosts through the Aspire Type System.

## AddDeployment(IResourceBuilder<AzureOpenAIResource>, AzureOpenAIDeployment)

> **Obsolete:** AddDeployment taking an AzureOpenAIDeployment is deprecated. Please the AddDeployment overload that returns an AzureOpenAIDeploymentResource instead.

- Name: `AddDeployment(IResourceBuilder<AzureOpenAIResource>, AzureOpenAIDeployment)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<AzureOpenAIResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/cbc352350f1a9bafbaff10d14a2c8de4ac186a48/src/Aspire.Hosting.Azure.CognitiveServices/AzureOpenAIExtensions.cs#L171-L176)

Adds an Azure OpenAI Deployment to the [AzureOpenAIResource](/reference/api/csharp/aspire.hosting.azure.cognitiveservices/azureopenairesource.md) resource. This resource requires an [AzureOpenAIResource](/reference/api/csharp/aspire.hosting.azure.cognitiveservices/azureopenairesource.md) to be added to the application model.

```csharp
public static class AzureOpenAIExtensions
{
    public static IResourceBuilder<AzureOpenAIResource> AddDeployment(
        this IResourceBuilder<AzureOpenAIResource> builder,
        AzureOpenAIDeployment deployment)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<AzureOpenAIResource>`)
  The Azure OpenAI resource builder.
- `deployment` ([AzureOpenAIDeployment](/reference/api/csharp/aspire.hosting.azure.cognitiveservices/azureopenaideployment.md))
  The deployment to add.

## Returns

`IResourceBuilder<AzureOpenAIResource>` -- A reference to the `ApplicationModel.IResourceBuilder`1`.

## Remarks

This method is not available in polyglot app hosts. Use [AzureOpenAIExtensions.AddDeployment(IResourceBuilder<AzureOpenAIResource>, AzureOpenAIDeployment)](/reference/api/csharp/aspire.hosting.azure.cognitiveservices/azureopenaiextensions/methods.md#adddeployment-iresourcebuilder-azureopenairesource-azureopenaideployment) instead.

## ATS metadata

### Ignored by ATS

- Excluded from automatic Polyglot export.

## AddDeployment(IResourceBuilder<AzureOpenAIResource>, string, string, string)

- Name: `AddDeployment(IResourceBuilder<AzureOpenAIResource>, string, string, string)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<AzureOpenAIDeploymentResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/cbc352350f1a9bafbaff10d14a2c8de4ac186a48/src/Aspire.Hosting.Azure.CognitiveServices/AzureOpenAIExtensions.cs#L192-L200)

Adds and returns an Azure OpenAI Deployment resource to the [AzureOpenAIResource](/reference/api/csharp/aspire.hosting.azure.cognitiveservices/azureopenairesource.md) resource.

```csharp
public static class AzureOpenAIExtensions
{
    public static IResourceBuilder<AzureOpenAIDeploymentResource> AddDeployment(
        this IResourceBuilder<AzureOpenAIResource> builder,
        string name,
        string modelName,
        string modelVersion)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<AzureOpenAIResource>`)
  The Azure OpenAI resource builder.
- `name` (`string`)
  The name of the Azure OpenAI Deployment resource.
- `modelName` (`string`)
  The name of the model to deploy.
- `modelVersion` (`string`)
  The version of the model to deploy.

## Returns

`IResourceBuilder<AzureOpenAIDeploymentResource>` -- A reference to the `ApplicationModel.IResourceBuilder`1`.

## ATS metadata

### ATS export

- Available to Polyglot AppHosts through the Aspire Type System.

## WithProperties(IResourceBuilder<AzureOpenAIDeploymentResource>, Action<AzureOpenAIDeploymentResource>)

- Name: `WithProperties(IResourceBuilder<AzureOpenAIDeploymentResource>, Action<AzureOpenAIDeploymentResource>)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<AzureOpenAIDeploymentResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/cbc352350f1a9bafbaff10d14a2c8de4ac186a48/src/Aspire.Hosting.Azure.CognitiveServices/AzureOpenAIExtensions.cs#L213-L218)

Allows setting the properties of an Azure OpenAI Deployment resource.

```csharp
public static class AzureOpenAIExtensions
{
    public static IResourceBuilder<AzureOpenAIDeploymentResource> WithProperties(
        this IResourceBuilder<AzureOpenAIDeploymentResource> builder,
        Action<AzureOpenAIDeploymentResource> configure)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<AzureOpenAIDeploymentResource>`)
  The Azure OpenAI Deployment resource builder.
- `configure` (`Action<AzureOpenAIDeploymentResource>`)
  A method that can be used for customizing the [AzureOpenAIDeploymentResource](/reference/api/csharp/aspire.hosting.azure.cognitiveservices/azureopenaideploymentresource.md).

## Returns

`IResourceBuilder<AzureOpenAIDeploymentResource>` -- A reference to the `ApplicationModel.IResourceBuilder`1`.

## ATS metadata

### ATS export

- Available to Polyglot AppHosts through the Aspire Type System.

## WithRoleAssignments(IResourceBuilder<T>, IResourceBuilder<AzureOpenAIResource>, CognitiveServicesBuiltInRole[])

- Name: `WithRoleAssignments(IResourceBuilder<T>, IResourceBuilder<AzureOpenAIResource>, CognitiveServicesBuiltInRole[])`
- Modifiers: `extension`
- Returns: `IResourceBuilder<T>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/cbc352350f1a9bafbaff10d14a2c8de4ac186a48/src/Aspire.Hosting.Azure.CognitiveServices/AzureOpenAIExtensions.cs)

Assigns the specified roles to the given resource, granting it the necessary permissions on the target Azure OpenAI resource. This replaces the default role assignments for the resource.

```csharp
public static class AzureOpenAIExtensions
{
    public static IResourceBuilder<T> WithRoleAssignments<T>(
        this IResourceBuilder<T> builder,
        IResourceBuilder<AzureOpenAIResource> target,
        params CognitiveServicesBuiltInRole[] roles)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<T>`)
  The resource to which the specified roles will be assigned.
- `target` (`IResourceBuilder<AzureOpenAIResource>`)
  The target Azure OpenAI resource.
- `roles` (`CognitiveServicesBuiltInRole[]`)
  The built-in Cognitive Services roles to be assigned.

## Returns

`IResourceBuilder<T>` -- The updated `ApplicationModel.IResourceBuilder`1` with the applied role assignments.

## Remarks

This overload is not available in polyglot app hosts. Use the enum-based overload instead. Assigns the CognitiveServicesOpenAIUser role to the 'Projects.Api' project.

```csharp
var builder = DistributedApplication.CreateBuilder(args);

var openai = builder.AddAzureOpenAI("openai");

var api = builder.AddProject<Projects.Api>("api")
  .WithRoleAssignments(openai, CognitiveServicesBuiltInRole.CognitiveServicesOpenAIUser)
  .WithReference(openai);
```

## ATS metadata

### Ignored by ATS

- Excluded from automatic Polyglot export.
