SpringBoot接入Kimi實踐記錄輕松上手


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.pswp.cn/news/908035.shtml
              繁體地址,請注明出處:http://hk.pswp.cn/news/908035.shtml
              英文地址,請注明出處:http://en.pswp.cn/news/908035.shtml

              如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

              相關文章

              書籍在其他數都出現k次的數組中找到只出現一次的數(7)0603

              題目 給定一個整型數組arr和一個大于1的整數k。已知arr中只有1個數出現了1次&#xff0c;其他的數都出現了k次&#xff0c;請返回只出現了1次的數。 解答&#xff1a; 對此題進行思路轉換&#xff0c;可以將此題&#xff0c;轉換成k進制數。 k進制的兩個數c和d&#xff0c;…

              React 項目初始化與搭建指南

              React 項目初始化有多種方式&#xff0c;可以選擇已有的腳手架工具快速創建項目&#xff0c;也可以自定義項目結構并使用構建工具實現項目的構建打包流程。 1. 腳手架方案 1.1. Vite 通過 Vite 創建 React 項目非常簡單&#xff0c;只需一行命令即可完成。Vite 的工程初始化…

              大模型模型推理的成本過高,如何進行量化或蒸餾優化

              在人工智能的浪潮中,大模型已經成為推動技術革新的核心引擎。從自然語言處理到圖像生成,再到復雜的多模態任務,像GPT、BERT、T5這樣的龐大模型展現出了驚人的能力。它們在翻譯、對話系統、內容生成等領域大放異彩,甚至在醫療、金融等行業中也開始扮演重要角色。可以說,這些…

              機器學習在多介質環境中多污染物空間預測的應用研究

              機器學習在多介質環境中多污染物空間預測的應用研究 1. 引言 1.1 研究背景與意義 隨著工業化和城市化進程加速,環境中多種污染物的共存已成為全球性環境問題。重金屬(如鉛、汞、鎘)、有機污染物(如多環芳烴、農藥殘留)和新興污染物(如微塑料、藥品殘留)在空氣、水體、…

              圖解深度學習 - 激活函數和損失函數

              激活函數和損失函數在深度學習中扮演著至關重要的角色。通過選擇合適的激活函數和損失函數&#xff0c;可以顯著提高神經網絡的表達能力和優化效果。 其中激活函數是神經網絡中的非線性函數&#xff0c;用于在神經元之間引入非線性關系&#xff0c;從而使模型能夠學習和表示復…

              影響服務器穩定性的因素都有什么?

              服務器的穩定性會影響到業務是否能夠持續運行&#xff0c;用戶在進行訪問網站的過程中是否出現頁面卡頓的情況&#xff0c;本文就來了解一下都是哪些因素影響著服務器的穩定性。 服務器中的硬件設備是保證服務器穩定運行的基礎&#xff0c;企業選擇高性能的處理器和大容量且高速…

              TopCode之最大子數組和

              題目鏈接 53. 最大子數組和 - 力扣&#xff08;LeetCode&#xff09; 題目解析 算法原理 解法1: 暴力(一個循環用來固定,一個用來找最大的子數組O(n^2),每次往后拓展一個元素就判斷是否是最長的),枚舉出每一種情況, 然后不斷更新最大的 解法二: dp 1> dp的含義: dp[i]記…

              深入解析 Flask 命令行工具與 flask run命令的使用

              Flask 是一個輕量級的 Python Web 應用框架&#xff0c;其內置的命令行工具&#xff08;CLI&#xff09;基于 Click 庫&#xff0c;提供了方便的命令行接口&#xff0c;用于管理和運行 Flask 應用程序。本文將詳細介紹 Flask 命令行工具的功能&#xff0c;以及如何使用 flask r…

              QFramework v1.0 Guide: 工具篇——ViewControllor, ActionKit時序動作執行系統,ResKit資源管理開發解決方案

              目錄 一、QFramework.Toolkits簡介 二、View Controllor 1、作用 2、應用場景 3、示例 三、ActionKit時序動作執行系統 1. 用法 &#xff08;1&#xff09;延時回調 &#xff08;2&#xff09;序列執行 &#xff08;3&#xff09;幀延時 &#xff08;4&#xff09;條…

              GLIDE論文閱讀筆記與DDPM(Diffusion model)的原理推導

              Abstract 擴散模型&#xff08;Diffusion model&#xff09;最近被證明可以生成高質量的合成圖像&#xff0c;尤其是當它們與某種引導技術結合使用時&#xff0c;可以在生成結果的多樣性與保真度之間進行權衡。本文探討了在文本條件圖像生成任務中使用擴散模型&#xff0c;并比…

              @Pushgateway 數據自動清理

              文章目錄 Pushgateway 數據自動清理一、Pushgateway 數據清理的必要性二、自動清理方案方案1&#xff1a;使用帶TTL功能的Pushgateway分支版本方案2&#xff1a;使用Shell腳本定期清理方案3&#xff1a;結合Prometheus記錄規則自動清理 三、最佳實踐建議四、驗證與維護五、示例…

              QML視圖組件ListView、TableView、GridView介紹

              1 MVD模型 Model:模型,包含數據及其結構。View:視圖,用于顯示數據。Delegate:代理,規定數據在視圖中的顯示方式。2 ListView 以列表形式展示數據。2.1 屬性 model:設置或獲取列表視圖的數據模型delegate:定義了列表中每一項的外觀和行為currentIndex:獲取或設置當前選…

              解決vscode打開一個單片機工程文件(IAR/keil MDK)因無法找到頭文件導致的結構體成員不自動補全問題。

              最近一直在用vscode安裝c/c插件后編輯STM32標準庫&#xff08;keil MDK&#xff09;項目源文件&#xff0c;因為我感覺vscode在代碼編輯方面比keil MDK本身優秀太多。發現打開工程后&#xff0c;結構體變量的成員在輸入“.”后不自己彈出的問題&#xff0c;后來查找各方資料&am…

              5分鐘申請edu郵箱【方案本周有效】

              這篇文章主要展示的是成果。如果你是第1次看見我的內容&#xff0c;具體的步驟請翻看往期的兩篇作品。先看更正補全&#xff0c;再看下一個。 建議你邊看邊操作。 【更正補全】edu教育申請通過方案 本周 edu教育郵箱注冊可行方案 #edu郵箱 偉大無需多言 我已經驗證了四個了…

              零知開源——STM32F407VET6驅動ILI9486 TFT顯示屏 實現Flappy Bird游戲教程

              簡介 本教程使用STM32F407VET6零知增強板驅動3.5寸 ILI9486的TFT觸摸屏擴展板實現經典Flappy Bird游戲。通過觸摸屏控制小鳥跳躍&#xff0c;躲避障礙物柱體&#xff0c;挑戰最高分。項目涉及STM32底層驅動、圖形庫移植、觸摸控制和游戲邏輯設計。 目錄 簡介 一、硬件準備 二…

              云臺式激光甲烷探測器:守護工業安全的“智慧之眼”

              在石油化工、天然氣場站、城市燃氣管網等場景中&#xff0c;甲烷泄漏的早期監測是保障生產安全的核心防線。云臺式激光甲烷探測器憑借高精度、無接觸、智能化的技術優勢&#xff0c;成為工業安全監測領域的革新者。本文將深度解析其技術原理、核心功能及適用場景&#xff0c;助…

              解決 Ubuntu 20.04 虛擬機中 catkin_make 編譯卡死問題

              完整解決步驟 1. 禁用當前交換文件 sudo swapoff /swapfile 2. 刪除舊的交換文件 sudo rm /swapfile 3. 使用更可靠的創建方法 # 使用 dd 命令創建交換文件&#xff08;更兼容但較慢&#xff09; sudo dd if/dev/zero of/swapfile bs1M count4096# 或者使用 truncate 命令…

              實驗設計與分析(第6版,Montgomery)第5章析因設計引導5.7節思考題5.7 R語言解題

              本文是實驗設計與分析&#xff08;第6版&#xff0c;Montgomery著&#xff0c;傅玨生譯) 第5章析因設計引導5.7節思考題5.7 R語言解題。主要涉及方差分析&#xff0c;正態假設檢驗&#xff0c;殘差分析&#xff0c;交互作用圖&#xff0c;等值線圖。 dataframe <-data.frame…

              linux變量的分類

              文章目錄 bash中的引號linux變量的分類1.環境變量2.本地變量&#xff1a;3.局部變量4.內置變量5. 位置參數變量6. 特殊變量 變量的定義規則8.數組 bash中的引號 雙引號"" &#xff1a;會把引號的內容當成整體來看待&#xff0c;允許通過 符號引用其他變量值單引 號 …

              邏輯回歸知識點

              一、邏輯回歸概念 邏輯回歸(Logistic Regression)是一種廣泛應用于分類問題的統計方法&#xff0c;尤其適用于二分類問題。 注意: 盡管名稱中有"回歸"二字&#xff0c;但它實際上是一種分類算法。 解決二分類的問題。 API&#xff1a;sklearn.linear_model.Logis…