C# Anthropic Claude库!您可以简单直观地调用Claude API

目录

介绍

背景

使用代码

兴趣点


介绍

我花了两天时间研究Anthropic API,并完成了一个名为HigLabo.Anthropic。您可以通过此库轻松调用Claude AI。本文将解释如何使用它。

背景

几乎每天都有人工智能提供商推出一项新服务。它是如此之快,以至于没有库,只有REST API端点。因此,我们必须开发DIY库来使用API端点。我刚刚创建了一个库,可以帮助那些计划开发Claude API的人。我在这里分享它。

通过Nuget下载。

HigLabo.Anthropic

所有源代码都在 https://github.com/higty/higlabo/tree/master/Net8 上。

HigLabo.Anthropic

您可以在此处查看示例代码。

使用代码

通过服务器发送的事件将Messages端点接收为stream

var cl = new AnthropicClient("API KEY");
var result = new MessagesStreamResult();
await foreach (string text in cl.MessagesStreamAsync
  ("How to enjoy coffee?", ModelNames.Claude3Opus, result, CancellationToken.None))
{
    Console.Write(text);
}
if (result.MessageDelta != null)
{
    Console.WriteLine("StopReason: " + result.MessageDelta.Delta.Stop_Reason);
    Console.WriteLine("Usage: " + result.MessageDelta.Usage.Output_Tokens);
}

您可以使用MessagesParameter类传递所有API参数。

var cl = new AnthropicClient("API KEY");
var p = new MessagesParameter();
p.AddUserMessage("How to enjoy coffee?");
p.Model = ModelNames.Claude3Opus;
p.Max_Tokens = 1024;
// set other properties...
var result = new MessagesStreamResult();
await foreach (var item in cl.MessagesStreamAsync(p, result, CancellationToken.None))
{
    Console.Write(item);
}
if(result.MessageDelta != null)
{
    Console.WriteLine("StopReason: " + result.MessageDelta.Delta.Stop_Reason);
    Console.WriteLine("Usage: " + result.MessageDelta.Usage.Output_Tokens);
}

完成后,您可以通过MessagesStreamResult获得所有服务器发送的事件信息。

这是函数调用的代码。

var cl = new AnthropicClient("API KEY");
var tools = new AnthropicTools();
var tool = new AnthropicTool("GetTickerSymbol", 
           "Gets the stock ticker symbol for a company searched by name. 
           Returns str: The ticker symbol for the company stock. Raises 
           TickerNotFound: if no matching ticker symbol is found.");
tool.Parameters.Add(new AnthropicToolParameter("company_name", "string", 
                    "The name of company"));
tools.Add(tool);
var toolXml = tool.ToString();

var p = new MessagesParameter();
p.Messages.Add(new ChatMessage(ChatMessageRole.User, 
               $"What is the current stock price of Microsoft?"));
p.SetTools(tools);
p.Model = ModelNames.Claude3Opus;
p.Max_Tokens = 1024;
p.Stream = true;

var result = new MessagesStreamResult();
await foreach (var item in cl.MessagesStreamAsync(p, result, CancellationToken.None))
{
    Console.Write(item);
}

var calls = AnthropicFunctionCalls.Parse(result.GetText());
if (calls.InvokeList.Count > 0)
{
    Console.WriteLine();
    Console.WriteLine("■Function call list");
    Console.WriteLine(calls.ToString());

    var invoke = calls.InvokeList.Find(el => el.ToolName == "GetTickerSymbol");
    if (invoke != null)
    {
        var companyName = invoke.GetParameterValue("company_name") ?? "";
        var tickerSymbol = GetTickerSymbol(companyName);
    }
}

这是发送图像并获取解释的代码。

var p = new MessagesParameter();
p.Model = "claude-3-opus-20240229";
p.Max_Tokens = 1024;

var msg = new ChatImageMessage(ChatMessageRole.User);
msg.AddTextContent($"What is this image include?");
msg.AddImageFile(Path.Combine(Environment.CurrentDirectory, "Image", "Rock.jpg"));
p.Messages.Add(msg);
p.Stream = true;

var result = new MessagesStreamResult();
await foreach (var item in cl.MessagesStreamAsync(p, result, CancellationToken.None))
{
    Console.Write(item);
}

兴趣点

所有类设计架构都与HigLabo.OpenAI相同。请参阅此文章

您可以使用与HigLabo.OpenAIHigLabo.Anthropic相同的:

  • AnthropicClient
  • XXXParameter
  • XXXAsync
  • XXXResponse
  • RestApiResponse

类和行为是一样的。这证明了类架构设计对于REST API客户端库来说绝对是很好的。实际上,我完成了6个小时的工作来实现HigLabo.Anthropic的完整代码。你可以从这两个库源代码中学习如何设计类和库,如果你有计划实现一些REST API客户端库,它可能会对你有所帮助。

https://www.codeproject.com/Articles/5379174/Csharp-Anthropic-Claude-Library-You-Can-Call-Claud

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值