Usare ChatGPT
Info
Esempi
Linguaggio
Librerie
Formule
Ultimi Inseriti

 Login

 Password

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:
  1. Registrarsi in OpenAI platform;
  2. creare una chiave per accedere alle API dal nostro file;
  3. è possibile [https://platform.openai.com/settings/organization/billing/overview]acquistare del credito su questa pagina.
Altre pagine utili sono queste:
  1. per un dettaglio dei costi per l'uso delle API a seconda del modello;
  2. 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:
  1. 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";
  2. 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;
  3. 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
Public Contesto As String

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
Function EstraiDaJson(RispostaInJson As String) As String
  Dim json As Object
  Set json = JsonConverter.ParseJson(RispostaInJson)
  EstraiDaJson = json("choices")(1)("message")("content")
End Function
 

data4idea srls - PIva 01881000937 - info@data4idea.it