Di sicuro
ChatGPT non ha bisogno di presentazioni e quasi tutti se on tutti lo hanno almeno provato, e di certo sapete che è anche possibile interagire con il motore di ChatGPT attraverso delle
API e questo si può fare anche da Excel.
Per farlo è necessario fare alcuni passi:
- Registrarsi in OpenAI platform;
- creare una chiave per accedere alle API dal nostro file;
- è possibile [https://platform.openai.com/settings/organization/billing/overview]acquistare del credito su questa pagina.
Altre pagine utili sono queste:
- per un dettaglio dei costi per l'uso delle API a seconda del modello;
- per vedere lo speso in dollari o token.
Dal punto di vista tecnico le chiamate sono delle semplici chiamate HTTP con solo un paio di punti di attenzione:
- Non viene memorizzato il contesto come quando utilizzate normalmente ChatGPT on line: deve essere passato ogni volta per intero, sia le "domande" che le "risposte";
- il passaggio dei dati è in formato JSON, nell'esempio qui sotto abbiamo usato la libreria JSON in VBA che trovate su GitHub distribuito con licenza BSD;
- naturalmente deve essere inserita la propria chiave al posto di "Chiave_Utente" nella procedura.
Per l'utilizzo:
per inizializzare il contesto:
ChatGPT_Inizializza (Prompt)
per fare una richiesta:
Risposta = ChatGPT_InviaPrompt(Prompt)
Il codice delle funzioni
Variabile globale per memorizzare il contesto della conversazione
Prepara il contesto senza inviare richieste
Sub ChatGPT_Inizializza(
TestoPrompt)
If (Contesto <> "")
Then Contesto = Contesto & ","
Contesto = Contesto & "{""role"": ""user"", ""content"": """ &
TestoPrompt & """}"
End Sub
Invia una richiesta (aggiunta al contesto precedente) a ChatGPT
Function ChatGPT_InviaPrompt(
TestoPrompt)
Dim apiUrl
As String
Dim apiKey
As String
Dim Risposta
As String
Dim RispostaInJson
As String
Dim http
As Object
Dim requestBody
As String
'Imposta indirizzo e chiave dell'API
apiUrl = "https://api.openai.com/v1/chat/completions"
apiKey = "Chiave_Utente"
'Aggiunge il nuovo messaggio dell'utente al contesto della chat
If (Contesto <> "")
Then Contesto = Contesto & ","
Contesto = Contesto & "{""role"": ""user"", ""content"": """ &
TestoPrompt & """}"
'Costruisci la richiesta JSON con l'intero contesto(precedenti+prompt)
requestBody = "{""model"": ""gpt-3.5-turbo"", ""messages"": [" & Contesto & "]}"
' Crea un'istanza dell'oggetto XMLHTTP e invia la chiamata HTTP
Set http = CreateObject("MSXML2.XMLHTTP")
With http
.
Open "POST", apiUrl, False
.setRequestHeader "Content-
Type", "application/json"
.setRequestHeader "Authorization", "Bearer " & apiKey
.send requestBody
End With
If (http.Status = 200)
Then
'Se è andata a buon fine
RispostaInJson = http.responseText
Risposta = EstraiDaJson(RispostaInJson)
'Aggiunge anche la risposta di GPT al contesto
Contesto = Contesto & ", {""role"": ""assistant"", ""content"": """ & Risposta & """}"
ChatGPT_InviaPrompt = Risposta
Else
'Errore!
Debug.
Print "Errore API: " & http.Status & " - " & http.statusText
End If
' Pulisci le variabili
Set http =
Nothing
End Function
Estrae la sola risposta dal messaggio