From a9fb94f91c84833d5c2df8f50b6cbb9c5922c95c Mon Sep 17 00:00:00 2001 From: Lily Du Date: Tue, 11 Jun 2024 10:06:42 -0700 Subject: [PATCH] [repo] fix: removed HTTPS client requirement (#1718) ## Linked issues closes: #1698 ## Details - removed client check HTTPS error throwing ## Attestation Checklist - [x] My code follows the style guidelines of this project - I have checked for/fixed spelling, linting, and other errors - I have commented my code for clarity - I have made corresponding changes to the documentation (updating the doc strings in the code is sufficient) - My changes generate no new warnings - I have added tests that validates my changes, and provides sufficient test coverage. I have tested with: - Local testing - E2E testing in Teams - New and existing unit tests pass locally with my changes --- .../AITests/Models/OpenAIModelTests.cs | 14 -------------- .../AI/Embeddings/OpenAIEmbeddings.cs | 5 +---- .../AI/Models/AzureOpenAIModelOptions.cs | 4 ---- .../Microsoft.TeamsAI/AI/Models/OpenAIModel.cs | 4 ---- .../teams-ai/src/internals/OpenAIClient.spec.ts | 13 ------------- js/packages/teams-ai/src/internals/OpenAIClient.ts | 6 ------ js/packages/teams-ai/src/models/OpenAIModel.ts | 6 ------ 7 files changed, 1 insertion(+), 51 deletions(-) diff --git a/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI.Tests/AITests/Models/OpenAIModelTests.cs b/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI.Tests/AITests/Models/OpenAIModelTests.cs index 19333a308..31cb0792c 100644 --- a/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI.Tests/AITests/Models/OpenAIModelTests.cs +++ b/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI.Tests/AITests/Models/OpenAIModelTests.cs @@ -28,20 +28,6 @@ public void Test_Constructor_OpenAI() new OpenAIModel(options); } - [Fact] - public void Test_Constructor_AzureOpenAI_InvalidAzureEndpoint() - { - // Arrange - var options = new AzureOpenAIModelOptions("test-key", "test-deployment", "https://test.openai.azure.com/"); - options.AzureEndpoint = "test-endpoint"; - - // Act - Exception exception = Assert.Throws(() => new OpenAIModel(options)); - - // Assert - Assert.Equal("Model created with an invalid endpoint of `test-endpoint`. The endpoint must be a valid HTTPS url.", exception.Message); - } - [Fact] public void Test_Constructor_AzureOpenAI_InvalidAzureApiVersion() { diff --git a/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI/AI/Embeddings/OpenAIEmbeddings.cs b/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI/AI/Embeddings/OpenAIEmbeddings.cs index 36d10727b..614e21d5d 100644 --- a/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI/AI/Embeddings/OpenAIEmbeddings.cs +++ b/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI/AI/Embeddings/OpenAIEmbeddings.cs @@ -75,10 +75,7 @@ public OpenAIEmbeddings(AzureOpenAIEmbeddingsOptions options, ILoggerFactory? lo Verify.ParamNotNull(options.AzureApiKey, "AzureOpenAIEmbeddingsOptions.AzureApiKey"); Verify.ParamNotNull(options.AzureDeployment, "AzureOpenAIEmbeddingsOptions.AzureDeployment"); Verify.ParamNotNull(options.AzureEndpoint, "AzureOpenAIEmbeddingsOptions.AzureEndpoint"); - if (!options.AzureEndpoint.StartsWith("https://")) - { - throw new ArgumentException($"Model created with an invalid endpoint of `{options.AzureEndpoint}`. The endpoint must be a valid HTTPS url."); - } + string apiVersion = options.AzureApiVersion ?? "2023-05-15"; ServiceVersion? serviceVersion = ConvertStringToServiceVersion(apiVersion); if (serviceVersion == null) diff --git a/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI/AI/Models/AzureOpenAIModelOptions.cs b/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI/AI/Models/AzureOpenAIModelOptions.cs index 770fb7680..4ff9373bf 100644 --- a/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI/AI/Models/AzureOpenAIModelOptions.cs +++ b/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI/AI/Models/AzureOpenAIModelOptions.cs @@ -44,10 +44,6 @@ public AzureOpenAIModelOptions( Verify.ParamNotNull(azureEndpoint); azureEndpoint = azureEndpoint.Trim(); - if (!azureEndpoint.StartsWith("https://")) - { - throw new ArgumentException($"Model created with an invalid endpoint of `{azureEndpoint}`. The endpoint must be a valid HTTPS url."); - } this.AzureApiKey = azureApiKey; this.AzureDefaultDeployment = azureDefaultDeployment; diff --git a/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI/AI/Models/OpenAIModel.cs b/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI/AI/Models/OpenAIModel.cs index 397059836..0dcbb2d4c 100644 --- a/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI/AI/Models/OpenAIModel.cs +++ b/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI/AI/Models/OpenAIModel.cs @@ -91,10 +91,6 @@ public OpenAIModel(AzureOpenAIModelOptions options, ILoggerFactory? loggerFactor Verify.ParamNotNull(options.AzureApiKey, "AzureOpenAIModelOptions.AzureApiKey"); Verify.ParamNotNull(options.AzureDefaultDeployment, "AzureOpenAIModelOptions.AzureDefaultDeployment"); Verify.ParamNotNull(options.AzureEndpoint, "AzureOpenAIModelOptions.AzureEndpoint"); - if (!options.AzureEndpoint.StartsWith("https://")) - { - throw new ArgumentException($"Model created with an invalid endpoint of `{options.AzureEndpoint}`. The endpoint must be a valid HTTPS url."); - } string apiVersion = options.AzureApiVersion ?? "2024-02-15-preview"; ServiceVersion? serviceVersion = ConvertStringToServiceVersion(apiVersion); if (serviceVersion == null) diff --git a/js/packages/teams-ai/src/internals/OpenAIClient.spec.ts b/js/packages/teams-ai/src/internals/OpenAIClient.spec.ts index 32ed07990..934a631e5 100644 --- a/js/packages/teams-ai/src/internals/OpenAIClient.spec.ts +++ b/js/packages/teams-ai/src/internals/OpenAIClient.spec.ts @@ -14,10 +14,6 @@ describe('OpenAIClient', () => { const options: OpenAIClientOptions = { apiKey: 'mock-key' }; - const optionsWithInvalidEndpoint: OpenAIClientOptions = { - apiKey: 'mock-key', - endpoint: 'www.' - }; const optionsWithEmptyAPIKey: OpenAIClientOptions = { apiKey: '' }; @@ -106,15 +102,6 @@ describe('OpenAIClient', () => { assert.equal(openAIClient.options.apiKey, options.apiKey); }); - it('should throw error due to invalid endpoint', () => { - assert.throws( - () => new OpenAIClient(optionsWithInvalidEndpoint), - new Error( - `OpenAIClient initialized with an invalid endpoint of '${optionsWithInvalidEndpoint.endpoint}'. The endpoint must be a valid HTTPS url.` - ) - ); - }); - it('should throw error due to invalid api key', () => { assert.throws( () => new OpenAIClient(optionsWithEmptyAPIKey), diff --git a/js/packages/teams-ai/src/internals/OpenAIClient.ts b/js/packages/teams-ai/src/internals/OpenAIClient.ts index e4c782c16..7c027f770 100644 --- a/js/packages/teams-ai/src/internals/OpenAIClient.ts +++ b/js/packages/teams-ai/src/internals/OpenAIClient.ts @@ -57,12 +57,6 @@ export class OpenAIClient { if (options.endpoint.endsWith('/')) { options.endpoint = options.endpoint.substring(0, options.endpoint.length - 1); } - - if (!options.endpoint.toLowerCase().startsWith('https://')) { - throw new Error( - `OpenAIClient initialized with an invalid endpoint of '${options.endpoint}'. The endpoint must be a valid HTTPS url.` - ); - } } // Validate API key diff --git a/js/packages/teams-ai/src/models/OpenAIModel.ts b/js/packages/teams-ai/src/models/OpenAIModel.ts index ea5fb43c5..f5dd9c2ce 100644 --- a/js/packages/teams-ai/src/models/OpenAIModel.ts +++ b/js/packages/teams-ai/src/models/OpenAIModel.ts @@ -188,12 +188,6 @@ export class OpenAIModel implements PromptCompletionModel { endpoint = endpoint.substring(0, endpoint.length - 1); } - if (!endpoint.toLowerCase().startsWith('https://')) { - throw new Error( - `Model created with an invalid endpoint of '${endpoint}'. The endpoint must be a valid HTTPS url.` - ); - } - this.options.azureEndpoint = endpoint; } else { this._useAzure = false;