Skip to content

Commit 9b75e87

Browse files
committed
Add Anthropic.
1 parent dec453d commit 9b75e87

3 files changed

Lines changed: 25 additions & 7 deletions

File tree

src/Automation/ChatClientFactory.cs

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using Anthropic;
12
using Microsoft.Extensions.AI;
23
using Microsoft.Extensions.Configuration;
34
using OllamaSharp;
@@ -20,12 +21,14 @@ internal sealed class ChatClientFactory : IChatClientFactory
2021
{
2122
private readonly IHttpClientFactory _httpClientFactory;
2223
private readonly IConfiguration _configuration;
24+
private readonly IAnthropicClient _anthropicClient;
2325

24-
public ChatClientFactory(IHttpClientFactory httpClientFactory, IConfiguration configuration)
26+
public ChatClientFactory(IHttpClientFactory httpClientFactory, IAnthropicClient anthropicClient, IConfiguration configuration)
2527
{
2628
_httpClientFactory = httpClientFactory;
2729
_configuration = configuration;
28-
}
30+
_anthropicClient = anthropicClient;
31+
}
2932

3033
public IChatClient CreateClient(string urn)
3134
{
@@ -47,7 +50,11 @@ public IChatClient CreateClient(string urn)
4750
httpClient.BaseAddress = new Uri(_configuration["OLLAMA_HOST"]);
4851
return new OllamaApiClient(httpClient, model);
4952
}
50-
default:
53+
case "anthropic":
54+
{
55+
return _anthropicClient.AsIChatClient(model);
56+
}
57+
default:
5158
throw new NotSupportedException($"Provider '{provider}' is not supported.");
5259
}
5360
}
@@ -72,6 +79,11 @@ public async Task<IList<string>> GetModels(string urn, CancellationToken token)
7279
using var client = new OllamaApiClient(httpClient);
7380
var ollamaModels = await client.ListLocalModelsAsync(token);
7481
return [.. ollamaModels.Select(x => x.Name)];
82+
}
83+
case "anthropic":
84+
{
85+
var models = await _anthropicClient.Models.List(null, token);
86+
return [.. models.Items.Select(x => x.ID)];
7587
}
7688
default:
7789
throw new NotSupportedException($"Provider '{provider}' is not supported.");

src/Automation/Estranged.Automation.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
<ItemGroup>
1010
<PackageReference Include="Ae.Steam.Client" Version="0.0.4" />
11+
<PackageReference Include="Anthropic" Version="12.8.0" />
1112
<PackageReference Include="AWSSDK.DynamoDBv2" Version="4.0.6.5" />
1213
<PackageReference Include="Discord.Net" Version="3.18.0" />
1314
<PackageReference Include="Humanizer.Core" Version="2.14.1" />

src/Automation/Program.cs

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,21 @@
11
using Ae.Steam.Client;
2+
using Amazon.DynamoDBv2;
3+
using Anthropic;
24
using Discord;
35
using Discord.WebSocket;
6+
using Microsoft.Extensions.Configuration;
47
using Microsoft.Extensions.DependencyInjection;
58
using Microsoft.Extensions.DependencyInjection.Extensions;
69
using Microsoft.Extensions.Http;
710
using Microsoft.Extensions.Logging;
811
using Octokit;
912
using OllamaSharp;
1013
using System;
14+
using System.IO;
15+
using System.Net.Http;
1116
using System.Net.Http.Headers;
1217
using System.Threading;
1318
using System.Threading.Tasks;
14-
using System.Net.Http;
15-
using Microsoft.Extensions.Configuration;
16-
using Amazon.DynamoDBv2;
17-
using System.IO;
1819

1920
namespace Estranged.Automation
2021
{
@@ -63,6 +64,10 @@ public static int Main(string[] args)
6364
httpClient.BaseAddress = new Uri(configuration["OLLAMA_HOST"]);
6465
return new OllamaApiClient(httpClient);
6566
})
67+
.AddSingleton<IAnthropicClient>(provider =>
68+
{
69+
return new AnthropicClient(new Anthropic.Core.ClientOptions { ApiKey = configuration["ANTHROPIC_API_KEY"] });
70+
})
6671
.AddSingleton<IChatClientFactory, ChatClientFactory>()
6772
.AddSingleton<IDiscordClient>(discordSocketClient)
6873
.AddTransient<IAmazonDynamoDB, AmazonDynamoDBClient>()

0 commit comments

Comments
 (0)