Skip to main content
.NETFramework4.6.2net6.0net7.0.NETStandard2.0

Anthropic API LLM and Chat model provider.

Published
Aug 10, 2023
3y ago
Total Downloads
393.6K
393,603

Install

dotnet add package LangChain.Providers.Anthropic --version 0.8.3
ProductVersions
.NET
net6.0net7.0
.NET Standard
netstandard2.0
Other
.NETFramework4.6.2

README

🦜️🔗 LangChain

Nuget package dotnet License: MIT Discord

⚡ Building applications with LLMs through composability ⚡
C# implementation of LangChain. We try to be as close to the original as possible in terms of abstractions, but are open to new entities.

While the SemanticKernel is good and we will use it wherever possible, we believe that it has many limitations and based on Microsoft technologies. We proceed from the position of the maximum choice of available options and are open to using third-party libraries within individual implementations.
❤️ Our project includes https://github.com/jeastham1993/langchain-dotnet and tries to be updated with the latest changes there ❤️

Usage

var model = new Gpt4Model("API_KEY");
var response = await model.GenerateAsync("Hello, World of AI!");

var numberOfTokens = model.CountTokens("Hello, World of AI!");

Chains

var model = new Gpt4Model("API_KEY");

var template = "What is a good name for a company that makes {product}?";
var prompt = new PromptTemplate(new PromptTemplateInput(template, new List<string>(1){"product"}));

var chain = new LlmChain(new LlmChainInput(model, prompt));

var result = await chain.Call(new ChainValues(new Dictionary<string, object>(1)
{
    { "product", "colourful socks" }
}));
// The result is an object with a `text` property.
Console.WriteLine(result.Value["text"]);

OpenAI Functions:

WeatherService:

[OpenAiFunctions]
public interface IWeatherFunctions
{
    [Description("Get the current weather in a given location")]
    public Task<Weather> GetCurrentWeatherAsync(
        [Description("The city and state, e.g. San Francisco, CA")] string location,
        Unit unit = Unit.Celsius,
        CancellationToken cancellationToken = default);
}

public class WeatherService : IWeatherFunctions
{
    public Task<Weather> GetCurrentWeatherAsync(string location, Unit unit = Unit.Celsius, CancellationToken cancellationToken = default)
    {
        return Task.FromResult(new Weather
        {
            Location = location,
            Temperature = 22.0,
            Unit = unit,
            Description = "Sunny",
        });
    }
}
using var client = new HttpClient();
var model = new Gpt35TurboModel(apiKey, client);

var service = new WeatherService();
model.AddGlobalFunctions(service.AsFunctions(), service.AsCalls());

var response = await model.GenerateAsync(new ChatRequest(
    Messages: new []
    {
        "You are a helpful weather assistant.".AsSystemMessage(),
        "What's the weather like today?".AsHumanMessage(),
        "Sure! Could you please provide me with your location?".AsAiMessage(),
        "Dubai, UAE".AsHumanMessage(),
    }));

Console.WriteLine(response.Messages.AsHistory());

Result:

System: You are a helpful weather assistant.
Human: What's the weather like today?
AI: Sure! Could you please provide me with your location?
Human: Dubai, UAE
Function call: GetCurrentWeather({"location": "Dubai, UAE"})
Function result: GetCurrentWeather -> {"location":"Dubai, UAE","temperature":22,"unit":"celsius","description":"Sunny"}
AI: The weather in Dubai, UAE today is sunny with a temperature of 22 degrees Celsius.

Also see examples for example usage.

Support

Priority place for bugs: https://github.com/tryAGI/LangChain/issues
Priority place for ideas and general questions: https://github.com/tryAGI/LangChain/discussions
Discord: https://discord.gg/Ca2xhfBf3v

Changes from Previous Version

v0.8.2v0.8.3
Added Frameworks
.NETFramework4.6.2net6.0net7.0.NETStandard2.0
Added Dependencies

Adoption Assessment

Assess this package against its supported frameworks, license, maintenance signals and dependency graph before making it a project standard.

Compatibility metadata lists 4 target frameworks; confirm the exact target used by your application.

Related Guides & Workflows

Learn how to evaluate, integrate, or audit this package in your .NET project.