Доступ Openai Office Office API с использованием Swift. Работает на всех платформах Apple.
platform :ios , '15.0'
use_frameworks!
target 'MyApp' do
pod 'ChatGPTSwift' , '~> 1.3.1'
end Зарегистрируйтесь для API -ключа от OpenAI. Инициализировать с помощью ключа API
let api = ChatGPTAPI ( apiKey : " API_KEY " ) Есть 2 API: поток и нормальный
Сервер будет транслировать куски данных до завершения, метод AsyncThrowingStream , который вы можете зацикнуть, используя для петли, как SO:
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 )
}
}
Необязательно, вы можете предоставить модель, системную подсказку, температуру и модель, как SO.
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Чтобы узнать больше об этих параметрах, вы можете посетить официальную документацию по API CHATGPT и страницу введения API CHATGPT
Клиент хранит список истории разговора, который будет включен в новую подсказку, поэтому CHATGPT знает о предыдущем контексте разговора. При отправке новой подсказки клиент позаботится о том, чтобы количество токенов не превышало 4096, используя библиотеку Gptencoder для расчета токенов в строке, если он превышает токен, некоторые из предыдущих разговоров будут усечены. В будущем я предоставлю 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 ) Я также создал gptencoder Swift BPE Encoder/Decoder для моделей Openai GPT. Программный интерфейс для токенизации текста для API OpenAI GPT.
Я также создал gpttokenizerui, SPM LIB, который вы можете интегрировать в свое приложение для предоставления графического интерфейса для ввода текста и показать результаты токенизации, используемые GPT API.
Вы можете проверить демонстрационные приложения для iOS и macOS из репозиции Swiftuichatgpt