当前位置:   article > 正文

.Net 8连接 MoonShot AI Kimi_moonshot api对接

moonshot api对接

前言:

最近国产的Kimi免费了,咱们肯定得大大支持,查看了Api文档,发现没有.net版本对应的Api案例,所以以下针对一个API进行展示如何在.net中连接,其他Api接口使用方式相似。

Api官网地址:API Reference – Moonshot AI 开放平台

获取Api key:

我们需要到以下地址拿到Api Key用于调用Api ,只需要手机号登录完成,然后点击API Key管理新建一个保存好。

Intro – Moonshot AI 开放平台

原理:

由于其并未提供.net版本的SDK,所以我们通过CURL方式实现,本质就是发送Http请求。

代码实现:

先看接口信息:

1. 我们需要定义对应的请求和响应对象

Request Structure:

  1. //url & authorization
  2. struct MoonshotConfiguration
  3. {
  4. public string Url { get; set; }
  5. public string Authorization { get; set; }
  6. }
  7. //playload
  8. class RequestMessageMoon
  9. {
  10. public string model { get; set; }
  11. public double temperature { get; set; }
  12. public List<MoonMessage> messages { get; set; }
  13. }
  14. //层级封装
  15. struct MoonMessage
  16. {
  17. public string role { get; set; }
  18. public string content { get; set; }
  19. }
  20. //role
  21. public enum RoleEnum
  22. {
  23. system,
  24. user,
  25. assistant
  26. }

Respnse structure: 

  1. public class ChoicesItem
  2. {
  3. /// <summary>
  4. ///
  5. /// </summary>
  6. public int index { get; set; }
  7. /// <summary>
  8. ///
  9. /// </summary>
  10. public Message message { get; set; }
  11. /// <summary>
  12. ///
  13. /// </summary>
  14. public string finish_reason { get; set; }
  15. }
  16. public class Usage
  17. {
  18. /// <summary>
  19. ///
  20. /// </summary>
  21. public int prompt_tokens { get; set; }
  22. /// <summary>
  23. ///
  24. /// </summary>
  25. public int completion_tokens { get; set; }
  26. /// <summary>
  27. ///
  28. /// </summary>
  29. public int total_tokens { get; set; }
  30. }
  31. public class Root
  32. {
  33. /// <summary>
  34. ///
  35. /// </summary>
  36. public string id { get; set; }
  37. /// <summary>
  38. ///
  39. /// </summary>
  40. public string @object { get; set; }
  41. /// <summary>
  42. ///
  43. /// </summary>
  44. public int created { get; set; }
  45. /// <summary>
  46. ///
  47. /// </summary>
  48. public string model { get; set; }
  49. /// <summary>
  50. ///
  51. /// </summary>
  52. public List<ChoicesItem> choices { get; set; }
  53. /// <summary>
  54. ///
  55. /// </summary>
  56. public Usage usage { get; set; }
  57. }

 

2.发送Http请求: Authorization的信息换成上面你从官网获取的API key.
  1. /// <summary>
  2. /// 聊天功能
  3. /// </summary>
  4. /// <param name="requestBody"></param>
  5. /// <returns></returns>
  6. public async Task<string> Chat(string requestBody)
  7. {
  8. if (string.IsNullOrEmpty(requestBody))
  9. return "Please enter effective information to seek.";
  10. using var client = new HttpClient();
  11. //config这种建议写在appsetting里面,这里只是做展示,所以写在一起
  12. var config = new MoonshotConfiguration
  13. {
  14. Url = "https://api.moonshot.cn/v1/chat/completions",
  15. Authorization = "Bearer 你的API key"
  16. };
  17. client.DefaultRequestHeaders.Add("Authorization", config.Authorization);
  18. var moonMessages = new List<MoonMessage>();
  19. moonMessages.Add(new MoonMessage
  20. {
  21. role = RoleEnum.user.ToString(),
  22. content = requestBody ?? ""
  23. });
  24. var requestMessageMoon = new RequestMessageMoon()
  25. {
  26. model = "moonshot-v1-8k",
  27. temperature = 0.3,
  28. messages = moonMessages
  29. };
  30. var playLoad = JsonConvert.SerializeObject(requestMessageMoon);
  31. try
  32. {
  33. var content = new StringContent(playLoad, Encoding.UTF8, "application/json");
  34. var responseMessage = await client.PostAsync(config.Url, content);
  35. if (responseMessage.IsSuccessStatusCode)
  36. {
  37. var cRoot = JsonConvert.DeserializeObject<Root>(await responseMessage.Content.ReadAsStringAsync());
  38. return cRoot?.choices.FirstOrDefault().message.content;
  39. }
  40. }
  41. catch (Exception e)
  42. {
  43. Console.WriteLine("这里自己可以对异常信息进行处理,比如日志记录,重试等等...");
  44. }
  45. return "Server is being upgrade ,please try it later...";
  46. }

测试:

我们可以看到成功的调用它的Api,并且在content 上返回了结果,有关其他的返回参数信息可以到Api文档中查看。

以上就是一个简单的连接Kimi Api参考,如果想自己搭建平台,建议可以优化HttpClient,以提高效率,希望对你有帮助。

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

闽ICP备14008679号