Add Azure OpenAI Custom Model Integration (#1001)
Fixes #710 This PR implements comprehensive Azure OpenAI integration for Dyad, enabling users to leverage Azure OpenAI models through proper environment variable configuration. The implementation adds Azure as a supported provider with full integration into the existing language model architecture, including support for GPT-5 models. Key features include environment-based configuration using `AZURE_API_KEY` and `AZURE_RESOURCE_NAME`, specialized UI components that provide clear setup instructions and status indicators, and seamless integration with Dyad's existing provider system. The Azure provider leverages the @ai-sdk/azure package (v1.3.25) for compatibility with the current TypeScript language model interfaces. The implementation includes robust error handling for missing configuration, comprehensive test coverage with 9 new unit tests covering critical functionality like model client creation and error scenarios, and an E2E test for the Azure-specific settings UI. <img width="1510" height="908" alt="Screenshot 2025-08-18 at 9 14 32 PM" src="https://github.com/user-attachments/assets/04aa99e1-1590-4bb0-86c9-a67b97bc7500" /> --------- Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com> Co-authored-by: Will Chen <willchen90@gmail.com>
This commit is contained in:
@@ -673,7 +673,7 @@ export class PageObject {
|
||||
|
||||
async selectModel({ provider, model }: { provider: string; model: string }) {
|
||||
await this.page.getByRole("button", { name: "Model: Auto" }).click();
|
||||
await this.page.getByText(provider).click();
|
||||
await this.page.getByText(provider, { exact: true }).click();
|
||||
await this.page.getByText(model, { exact: true }).click();
|
||||
}
|
||||
|
||||
@@ -701,6 +701,23 @@ export class PageObject {
|
||||
.click();
|
||||
}
|
||||
|
||||
async selectTestAzureModel() {
|
||||
await this.page.getByRole("button", { name: "Model: Auto" }).click();
|
||||
await this.page.getByText("Azure OpenAI", { exact: true }).click();
|
||||
await this.page.getByText("GPT-5", { exact: true }).click();
|
||||
}
|
||||
|
||||
async setUpAzure({ autoApprove = false }: { autoApprove?: boolean } = {}) {
|
||||
await this.githubConnector.clearPushEvents();
|
||||
await this.goToSettingsTab();
|
||||
if (autoApprove) {
|
||||
await this.toggleAutoApprove();
|
||||
}
|
||||
// Azure should already be configured via environment variables
|
||||
// so we don't need additional setup steps like setUpDyadProvider
|
||||
await this.goToAppsTab();
|
||||
}
|
||||
|
||||
async setUpTestProvider() {
|
||||
await this.page.getByText("Add custom providerConnect to").click();
|
||||
// Fill out provider dialog
|
||||
|
||||
Reference in New Issue
Block a user