ChatGPTSwift
2.4.4
使用Swift訪問OpenAi ChatGpt官方API。在所有Apple平台上工作。
platform :ios , '15.0'
use_frameworks!
target 'MyApp' do
pod 'ChatGPTSwift' , '~> 1.3.1'
end 從Openai註冊API密鑰。用API鍵初始化
let api = ChatGPTAPI ( apiKey : " API_KEY " ) 有2個API:流和正常
服務器將流傳輸大量數據,直到完成為止,您可以使用for-loop這樣的方法AsyncThrowingStream :
Task {
do {
let stream = try await api . sendMessageStream ( text : " What is ChatGPT? " )
for try await line in stream {
print ( line )
}
} catch {
print ( error . localizedDescription )
}
}正常的HTTP請求和響應生命週期。服務器將發送完整的文本(這需要更多時間才能響應)
Task {
do {
let response = try await api . sendMessage ( text : " What is ChatGPT? " )
print ( response )
} catch {
print ( error . localizedDescription )
}
}
可選地,您可以提供模型,系統提示,溫度和模型。
let response = try await api . sendMessage ( text : " What is ChatGPT? " ,
model : " gpt-4 " ,
systemText : " You are a CS Professor " ,
temperature : 0.5 )這些參數的默認值是:
gpt-3.5-turboYou're a helpful assistant0.5要了解有關這些參數的更多信息,您可以訪問官方的CHATGPT API文檔和ChatGpt API簡介頁面
客戶存儲將包含在新提示中的對話的歷史列表,以便chatgpt意識到對話的上下文。在發送新提示時,客戶將確保使用gptencoder庫來確保代幣計數不超過4096,以計算字符串中的令牌,以防萬一超過令牌,以前的某些對話將被截斷。將來,我將提供一個API來指定令牌閾值,因為新的GPT-4模型在提示中接受更大的8K令牌。
您可以從historyList屬性中查看當前歷史記錄列表。
print ( api . historyList )您也可以通過調用刪除歷史記錄列表
api . deleteHistoryList ( )您可以提供自己的歷史記錄列表,這將替換存儲的歷史記錄列表。請記住不要通過4096代幣閾值。
let myHistoryList = [
Message ( role : " user " , content : " who is james bond? " )
Message ( role : " assistant " , content : " secret british agent with codename 007 " ) ,
Message ( role : " user " , content : " which one is the latest movie? " ) ,
Message ( role : " assistant " , content : " It's No Time to Die played by Daniel Craig " )
]
api . replaceHistoryList ( with : myHistoryList ) 我還為OpenAI GPT模型創建了GPTENCODER SWIFT BPE編碼器/解碼器。用於OpenAI GPT API的代幣文本的程序化接口。
我還創建了GPTTokenizerUI,您可以在應用程序中集成的SPM LIB,以提供GUI輸入文本並顯示GPT API使用的令牌化結果。
您可以從Swiftuichatgpt存儲庫中檢查iOS和MACO的演示應用程序