SpringBoot接入Kimi实践记录轻松上手

article/2025/6/7 15:03:35


kimi简单使用

什么是Kimi API

官网:https://platform.moonshot.cn/

Kimi API 并不是一个我所熟知的广泛通用的术语。我的推测是,你可能想问的是关于 API 的一些基础知识。API(Application Programming Interface,应用程序编程接口)是一种软件架构概念,它定义了软件组件之间如何交互的规则和定义。简单来说,API 允许不同的软件程序之间进行通信和数据交换,而不需要了解彼此的内部实现细节。例如,许多网络应用程序通过提供 API 接口,让其他开发者能够访问其功能或数据,像社交媒体平台的 API 可能允许开发者获取用户信息、发布内容等操作。

API怎么获取

控制台:https://platform.moonshot.cn/console/account

  • 查看官方文档:大多数提供 API 服务的机构或公司会在其官方网站上提供详细的 API 文档,文档中会介绍如何注册获取 API 密钥(API Key)、API 的使用方法、可调用的接口功能等。

  • 注册账号:很多 API 需要你先在对应的平台上注册账号,然后通过账号申请获取 API Key,这个 Key 就是你调用 API 时验证身份的凭证。

  • 遵守使用限制和规则:获取 API 后,你需要仔细阅读其使用条款,因为不同的 API 可能有请求频率限制、数据使用范围等规定,违规使用可能会导致你的访问权限被限制甚至被封禁。

curl是什么?

curl 是一个非常流行的命令行工具和库,用于在互联网上进行数据传输。它可以与各种网络协议(如 HTTP、HTTPS、FTP 等)进行交互,功能强大且灵活。开发者和系统管理员经常使用它来测试网络连接、与 API 交互、下载或上传文件等。例如,你可以用 curl 向一个 API 发送请求,获取返回的数据,或者从一个网页上抓取内容。

测试工具测试curl

    curl -X POST https://api.moonshot.cn/v1/chat/completions \    -H "Content-Type: application/json" \    -H "Authorization: Bearer $MOONSHOT_API_KEY" \    -d '{        "model": "moonshot-v1-8k",        "messages": [            {"role": "system", "content": "wmcodes是一个资源丰富的公众号"},            {"role": "user", "content": "你好,我想找个资源公众号?"}        ],        "temperature": 0.3   }'

    先分析格式

    -X : 请求方式+路径

    -H : 请求头

    -d : 请求体(json格式)

    ApiPost 工具测试

    请求方式:POST

    API接口:      https://api.jikemoonshot.cn/v1/chat/completions

    请求头:

      Content-Type : application/jsonAuthorization: your-key

      请求体:

        {    "model": "moonshot-v1-8k",    "messages": [        {"role": "system", "content": "wmcodes是一个资源丰富的公众号"},        {"role": "user", "content": "你好,我想找个资源公众号?"}    ],    "temperature": 0.3}

        其中:

        • model 模型

              

          • moonshot-v1-8k

            : 它是一个长度为 8k 的模型,适用于生成短文本。

          • moonshot-v1-32k

            : 它是一个长度为 32k 的模型,适用于生成长文本。

          • moonshot-v1-128k

            : 它是一个长度为 128k 的模型,适用于生成超长文本。

          • moonshot-v1-8k-vision-preview

            : 它是一个长度为 8k 的 Vision 视觉模型,能够理解图片内容,输出文本。

          • moonshot-v1-32k-vision-preview

            : 它是一个长度为 32k 的 Vision 视觉模型,能够理解图片内容,输出文本。

          • moonshot-v1-128k-vision-preview

            : 它是一个长度为 128k 的 Vision 视觉模型,能够理解图片内容,输出文本。

        • system 角色:用于设置对话的背景、指导 AI 的行为和风格、限制内容范围等。它对用户不可见,但对 AI 的回答逻辑至关重要。

        • user 角色:用于表示用户输入的内容,是对话的主体部分,直接影响 AI 的回答。

        • temperature 精准度:这个值是0-1的,越高值那么消耗的算力越高,同时返回的数据也越精准

        ApiPost 数据填写

        对非 stream 格式的,返回类似如下:

          {    "id": "cmpl-04ea926191a14749b7f2c7a48a68abc6",    "object": "chat.completion",    "created": 1698999496,    "model": "moonshot-v1-8k",    "choices": [        {            "index": 0,            "message": {                "role": "assistant",                "content": " 你好,李雷!1+1等于2。如果你有其他问题,请随时提问!"            },            "finish_reason": "stop"        }    ],    "usage": {        "prompt_tokens": 19,        "completion_tokens": 21,        "total_tokens": 40    }}

          对 stream 格式的,返回类似如下:

            data: {"id":"cmpl-1305b94c570f447fbde3180560736287","object":"chat.completion.chunk","created":1698999575,"model":"moonshot-v1-8k","choices":[{"index":0,"delta":{"role":"assistant","content":""},"finish_reason":null}]}data: {"id":"cmpl-1305b94c570f447fbde3180560736287","object":"chat.completion.chunk","created":1698999575,"model":"moonshot-v1-8k","choices":[{"index":0,"delta":{"content":"你好"},"finish_reason":null}]}...data: {"id":"cmpl-1305b94c570f447fbde3180560736287","object":"chat.completion.chunk","created":1698999575,"model":"moonshot-v1-8k","choices":[{"index":0,"delta":{"content":"。"},"finish_reason":null}]}data: {"id":"cmpl-1305b94c570f447fbde3180560736287","object":"chat.completion.chunk","created":1698999575,"model":"moonshot-v1-8k","choices":[{"index":0,"delta":{},"finish_reason":"stop","usage":{"prompt_tokens":19,"completion_tokens":13,"total_tokens":32}}]}data: [DONE]

            项目构建过程

            <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId>    <version>5.8.25</version>
            </dependency>
            <dependency><groupId>com.squareup.okhttp3</groupId><artifactId>okhttp</artifactId>    <version>3.14.8</version>
            </dependency>
            <dependency><groupId>com.squareup.okhttp3</groupId><artifactId>okhttp-sse</artifactId>    <version>4.10.0</version>
            </dependency>

              项目构建过程

              创建 枚举类

              package com.jkglxt.www.enums;
              public enum RoleEnum {    system,    user,    assistant;
              }

              创建 消息类

              package com.jkglxt.www.entity;
              import lombok.AllArgsConstructor;
              import lombok.Builder;
              import lombok.Data;
              import lombok.NoArgsConstructor;
              @NoArgsConstructor
              @AllArgsConstructor
              @Data
              @Builder
              public class Message {private String role;private String content;
              }
               
              
              创建 控制器
              package com.jkglxt.www.controller;import cn.hutool.core.collection.CollUtil;
              import com.jkglxt.www.entity.Message;
              import com.jkglxt.www.enums.RoleEnum;
              import okhttp3.*;import org.springframework.web.bind.annotation.PostMapping;
              import org.springframework.web.bind.annotation.RestController;import java.util.HashMap;
              import java.util.List;
              import java.util.Map;
              import java.util.concurrent.TimeUnit;@RestController
              public class ChatController {@PostMapping("/chat")public String chat() {OkHttpClient client = new OkHttpClient().newBuilder().connectTimeout(30, TimeUnit.SECONDS).readTimeout(30, TimeUnit.SECONDS).build();try {// 设置密钥--在kimi个人中心新建密钥即可获得String apiKey = "your_api_key";// moonshot开发的访问apiString apiUrl = "https://api.moonshot.cn/v1/chat/completions";//  三种访问标准  标准不同收费不同:moonshot-v1-8k、moonshot-v1-32k、moonshot-v1-128kString model = "moonshot-v1-8k";//   设置请求头Map<String, String> header = new HashMap<String, String>();header.put("Authorization", "Bearer " + apiKey);header.put("Content-Type", "application/json");//   设置提问信息List<Message> messages = CollUtil.newArrayList(//                    new Message(RoleEnum.system.name(), "你是kimi AI"),new Message(RoleEnum.user.name(), "什么是java 20字介绍一下"));String requestBody = new cn.hutool.json.JSONObject().putOpt("model", model).putOpt("messages", messages).toString();Request request = new Request.Builder().url(apiUrl).headers(Headers.of(header)).method("POST", okhttp3.RequestBody.create(MediaType.parse("application/json"),requestBody)).build();try (Response response = client.newCall(request).execute()) {String str=checkResponse(response);System.out.println("答复:"+str);return str;}} catch (Exception e) {throw new RuntimeException("Unknown err", e);}}private String checkResponse(Response response) {if (response.isSuccessful()) {if(response.body()==null){throw new RuntimeException("Response body is null");}else{try(ResponseBody body = response.body()){return body.string();}catch (Exception e){throw new RuntimeException("Error reading response body",e);}}} else if(response.code()==401) {throw new RuntimeException("Unauthorized");} else if (response.code() == 400) {throw new RuntimeException("Bad request");} else if (response.code() == 429) {throw new RuntimeException("Too many requests");} else{throw new RuntimeException("Error response code: "+response.code());}}
              }
              

              * Thanks you *

              如果觉得文章内容不错,随手帮忙点个赞在看转发一下,如果想第一时间收到推送,也可以给我个星标~谢谢你看我的文章


              * 往期推荐 *

              Wrod 也可以添加代码快啦!!快看有哪种你是会的吧!

              Linux | 零基础Ubuntu搭建JDK

              Maven | 站在初学者的角度配置与项目创建(新手必学会)

              Spring Ai | 极简代码从零带你一起走进AI项目(中英)

              Open Ai | 从零搭建属于你的Ai项目(中英结合)

              MongoDB | 零基础学习与Springboot整合ODM实现增删改查(附源码)

              Openfeign | 只传递城市代码,即可获取该地域实时的天气数据(免费的天气API)

              API接口到底是什么

              Redis | 缓存技术对后端的重要性,你知道多少?

              Mongodb | 基于Springboot开发综合社交网络应用的项目案例(中英)

              谈谈模块化设计在单体架构中的应用

              彻底讲清楚 单体架构、集群架构、分布式架构及扩展架构

              为什么还在使用单体架构

              2025年Java路线一条龙服务

              2025年健康新趋势:科技与生活方式的融合


              感谢阅读 | 更多内容尽在公棕号 WMCode | CSDN@小Mie不吃饭


              http://www.hkcw.cn/article/CyarpjrDZF.shtml

              相关文章

              Windows版PostgreSQL 安装 vector 扩展

              问题 spring-ai在集成PGVector向量存储的时候会报错如下&#xff0c;那么就需要安装pgsql的vector扩展。 SQL [CREATE EXTENSION IF NOT EXISTS vector]; 错误: 无法打开扩展控制文件 "C:/Program Files/PostgreSQL/9.6/share/extension/vector.control": No such …

              【操作系统原理08】文件管理

              文章目录 零.大纲一.文件管理0.大纲1.文件管理1.1 **文件属性**1.2 文件内部数据组织1.3 文件之间的组织1.4操作系统提供功能1.5 文件在外存存放 二.文件的逻辑结构0.大纲1.无结构文件2.有结构文件 三.文件目录0.大纲1.文件控制块2.目录结构3.索引节点(FCB改进) 四.文件共享0.大…

              力扣面试150题--二叉搜索树中第k小的元素

              Day 58 题目描述 思路 直接采取中序遍历&#xff0c;不过我们将k参与到中序遍历中&#xff0c;遍历到第k个元素就结束 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* …

              Linux网络基础概念(1)

              文章目录 前言一、计算机网络背景网络发展认识协议 二、网络协议协议分层OSI七层模型TCP/IP五层&#xff08;或四层&#xff09;模型 三、网络传输基本流程同局域网的两台主机通信跨网络的两台主机通信 四、网络中的地址管理认识IP地址认识MAC地址 总结 前言 到网络喽&#xff…

              【Typst】6.布局函数

              概述 上节我们介绍了文档结构元素的函数&#xff0c;本节介绍一些控制布局使用的函数&#xff0c;掌握他们之后你可以更进一步的控制页面元素的布局。 系列目录 1.Typst概述2.Typst标记语法和基础样式3.Typst脚本语法4.导入、包含和读取5.文档结构元素与函数6.布局函数 对齐…

              初识高通camx

              一、chi和camx之间如何通信&#xff1a; Chi对Camx的操作&#xff0c;需要通过 ExtensionModule 进行操作&#xff0c;因此&#xff0c;CamX对外提供的接口扩展需要通过ExtensionModule进行&#xff0c;里面一个重要的变量就是g_chiContextOps。 Camx对Chi的操作&#xff0c;是…

              NebulaAI V2.6.0发布:工作流功能正式上线!

              2025年5月30日&#xff0c;NebulaAI V2.6.0版本正式上线&#xff01; 在V2.6.0版本中&#xff0c;NBAI团队对工作流功能进行了重磅升级&#xff0c;用户可以通过创建工作流来与大模型交互&#xff1a; 支持选择常用大模型进行工作流的交互&#xff1b; 支持文件上传&#…

              Flowith,有一种Agent叫无限

              大家好&#xff0c;我是羊仔&#xff0c;专注AI工具、智能体、编程。 今天羊仔要和大家聊聊一个最近发现的超级实用的Agent平台&#xff0c;名字叫Flowith。 这篇文章会带你从零了解到实战体验&#xff0c;搞清楚Flowith是如何让工作效率飙升好几倍&#xff0c;甚至重新定义未…

              【Linux系统编程】库制作与原理

              目录 理解软硬链接 动态库与静态库 手动制作静态库并使用 制作静态库 使用静态库方法一 使用静态库方法二 使用静态库方法三 手动制作动态库并使用 制作动态库 使用动态库方法一 使用动态库方法二 使用动态库方法三 动静态库同时使用的细节说明 动态库的理解、动…

              SAP学习笔记 - 开发20 - 前端Fiori开发 Nest View(嵌套视图) ,Fragment(片段)

              上一章讲了Page和Panel&#xff0c;Shell Control(信箱效果)&#xff0c;Margin / Padding&#xff0c;自定义CSS。 SAP学习笔记 - 开发19 - 前端Fiori开发 Page和Panel&#xff0c;Shell Control(信箱效果)&#xff0c;Margin / Padding&#xff0c;自定义CSS-CSDN博客 本章…

              选择正确的电平转换解决方案

              1. 简介 在目前大多数电子系统中&#xff0c;对电压电平转换的需求非常普遍。 例如&#xff0c; ASIC可能在电源电压 VCCA 下工作&#xff0c;而 I/O器件可能在电源电压VCCB下工作。 为了使这些器件间能够互相通信&#xff0c;需要如下图所示的电平转换解决方案。   电子器件…

              OpenLayers:通过自动布局调整解决Overlay重叠问题

              一、解决Overlay重叠问题的尝试 我在最近的开发工作中遇到了一个问题。我开发的项目需要给地图上的站点添加Tooltip提示框&#xff08;即Overlay&#xff09;&#xff0c;但是由于地图上的部分站点比较密集&#xff0c;导致Tooltip的重叠比较严重&#xff0c;部分Tooltip的内容…

              7.5- Loading a pretrained LLM

              Chapter 7-Fine-tuning to follow instructions 7.5- Loading a pretrained LLM 开始微调前&#xff0c;我们先加载GPT2模型&#xff0c;加载 3.55 亿参数的中型版本&#xff0c;因为 1.24 亿模型太小&#xff0c;无法通过指令微调获得定性合理的结果 ​ 加载 gpt2-medium (…

              C++:内存管理

              一.深入理解C/C的内存分布 以上是一张C/C 程序内存分区示意图&#xff1a; 栈区 存放内容&#xff1a;局部变量&#xff08;如函数内部定义的普通变量 int a 10; &#xff09;、函数的形式参数 。其特点是由编译器自动分配和释放&#xff0c;遵循先进后出原则&#xff0c;…

              【结构型模式】装饰器模式

              文章目录 装饰器模式装饰器模式当中的角色和职责装饰器模式的代码实现装饰器模式与代理模式有何不同&#xff1f;装饰器模式的优缺点适用场景 装饰器模式 装饰器模式&#xff08;Decorator Pattern&#xff09;&#xff1a;动态地给一个对象增加一些额外的职责&#xff0c;对于…

              Ubuntu 挂载新盘

              1.磁盘分区 rootljz:/# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop0 7:0 0 4K 1 loop /snap/bare/5 loop1 7:1 0 104.2M 1 loop /snap/core/17200 loop2 7:2 0 73.9M 1 loop /snap/core22/1908 loop3 7:3 0 104.6M 1 loo…

              Flink03-学习-套接字分词流自动写入工具

              上一节中通过如下命令启动服务摸来模拟Socket流。 现在我们写一个ServerSocket来模拟让流自动写入不用手动操作。 pom.xml和上一节一致不需要修改 编写代码 同样适用Socket流 // 使用socket流创建一个从 socket 读取文本的数据流&#xff0c;以换行符 \n 作为分隔符DataStre…

              2022年 国内税务年鉴PDF电子版Excel

              2022年 国内税务年鉴PDF电子版Excelhttps://download.csdn.net/download/2401_84585615/89784658 https://download.csdn.net/download/2401_84585615/89784658 2022年国内税务年鉴是对中国税收政策、税制改革和税务管理实践的全面总结。这份年鉴详细记录了中国税收系统的整体状…

              Gitee Wiki:以知识管理赋能 DevSecOps,推动关键领域软件自主演进

              关键领域软件研发中的知识管理困境 传统文档管理模式问题显著 关键领域软件研发领域&#xff0c;传统文档管理模式问题显著&#xff1a;文档存储无系统&#xff0c;查找困难&#xff0c;降低效率&#xff1b;更新不及时&#xff0c;与实际脱节&#xff0c;误导开发&#xff1…

              Hadoop 3.x 伪分布式 8088端口无法访问问题处理

              【Hadoop】YARN ResourceManager 启动后 8088 端口无法访问问题排查与解决(伪分布式启动Hadoop) 在配置和启动 Hadoop YARN 模块时&#xff0c;发现虽然 ResourceManager 正常启动&#xff0c;JPS 进程中也显示无误&#xff0c;但通过浏览器访问 http://主机IP:8088 时却无法打…