Accédez à l'API officielle Openai Chatgpt en utilisant SWIFT. Fonctionne sur toutes les plates-formes Apple.
platform :ios , '15.0'
use_frameworks!
target 'MyApp' do
pod 'ChatGPTSwift' , '~> 1.3.1'
end Inscrivez-vous à la clé API d'OpenAI. Initialiser avec la clé API
let api = ChatGPTAPI ( apiKey : " API_KEY " ) Il y a 2 API: Stream et normal
Le serveur diffusera des morceaux de données jusqu'à terminer, la méthode AsyncThrowingStream que vous pouvez faire boucle
Task {
do {
let stream = try await api . sendMessageStream ( text : " What is ChatGPT? " )
for try await line in stream {
print ( line )
}
} catch {
print ( error . localizedDescription )
}
}Un cycle de vie normal de demande HTTP et de réponse. Le serveur enverra le texte complet (il faudra plus de temps à la réponse)
Task {
do {
let response = try await api . sendMessage ( text : " What is ChatGPT? " )
print ( response )
} catch {
print ( error . localizedDescription )
}
}
Facultativement, vous pouvez fournir le modèle, l'invite du système, la température et le modèle comme ainsi.
let response = try await api . sendMessage ( text : " What is ChatGPT? " ,
model : " gpt-4 " ,
systemText : " You are a CS Professor " ,
temperature : 0.5 )Les valeurs par défaut pour ces paramètres sont:
gpt-3.5-turboYou're a helpful assistant0.5Pour en savoir plus sur ces paramètres, vous pouvez visiter la documentation officielle de l'API ChatGpt et la page d'introduction de l'API ChatGpt
Le client stocke la liste d'historique de la conversation qui sera incluse dans la nouvelle invite, donc CHATGPT Conscient du contexte précédent de la conversation. Lors de l'envoi d'une nouvelle invite, le client s'assurera que le nombre de jetons ne dépasse pas 4096 à l'aide de la bibliothèque GPTENCODER pour calculer les jetons en chaîne, au cas où il dépasserait le jeton, certaines des conversations précédentes seront tronquées. À l'avenir, je fournirai une API pour spécifier le seuil de jeton car le nouveau modèle GPT-4 accepte les jetons 8K beaucoup plus gros dans une invite.
Vous pouvez afficher la liste des histoires actuelles à partir de la propriété historyList .
print ( api . historyList )Vous pouvez également supprimer la liste d'historique en invoquant
api . deleteHistoryList ( )Vous pouvez fournir votre propre liste d'historique, cela remplacera la liste d'historique stockée. N'oubliez pas de ne pas passer le seuil de jetons 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 ) J'ai également créé le codeur / décodeur BPE Swift GPTENCODER pour les modèles Openai GPT. Une interface programmatique pour le texte de tokenisage pour l'Openai GPT API.
J'ai également créé GPTTokenizerUI, une lib SPM que vous pouvez intégrer dans votre application pour fournir une interface graphique pour saisir du texte et afficher les résultats de la tokenisation utilisés par l'API GPT.
Vous pouvez vérifier les applications de démonstration pour iOS et macOS du repo Swiftuichatgpt