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的演示应用程序