Skip to content

Commit 3240d18

Browse files
committed
Added friendlier error message when a model is chosen that doesn't have reasoning capabilities
1 parent 27e8a43 commit 3240d18

10 files changed

Lines changed: 118 additions & 13 deletions

File tree

Modules/Intent.Modules.AI.AutoImplementation/Intent.AI.AutoImplementation.imodspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<package>
33
<id>Intent.AI.AutoImplementation</id>
4-
<version>1.0.0-beta.16</version>
4+
<version>1.0.0-beta.17</version>
55
<supportedClientVersions>[4.5.18-a,5.0.0)</supportedClientVersions>
66
<summary>AI auto-implementation of business logic capabilities for the Services designer. By default, uses Open AI and requires an API Key.</summary>
77
<description>AI auto-implementation of business logic capabilities for the Services designer. By default, uses Open AI and requires an API Key.</description>

Modules/Intent.Modules.AI.AutoImplementation/Intent.Metadata/Module Builder/Intent.AI.AutoImplementation/Intent.AI.AutoImplementation.pkg.config

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
<definitionPackageName>Intent.ModuleBuilder</definitionPackageName>
3535
<definitionPackageId>9972b2a9-b749-4bba-b5c8-824bf694c6ef</definitionPackageId>
3636
<properties>
37-
<property name="4bb9695b-6004-46e1-acea-c48c60c5f8ce" display="Version" value="1.0.0-beta.16" isActive="true" />
37+
<property name="4bb9695b-6004-46e1-acea-c48c60c5f8ce" display="Version" value="1.0.0-beta.17" isActive="true" />
3838
<property name="177a2415-e749-46e7-8257-440e19ecfb5e" display="API Namespace" isActive="true" />
3939
<property name="0d2ae582-090e-42d6-a7d6-689144433254" display="NuGet Package Id" isActive="true" />
4040
<property name="27cf6544-a9a2-4992-9fef-51d0ed49e66e" display="NuGet Package Version" value="" isActive="true" />

Modules/Intent.Modules.AI.AutoImplementation/Tasks/Helpers/KernelFunctionExtensions.cs

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.Collections.Generic;
3+
using Intent.Exceptions;
34
using Microsoft.SemanticKernel;
45

56
namespace Intent.Modules.AI.AutoImplementation.Tasks.Helpers;
@@ -23,7 +24,23 @@ public static FileChangesResult InvokeFileChangesPrompt(this KernelFunction kern
2324
}
2425
arguments["previousError"] = previousError;
2526

26-
var result = kernelFunction.InvokeAsync(kernel, arguments).Result;
27+
FunctionResult result;
28+
try
29+
{
30+
result = kernelFunction.InvokeAsync(kernel, arguments).GetAwaiter().GetResult();
31+
}
32+
catch (Exception ex)
33+
{
34+
var rootException = GetRootException(ex);
35+
var message = rootException.Message;
36+
37+
if (message.Contains("reasoning_effort", StringComparison.OrdinalIgnoreCase))
38+
{
39+
throw new FriendlyException(@"The selected model does not have thinking capabilities. Please choose a different model or set the thinking level to 'None'.");
40+
}
41+
42+
throw;
43+
}
2744

2845
if (FileChangesHelper.TryGetFileChangesResult(result, out fileChangesResult))
2946
{
@@ -40,4 +57,20 @@ public static FileChangesResult InvokeFileChangesPrompt(this KernelFunction kern
4057

4158
return fileChangesResult;
4259
}
60+
61+
private static Exception GetRootException(Exception exception)
62+
{
63+
if (exception is AggregateException aggregateException)
64+
{
65+
var flattened = aggregateException.Flatten();
66+
if (flattened.InnerExceptions.Count == 1)
67+
{
68+
return GetRootException(flattened.InnerExceptions[0]);
69+
}
70+
71+
return flattened;
72+
}
73+
74+
return exception.InnerException is null ? exception : GetRootException(exception.InnerException);
75+
}
4376
}

Modules/Intent.Modules.AI.Blazor/Intent.AI.Blazor.imodspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<package>
33
<id>Intent.AI.Blazor</id>
4-
<version>1.0.0-beta.18</version>
4+
<version>1.0.0-beta.19</version>
55
<supportedClientVersions>[4.5.18-a,5.0.0)</supportedClientVersions>
66
<summary>AI support for auto-implementing unit tests based on existing application service implementations.</summary>
77
<description>AI support for auto-implementing unit tests based on existing application service implementations.</description>

Modules/Intent.Modules.AI.Blazor/Intent.Metadata/Module Builder/Intent.AI.Blazor/Intent.AI.Blazor.pkg.config

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
<definitionPackageName>Intent.ModuleBuilder</definitionPackageName>
3232
<definitionPackageId>9972b2a9-b749-4bba-b5c8-824bf694c6ef</definitionPackageId>
3333
<properties>
34-
<property name="4bb9695b-6004-46e1-acea-c48c60c5f8ce" display="Version" value="1.0.0-beta.18" isActive="true" />
34+
<property name="4bb9695b-6004-46e1-acea-c48c60c5f8ce" display="Version" value="1.0.0-beta.19" isActive="true" />
3535
<property name="177a2415-e749-46e7-8257-440e19ecfb5e" display="API Namespace" isActive="true" />
3636
<property name="0d2ae582-090e-42d6-a7d6-689144433254" display="NuGet Package Id" isActive="true" />
3737
<property name="27cf6544-a9a2-4992-9fef-51d0ed49e66e" display="NuGet Package Version" value="" isActive="true" />

Modules/Intent.Modules.AI.Blazor/Tasks/Helpers/KernelFunctionExtensions.cs

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.Collections.Generic;
3+
using Intent.Exceptions;
34
using Microsoft.SemanticKernel;
45

56
namespace Intent.Modules.AI.Blazor.Tasks.Helpers;
@@ -17,10 +18,29 @@ public static FileChangesResult InvokeFileChangesPrompt(this KernelFunction kern
1718

1819
for (var i = 0; i < maxAttempts; i++)
1920
{
20-
arguments ??= new KernelArguments();
21+
if (arguments is null)
22+
{
23+
arguments = new KernelArguments();
24+
}
2125
arguments["previousError"] = previousError;
2226

23-
var result = kernelFunction.InvokeAsync(kernel, arguments).Result;
27+
FunctionResult result;
28+
try
29+
{
30+
result = kernelFunction.InvokeAsync(kernel, arguments).GetAwaiter().GetResult();
31+
}
32+
catch (Exception ex)
33+
{
34+
var rootException = GetRootException(ex);
35+
var message = rootException.Message;
36+
37+
if (message.Contains("reasoning_effort", StringComparison.OrdinalIgnoreCase))
38+
{
39+
throw new FriendlyException(@"The selected model does not have thinking capabilities. Please choose a different model or set the thinking level to 'None'.");
40+
}
41+
42+
throw;
43+
}
2444

2545
if (FileChangesHelper.TryGetFileChangesResult(result, out fileChangesResult))
2646
{
@@ -37,4 +57,20 @@ public static FileChangesResult InvokeFileChangesPrompt(this KernelFunction kern
3757

3858
return fileChangesResult;
3959
}
60+
61+
private static Exception GetRootException(Exception exception)
62+
{
63+
if (exception is AggregateException aggregateException)
64+
{
65+
var flattened = aggregateException.Flatten();
66+
if (flattened.InnerExceptions.Count == 1)
67+
{
68+
return GetRootException(flattened.InnerExceptions[0]);
69+
}
70+
71+
return flattened;
72+
}
73+
74+
return exception.InnerException is null ? exception : GetRootException(exception.InnerException);
75+
}
4076
}

Modules/Intent.Modules.AI.UnitTests/Intent.AI.UnitTests.imodspec

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<package>
33
<id>Intent.AI.UnitTests</id>
4-
<version>1.0.0-beta.14</version>
4+
<version>1.0.0-beta.15</version>
55
<supportedClientVersions>[4.5.18-a,5.0.0)</supportedClientVersions>
66
<summary>AI support for auto-implementing unit tests based on existing application service implementations.</summary>
77
<description>AI support for auto-implementing unit tests based on existing application service implementations.</description>
@@ -14,7 +14,7 @@
1414
<moduleSettings></moduleSettings>
1515
<dependencies>
1616
<dependency id="Intent.Common" version="3.7.2" />
17-
<dependency id="Intent.Common.AI" version="1.0.0-beta.9" />
17+
<dependency id="Intent.Common.AI" version="1.0.0-beta.10" />
1818
<dependency id="Intent.Common.Types" version="3.4.0" />
1919
<dependency id="Intent.Modelers.Services" version="3.9.3" />
2020
<dependency id="Intent.Modelers.Services.CQRS" version="5.1.3" />

Modules/Intent.Modules.AI.UnitTests/Intent.Metadata/Module Builder/Intent.AI.UnitTests/Intent.AI.UnitTests.pkg.config

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
<definitionPackageName>Intent.ModuleBuilder</definitionPackageName>
3535
<definitionPackageId>9972b2a9-b749-4bba-b5c8-824bf694c6ef</definitionPackageId>
3636
<properties>
37-
<property name="4bb9695b-6004-46e1-acea-c48c60c5f8ce" display="Version" value="1.0.0-beta.14" isActive="true" />
37+
<property name="4bb9695b-6004-46e1-acea-c48c60c5f8ce" display="Version" value="1.0.0-beta.15" isActive="true" />
3838
<property name="177a2415-e749-46e7-8257-440e19ecfb5e" display="API Namespace" isActive="true" />
3939
<property name="0d2ae582-090e-42d6-a7d6-689144433254" display="NuGet Package Id" isActive="true" />
4040
<property name="27cf6544-a9a2-4992-9fef-51d0ed49e66e" display="NuGet Package Version" value="" isActive="true" />

Modules/Intent.Modules.AI.UnitTests/Tasks/Helpers/KernelFunctionExtensions.cs

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.Collections.Generic;
3+
using Intent.Exceptions;
34
using Microsoft.SemanticKernel;
45

56
namespace Intent.Modules.AI.UnitTests.Tasks.Helpers;
@@ -17,10 +18,29 @@ public static FileChangesResult InvokeFileChangesPrompt(this KernelFunction kern
1718

1819
for (var i = 0; i < maxAttempts; i++)
1920
{
20-
arguments ??= new KernelArguments();
21+
if (arguments is null)
22+
{
23+
arguments = new KernelArguments();
24+
}
2125
arguments["previousError"] = previousError;
2226

23-
var result = kernelFunction.InvokeAsync(kernel, arguments).Result;
27+
FunctionResult result;
28+
try
29+
{
30+
result = kernelFunction.InvokeAsync(kernel, arguments).GetAwaiter().GetResult();
31+
}
32+
catch (Exception ex)
33+
{
34+
var rootException = GetRootException(ex);
35+
var message = rootException.Message;
36+
37+
if (message.Contains("reasoning_effort", StringComparison.OrdinalIgnoreCase))
38+
{
39+
throw new FriendlyException(@"The selected model does not have thinking capabilities. Please choose a different model or set the thinking level to 'None'.");
40+
}
41+
42+
throw;
43+
}
2444

2545
if (FileChangesHelper.TryGetFileChangesResult(result, out fileChangesResult))
2646
{
@@ -37,4 +57,20 @@ public static FileChangesResult InvokeFileChangesPrompt(this KernelFunction kern
3757

3858
return fileChangesResult;
3959
}
60+
61+
private static Exception GetRootException(Exception exception)
62+
{
63+
if (exception is AggregateException aggregateException)
64+
{
65+
var flattened = aggregateException.Flatten();
66+
if (flattened.InnerExceptions.Count == 1)
67+
{
68+
return GetRootException(flattened.InnerExceptions[0]);
69+
}
70+
71+
return flattened;
72+
}
73+
74+
return exception.InnerException is null ? exception : GetRootException(exception.InnerException);
75+
}
4076
}

Tests/BlazorServerTests/modules.config

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<modules>
3-
<module moduleId="Intent.AI.Blazor" version="1.0.0-beta.18" supportedClientVersions="[4.5.18-a,5.0.0)" />
3+
<module moduleId="Intent.AI.Blazor" version="1.0.0-beta.19" supportedClientVersions="[4.5.18-a,5.0.0)" />
44
<module moduleId="Intent.Application.AutoMapper" version="5.3.1" supportedClientVersions="[4.1.0-pre.0, 5.0.0-a)" />
55
<module moduleId="Intent.Application.Contracts" version="5.1.1" supportedClientVersions="[4.5.0-a, 5.0.0-a)" />
66
<module moduleId="Intent.Application.DependencyInjection" version="4.1.11-pre.0" supportedClientVersions="[4.5.15-a, 5.0.0-a)" />

0 commit comments

Comments
 (0)