Anthropic.SDK
2.0.0
See the version list below for details.
dotnet add package Anthropic.SDK --version 2.0.0
NuGet\Install-Package Anthropic.SDK -Version 2.0.0
<PackageReference Include="Anthropic.SDK" Version="2.0.0" />
paket add Anthropic.SDK --version 2.0.0
#r "nuget: Anthropic.SDK, 2.0.0"
// Install Anthropic.SDK as a Cake Addin #addin nuget:?package=Anthropic.SDK&version=2.0.0 // Install Anthropic.SDK as a Cake Tool #tool nuget:?package=Anthropic.SDK&version=2.0.0
Anthropic.SDK
Anthropic.SDK is an unofficial C# client designed for interacting with the Claude AI API. This powerful interface simplifies the integration of the Claude AI into your C# applications. It targets netstandard2.0, and .net6.0.
Table of Contents
Installation
Install Anthropic.SDK via the NuGet package manager:
PM> Install-Package Anthropic.SDK
API Keys
You can load the API Key from an environment variable named ANTHROPIC_API_KEY
by default. Alternatively, you can supply it as a string to the AnthropicClient
constructor.
IHttpClientFactory
The AnthropicClient
can optionally take an IHttpClientFactory
, which allows you to control elements such as retries and timeouts.
Usage
To start using the Claude AI API, simply create an instance of the AnthropicClient
class.
Examples
Non-Streaming Call
Here's an example of a non-streaming call to the Claude AI API to the new Claude 3 Sonnet model:
var client = new AnthropicClient();
var messages = new List<Message>();
messages.Add(new Message()
{
Role = RoleType.User,
Content = "Write me a sonnet about the Statue of Liberty"
});
var parameters = new MessageParameters()
{
Messages = messages,
MaxTokens = 512,
Model = AnthropicModels.Claude3Sonnet,
Stream = false,
Temperature = 1.0m,
};
var res = await client.Messages.GetClaudeMessageAsync(parameters);
Streaming Call
The following is an example of a streaming call to the Claude AI API Model 3 Opus that provides an image for analysis:
string resourceName = "Anthropic.SDK.Tests.Red_Apple.jpg";
// Get the current assembly
Assembly assembly = Assembly.GetExecutingAssembly();
// Get a stream to the embedded resource
await using Stream stream = assembly.GetManifestResourceStream(resourceName);
// Read the stream into a byte array
byte[] imageBytes;
using (var memoryStream = new MemoryStream())
{
await stream.CopyToAsync(memoryStream);
imageBytes = memoryStream.ToArray();
}
// Convert the byte array to a base64 string
string base64String = Convert.ToBase64String(imageBytes);
var client = new AnthropicClient();
var messages = new List<Message>();
messages.Add(new Message()
{
Role = RoleType.User,
Content = new dynamic[]
{
new ImageContent()
{
Source = new ImageSource()
{
MediaType = "image/jpeg",
Data = base64String
}
},
new TextContent()
{
Text = "What is this a picture of?"
}
}
});
var parameters = new MessageParameters()
{
Messages = messages,
MaxTokens = 512,
Model = AnthropicModels.Claude3Opus,
Stream = true,
Temperature = 1.0m,
};
var outputs = new List<MessageResponse>();
await foreach (var res in client.Messages.StreamClaudeMessageAsync(parameters))
{
if (res.Delta != null)
{
Console.Write(res.Delta.Text);
}
outputs.Add(res);
}
Console.WriteLine(string.Empty);
Console.WriteLine($@"Used Tokens - Input:{outputs.First().StreamStartMessage.Usage.InputTokens}.
Output: {outputs.Last().Usage.OutputTokens}");
Legacy Endpoints
This SDK still supports the Completion endpoints for now, but has primarily moved to the Messages API endpoints. Token calculation does not use the typical cl100k_base
that most OpenAI models use, and instead uses it's own byte-pair encoding. A simple extension method has been added to accurately calculate the number of tokens used by both a prompt and a response. See an example below.
var client = new AnthropicClient();
var prompt = AnthropicSignals.HumanSignal + "Write me a sonnet about The Statue of Liberty." +
AnthropicSignals.AssistantSignal;
var parameters = new SamplingParameters()
{
// required
Model = AnthropicModels.Claude_v2_1
Prompt = prompt,
MaxTokensToSample = 512,
//optional
Temperature = 1,
TopK = 1,
TopP = 1
StopSequences = new[] { AnthropicSignals.HumanSignal },
Stream = false
};
var response = await client.Completions.GetClaudeCompletionAsync(parameters);
Console.WriteLine($@"Tokens Used: Input - {prompt.GetClaudeTokenCount()}. Output - {response.Completion.GetClaudeTokenCount()}.");
Contributing
Pull requests are welcome. If you're planning to make a major change, please open an issue first to discuss your proposed changes.
License
This project is licensed under the MIT License.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Microsoft.Extensions.Http (>= 7.0.0)
- Microsoft.ML.Tokenizers (>= 0.20.1)
- System.Text.Json (>= 6.0.7)
-
net6.0
- Microsoft.Extensions.Http (>= 7.0.0)
- Microsoft.ML.Tokenizers (>= 0.20.1)
NuGet packages (2)
Showing the top 2 NuGet packages that depend on Anthropic.SDK:
Package | Downloads |
---|---|
OBotService
OBase Framework |
|
BotSharp.Plugin.AnthropicAI
Package Description |
GitHub repositories (1)
Showing the top 1 popular GitHub repositories that depend on Anthropic.SDK:
Repository | Stars |
---|---|
SciSharp/BotSharp
AI Multi-Agent Framework in .NET
|
Version | Downloads | Last updated |
---|---|---|
4.4.2 | 547 | 12/2/2024 |
4.4.1 | 1,741 | 11/22/2024 |
4.4.0 | 914 | 11/20/2024 |
4.3.1 | 1,561 | 11/13/2024 |
4.3.0 | 2,500 | 10/30/2024 |
4.2.0 | 466 | 10/26/2024 |
4.1.1 | 8,227 | 8/30/2024 |
4.1.0 | 6,238 | 8/18/2024 |
4.0.0 | 2,876 | 8/2/2024 |
3.3.0 | 9,513 | 7/23/2024 |
3.2.3 | 43,224 | 6/21/2024 |
3.2.2 | 2,423 | 6/16/2024 |
3.2.1 | 6,749 | 4/25/2024 |
3.2.0 | 8,771 | 4/24/2024 |
3.1.0 | 1,016 | 4/17/2024 |
3.0.1 | 1,493 | 4/12/2024 |
3.0.0 | 223 | 4/11/2024 |
2.0.1 | 11,112 | 3/17/2024 |
2.0.0 | 1,713 | 3/5/2024 |
1.3.0 | 2,310 | 11/21/2023 |
1.2.0 | 8,470 | 8/19/2023 |
1.1.2 | 1,837 | 8/9/2023 |
1.1.1 | 1,090 | 7/24/2023 |
1.1.0 | 1,017 | 7/16/2023 |
1.0.0 | 1,262 | 7/1/2023 |
Support for Messages Endpoint and Claude 3