当前位置:   article > 正文

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

anthropic 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

  1. var cl = new AnthropicClient("API KEY");
  2. var result = new MessagesStreamResult();
  3. await foreach (string text in cl.MessagesStreamAsync
  4. ("How to enjoy coffee?", ModelNames.Claude3Opus, result, CancellationToken.None))
  5. {
  6. Console.Write(text);
  7. }
  8. if (result.MessageDelta != null)
  9. {
  10. Console.WriteLine("StopReason: " + result.MessageDelta.Delta.Stop_Reason);
  11. Console.WriteLine("Usage: " + result.MessageDelta.Usage.Output_Tokens);
  12. }

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

  1. var cl = new AnthropicClient("API KEY");
  2. var p = new MessagesParameter();
  3. p.AddUserMessage("How to enjoy coffee?");
  4. p.Model = ModelNames.Claude3Opus;
  5. p.Max_Tokens = 1024;
  6. // set other properties...
  7. var result = new MessagesStreamResult();
  8. await foreach (var item in cl.MessagesStreamAsync(p, result, CancellationToken.None))
  9. {
  10. Console.Write(item);
  11. }
  12. if(result.MessageDelta != null)
  13. {
  14. Console.WriteLine("StopReason: " + result.MessageDelta.Delta.Stop_Reason);
  15. Console.WriteLine("Usage: " + result.MessageDelta.Usage.Output_Tokens);
  16. }

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

这是函数调用的代码。

  1. var cl = new AnthropicClient("API KEY");
  2. var tools = new AnthropicTools();
  3. var tool = new AnthropicTool("GetTickerSymbol",
  4. "Gets the stock ticker symbol for a company searched by name.
  5. Returns str: The ticker symbol for the company stock. Raises
  6. TickerNotFound: if no matching ticker symbol is found.");
  7. tool.Parameters.Add(new AnthropicToolParameter("company_name", "string",
  8. "The name of company"));
  9. tools.Add(tool);
  10. var toolXml = tool.ToString();
  11. var p = new MessagesParameter();
  12. p.Messages.Add(new ChatMessage(ChatMessageRole.User,
  13. $"What is the current stock price of Microsoft?"));
  14. p.SetTools(tools);
  15. p.Model = ModelNames.Claude3Opus;
  16. p.Max_Tokens = 1024;
  17. p.Stream = true;
  18. var result = new MessagesStreamResult();
  19. await foreach (var item in cl.MessagesStreamAsync(p, result, CancellationToken.None))
  20. {
  21. Console.Write(item);
  22. }
  23. var calls = AnthropicFunctionCalls.Parse(result.GetText());
  24. if (calls.InvokeList.Count > 0)
  25. {
  26. Console.WriteLine();
  27. Console.WriteLine("■Function call list");
  28. Console.WriteLine(calls.ToString());
  29. var invoke = calls.InvokeList.Find(el => el.ToolName == "GetTickerSymbol");
  30. if (invoke != null)
  31. {
  32. var companyName = invoke.GetParameterValue("company_name") ?? "";
  33. var tickerSymbol = GetTickerSymbol(companyName);
  34. }
  35. }

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

  1. var p = new MessagesParameter();
  2. p.Model = "claude-3-opus-20240229";
  3. p.Max_Tokens = 1024;
  4. var msg = new ChatImageMessage(ChatMessageRole.User);
  5. msg.AddTextContent($"What is this image include?");
  6. msg.AddImageFile(Path.Combine(Environment.CurrentDirectory, "Image", "Rock.jpg"));
  7. p.Messages.Add(msg);
  8. p.Stream = true;
  9. var result = new MessagesStreamResult();
  10. await foreach (var item in cl.MessagesStreamAsync(p, result, CancellationToken.None))
  11. {
  12. Console.Write(item);
  13. }

兴趣点

所有类设计架构都与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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/神奇cpp/article/detail/993768
推荐阅读
相关标签
  

闽ICP备14008679号