Skip to content

Commit 790fc6c

Browse files
committed
Added claud support
1 parent 673cd5a commit 790fc6c

File tree

7 files changed

+47
-0
lines changed

7 files changed

+47
-0
lines changed

Directory.Packages.props

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
<PackageVersion Include="AdaptiveCards.ObjectModel.WinUI3" Version="2.0.0-beta" />
88
<PackageVersion Include="AdaptiveCards.Rendering.WinUI3" Version="2.1.0-beta" />
99
<PackageVersion Include="AdaptiveCards.Templating" Version="2.0.5" />
10+
<PackageVersion Include="AWSSDK.BedrockRuntime" Version="4.0.7.2" />
11+
<PackageVersion Include="AWSSDK.Core" Version="4.0.0.32" />
1012
<PackageVersion Include="boost" Version="1.87.0" TargetFramework="native" />
1113
<PackageVersion Include="boost_regex-vc143" Version="1.87.0" TargetFramework="native" />
1214
<PackageVersion Include="CommunityToolkit.Labs.WinUI.Controls.OpacityMaskView" Version="0.1.251101-build.2372" />
@@ -56,6 +58,7 @@
5658
<PackageVersion Include="Microsoft.AI.Foundry.Local" Version="0.3.0" />
5759
<PackageVersion Include="Microsoft.SemanticKernel" Version="1.66.0" />
5860
<PackageVersion Include="Microsoft.SemanticKernel.Connectors.OpenAI" Version="1.66.0" />
61+
<PackageVersion Include="Microsoft.SemanticKernel.Connectors.Amazon" Version="1.66.0-alpha" />
5962
<PackageVersion Include="Microsoft.SemanticKernel.Connectors.AzureAIInference" Version="1.66.0-beta" />
6063
<PackageVersion Include="Microsoft.SemanticKernel.Connectors.Google" Version="1.66.0-alpha" />
6164
<PackageVersion Include="Microsoft.SemanticKernel.Connectors.MistralAI" Version="1.66.0-alpha" />

src/modules/AdvancedPaste/AdvancedPaste/AdvancedPaste.csproj

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,9 @@
5959
<PackageReference Include="CommunityToolkit.WinUI.Controls.Primitives" />
6060
<!-- Including MessagePack to force version, since it's used by StreamJsonRpc but contains vulnerabilities. After StreamJsonRpc updates the version of MessagePack, we can upgrade StreamJsonRpc instead. -->
6161
<PackageReference Include="MessagePack" />
62+
<PackageReference Include="AWSSDK.BedrockRuntime" />
63+
<PackageReference Include="AWSSDK.Core" />
64+
<PackageReference Include="Microsoft.SemanticKernel.Connectors.Amazon" />
6265
<PackageReference Include="Microsoft.SemanticKernel.Connectors.AzureAIInference" />
6366
<PackageReference Include="Microsoft.SemanticKernel.Connectors.Google" />
6467
<PackageReference Include="Microsoft.SemanticKernel.Connectors.MistralAI" />

src/modules/AdvancedPaste/AdvancedPaste/Services/CustomActions/SemanticKernelPasteProvider.cs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@
88
using System.Threading.Tasks;
99
using AdvancedPaste.Helpers;
1010
using AdvancedPaste.Models;
11+
using Amazon;
12+
using Amazon.BedrockRuntime;
13+
using Amazon.Runtime;
1114
using Microsoft.PowerToys.Settings.UI.Library;
1215
using Microsoft.SemanticKernel;
1316
using Microsoft.SemanticKernel.ChatCompletion;
@@ -29,6 +32,7 @@ public sealed class SemanticKernelPasteProvider : IPasteAIProvider
2932
AIServiceType.Google,
3033
AIServiceType.AzureAIInference,
3134
AIServiceType.Ollama,
35+
AIServiceType.Bedrock,
3236
};
3337

3438
public static PasteAIProviderRegistration Registration { get; } = new(SupportedTypes, config => new SemanticKernelPasteProvider(config));
@@ -160,6 +164,18 @@ private Kernel CreateKernel()
160164
case AIServiceType.Ollama:
161165
kernelBuilder.AddOllamaChatCompletion(_config.Model, endpoint: new Uri(endpoint));
162166
break;
167+
case AIServiceType.Bedrock:
168+
var region = RequireEndpoint(endpoint, _serviceType);
169+
var parts = apiKey.Split(':');
170+
if (parts.Length != 2)
171+
{
172+
throw new ArgumentException("API Key for Bedrock must be in the format 'AccessKey:SecretKey'");
173+
}
174+
175+
var credentials = new BasicAWSCredentials(parts[0], parts[1]);
176+
var bedrockRuntime = new AmazonBedrockRuntimeClient(credentials, RegionEndpoint.GetBySystemName(region));
177+
kernelBuilder.AddBedrockChatCompletionService(_config.Model, bedrockRuntime: bedrockRuntime, serviceId: _config.Model);
178+
break;
163179

164180
default:
165181
throw new NotSupportedException($"Provider '{_config.ProviderType}' is not supported by {nameof(SemanticKernelPasteProvider)}");

src/settings-ui/Settings.UI.Library/AIServiceType.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,5 +19,6 @@ public enum AIServiceType
1919
Google,
2020
AzureAIInference,
2121
Ollama,
22+
Bedrock,
2223
}
2324
}

src/settings-ui/Settings.UI.Library/AIServiceTypeExtensions.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ public static AIServiceType ToAIServiceType(this string serviceType)
3131
"google" or "googleai" or "googlegemini" => AIServiceType.Google,
3232
"azureaiinference" or "azureinference" => AIServiceType.AzureAIInference,
3333
"ollama" => AIServiceType.Ollama,
34+
"bedrock" => AIServiceType.Bedrock,
3435
_ => AIServiceType.Unknown,
3536
};
3637
}
@@ -51,6 +52,7 @@ public static string ToConfigurationString(this AIServiceType serviceType)
5152
AIServiceType.Google => "Google",
5253
AIServiceType.AzureAIInference => "AzureAIInference",
5354
AIServiceType.Ollama => "Ollama",
55+
AIServiceType.Bedrock => "Bedrock",
5456
AIServiceType.Unknown => string.Empty,
5557
_ => throw new ArgumentOutOfRangeException(nameof(serviceType), serviceType, "Unsupported AI service type."),
5658
};
@@ -72,6 +74,7 @@ public static string ToNormalizedKey(this AIServiceType serviceType)
7274
AIServiceType.Google => "google",
7375
AIServiceType.AzureAIInference => "azureaiinference",
7476
AIServiceType.Ollama => "ollama",
77+
AIServiceType.Bedrock => "bedrock",
7578
_ => string.Empty,
7679
};
7780
}

src/settings-ui/Settings.UI.Library/AIServiceTypeRegistry.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,18 @@ public static class AIServiceTypeRegistry
9797
PrivacyLabel = "AdvancedPaste_Ollama_PrivacyLabel",
9898
PrivacyUri = new Uri("https://ollama.org/privacy"),
9999
},
100+
[AIServiceType.Bedrock] = new AIServiceTypeMetadata
101+
{
102+
ServiceType = AIServiceType.Bedrock,
103+
DisplayName = "Bedrock",
104+
IconPath = "ms-appx:///Assets/Settings/Icons/Models/AzureAI.svg",
105+
IsOnlineService = true,
106+
LegalDescription = "AdvancedPaste_Bedrock_LegalDescription",
107+
TermsLabel = "AdvancedPaste_Bedrock_TermsLabel",
108+
TermsUri = new Uri("https://aws.amazon.com/bedrock/"),
109+
PrivacyLabel = "AdvancedPaste_Bedrock_PrivacyLabel",
110+
PrivacyUri = new Uri("https://aws.amazon.com/privacy/"),
111+
},
100112
[AIServiceType.Onnx] = new AIServiceTypeMetadata
101113
{
102114
ServiceType = AIServiceType.Onnx,

src/settings-ui/Settings.UI/Strings/en-us/Resources.resw

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -711,6 +711,15 @@ Please review the placeholder content that represents the final terms and usage
711711
<data name="AdvancedPaste_Mistral_PrivacyLabel" xml:space="preserve">
712712
<value>Mistral Privacy Policy</value>
713713
</data>
714+
<data name="AdvancedPaste_Bedrock_LegalDescription" xml:space="preserve">
715+
<value>Your credentials connect directly to AWS Bedrock services. By setting up this provider, you agree to comply with AWS usage policies and data handling practices.</value>
716+
</data>
717+
<data name="AdvancedPaste_Bedrock_TermsLabel" xml:space="preserve">
718+
<value>AWS Service Terms</value>
719+
</data>
720+
<data name="AdvancedPaste_Bedrock_PrivacyLabel" xml:space="preserve">
721+
<value>AWS Privacy Policy</value>
722+
</data>
714723
<data name="AdvancedPaste_Ollama_TermsLabel" xml:space="preserve">
715724
<value>Ollama Terms of Service</value>
716725
</data>

0 commit comments

Comments
 (0)