Acesse o OpenAi Chatgpt Official API usando Swift. Funciona em todas as plataformas da Apple.
platform :ios , '15.0'
use_frameworks!
target 'MyApp' do
pod 'ChatGPTSwift' , '~> 1.3.1'
end Registre -se para a chave da API do OpenAI. Inicialize com a chave da API
let api = ChatGPTAPI ( apiKey : " API_KEY " ) Existem 2 APIs: fluxo e normal
O servidor transmitirá pedaços de dados até concluir, o método AsyncThrowingStream que você pode loop usando o loop como assim:
Task {
do {
let stream = try await api . sendMessageStream ( text : " What is ChatGPT? " )
for try await line in stream {
print ( line )
}
} catch {
print ( error . localizedDescription )
}
}Uma solicitação HTTP normal e ciclo de vida de resposta. O servidor enviará o texto completo (levará mais tempo para resposta)
Task {
do {
let response = try await api . sendMessage ( text : " What is ChatGPT? " )
print ( response )
} catch {
print ( error . localizedDescription )
}
}
Opcionalmente, você pode fornecer o modelo, o prompt do sistema, a temperatura e o modelo como assim.
let response = try await api . sendMessage ( text : " What is ChatGPT? " ,
model : " gpt-4 " ,
systemText : " You are a CS Professor " ,
temperature : 0.5 )Os valores padrão para esses parâmetros são:
gpt-3.5-turboYou're a helpful assistant0.5Para saber mais sobre esses parâmetros, você pode visitar a página oficial da API ChatGPT e a página de introdução da API ChatGPT
O cliente armazena a lista de histórico da conversa que será incluída no novo prompt So Chatgpt ciente do contexto anterior da conversa. Ao enviar um novo prompt, o cliente garantirá que a contagem de token não esteja excedendo o 4096 usando a biblioteca GPTEncoder para calcular tokens na String, caso exceda o token, algumas das conversas anteriores serão truncadas. No futuro, fornecerei uma API para especificar o limite do token, pois o novo modelo GPT-4 aceita tokens de 8k muito maiores em um prompt.
Você pode visualizar a lista de histórico atual da propriedade historyList .
print ( api . historyList )Você também pode excluir a lista de histórico invocando
api . deleteHistoryList ( )Você pode fornecer sua própria lista de histórias, isso substituirá a lista de histórico armazenado. Lembre -se de não passar no limiar dos tokens 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 ) Também criei o codificador/decodificador do GPTENCODER SWIFT BPE para modelos OpenAI GPT. Uma interface programática para o texto tokenizador para a API do OpenAI GPT.
Eu também criei o GPTTOKenizerui, um SPM LIB que você pode integrar em seu aplicativo para fornecer à GUI para inserir texto e mostrar os resultados da tokenização usados pela API GPT.
Você pode verificar os aplicativos de demonstração para iOS e macOS do repo Swiftuichatgpt