? ? ? ? 寫在前面:因為現在自己實習的公司新拓展的一個業務是結合AI的低代碼平臺,我負責后端的開發,之前一直都是直接使用gpt或者文心一言等ui界面來直接使用大模型,從來沒有自己調接口過,所以本文記錄一下自己第一次使用大模型的心得,小趴菜一個,大佬們勿噴~~
? ? ? ? 源碼:llm_-api_-demo: 科大訊飛大模型API調用實例代碼 (gitee.com)
? ? ? ? 正文:
? ? ? ? 在調用模型API接口前,必須要使用到對應的大模型,我用的是科大訊飛的星火,官網地址放在這里了:訊飛開放平臺-以語音交互為核心的人工智能開放平臺 (xfyun.cn),進入注冊賬號然后申請對應的API權限即可(第一次使用免費,有量的限制),在控制臺中得到我們對應API接口的APPID、APISecret和APIKey,這些是后面我們通過java使用大模型的密鑰相當于。如圖所示:? ? ? ? 然后就可以找到對應模型的Demo下在本地(我用的是星火認知大模型的Demo),源碼放這了,只需改一下APPID、APISecret和APIKey應該就能跑起來了。對應的文檔我也放在這里了:1. 接口說明 | 訊飛開放平臺文檔中心 (xfyun.cn)
? ? ? ? 接下來,打開Demo,修改APPID、APISecret和APIKey,解釋一下這個Demo的功能(來自Kimi的專業分析)(因為我也不是很會,手動狗頭hhhh):
這段Java代碼是一個客戶端程序,用于與一個名為"BigModel"的在線聊天服務進行交互。以下是代碼的主要功能和組成部分的概述:
-
導入依賴:代碼開始部分導入了JSON處理、HTTP請求、WebSocket通信、加密等所需的庫。
-
類定義:
BigModelNew
類繼承自WebSocketListener
,用于處理WebSocket連接和消息。 -
常量定義:
hostUrl
:服務的URL地址,用于v1.1版本的API。appid
、apiSecret
、apiKey
:用于API鑒權的憑證。
-
成員變量:
historyList
:用于存儲對話歷史的列表。totalAnswer
:存儲大模型答案的字符串。NewQuestion
:當前用戶提出的問題。gson
:用于JSON序列化和反序列化的Gson實例。userId
?和?wsCloseFlag
:分別用于標識用戶和控制WebSocket連接的關閉。
-
構造函數:接收用戶ID和WebSocket關閉標志作為參數。
-
主函數 (
main
):程序入口,用于啟動WebSocket連接并發送用戶輸入的問題。 -
鑒權方法 (
getAuthUrl
):生成用于API鑒權的URL。 -
WebSocket事件處理:
onOpen
:WebSocket連接打開時,啟動一個新線程來發送請求。onMessage
:處理從服務端接收到的消息,并更新答案匯總。onFailure
:處理連接失敗的情況。
-
發送邏輯 (
MyThread
類):在新線程中構建請求JSON,并發送給服務端。 -
歷史記錄管理 (
canAddHistory
方法):檢查是否可以將新的回答添加到歷史記錄中。 -
JSON結構定義:定義了用于解析從服務端返回的JSON數據的內部類。
整體來看,這段代碼實現了以下功能:
- 與聊天服務建立WebSocket連接。
- 接收用戶輸入,并將其發送給服務端。
- 接收服務端的回答,并將其輸出到控制臺。
- 管理對話歷史,確保不超過一定長度。
- 實現基本的API鑒權機制。
? ? ? ? 需要注意的點是不同的hostUrl要對應不同的domain,記得修改。
? ? ? ? 然后運行即可,結果如下: