Da LotusScript a ChatGpt e viceversa

ChatGpt di OpenAI.com è un po’ l’argomento principale degli ultimi mesi , tutti abbiamo provato ad usarlo e stiamo pensando a come utilizzarlo in casi reali. Proprio alla luce di queste considerazioni la prima domanda che ci siamo fatta è “ma riuscirò ad usarlo all’interno di un’applicazione Domino?”

La risposta è Si , si può fare : lo stiamo investigando in questi giorni ed i primi risultati sono positivi ; vero che a volte dalla teoria alla pratica si scoprono sempre sorprese e quindi l’ultima parola non è mai detta ma qui mi sento ottimista. LotusScript può interrogare ChatGpt e riceverne la risposta.

OpenAi ha rilasciato delle API per connettersi a ChatGpt ma, almeno per il momento, sono limitate a Python e node.js . In aggiunta diverse communities hanno già pubblicato librerie di codice per connettersi a CatGpt da altri linguaggi. E’ difficile pensare che qualcosa del genere verrà mai realizzato per LotusScript .

Però andando a vedere come sono realizzate le chiamate e provando a sperimentare sul playground di ChatGpt si capiscono i meccanismi che stanno alla base delle chiamate verso ChatGpt .

La prima cosa necessaria, a prescindere dal codice usato, è la chiave API per l’autenticazione : questa si ottiene registrandosi sul sito e poi andando nei dettagli del proprio account alla voce ApiKeys
E’ una stringa di 51 caratteri che dovrà poi essere passata ad ogni chiamata.

A questo punto ho iniziato a costruire un primo prototipo in LotusScript , le parte principali sono due:

  • La classe NotesHTTPRequest per inviare la richiesta e ottenere la risposta
  • La costruzione del Json da inviare e poi il parse del Json di ritorno

Per la NotesHttpRequest c’è poco da dire , solo ricordatevi che la API key va gestita come header della richiesta.

Per la parte Json ci sono ovviamente varie possibilità per costruirlo e poi per farne il parse, ovviamente l’importante è seguire le regole di ChatGpt : anche qui usando il playground si può facilmente capire come costruirlo, che parametri passare e come.

Un esempio tipico è questo :

{
"model": "text-davinci-003",
"prompt": "inserire qui la domanda.",
"temperature": 0,
"max_tokens": 100,
"top_p": 1,
"frequency_penalty": 0,
"presence_penalty": 0,
"stop": ["\n"]
}

Anche per fare il parse della risposta ci sono diverse possibilità, si può utilizzare la classe NotesJSONNavigator in LotusScript oppure una librerie già presenti in rete come questa https://www.openntf.org/main.nsf/project.xsp?r=project/JSON+LotusScript+Classes in OpenNtf.

Alla fine di tutto quello che ho ottenuto è una form in cui inserire la domanda con un pulsante che la invia, fa il parse della risposta e scrive la risposta stessa in un campo sottostante, il tutto utilizzando solo LotusScript:
Notes ChatGpt

Aggiungo una curiosità : fra le domande cho ho fatto a ChatGpt ho chiesto se conosce LotusScript (con risposta affermativa) e poi ho domandato se poteva scrivermi il codice LotusScript per inviare richieste a ChatGpt . Anche qui la risposta è stata affermativa ma il codice che mi ha fornito aveva parecchi errori.

Ho risposto facendo notare i vari errori e mi sono state proposte delle correzioni che erano ugualmente errate . Da quanto ho capito al momento CathGpt non “impara” dai propri errori , quindi è possibile che rifacendogli le stesse domande si ottenagno ancora gli stessi errori.

 

5 Commenti

  1. Christian

    Hi,

    it’s very interesting, do you have an example-database to download?

    Christian

    • Fabio Di Paola

      Hi Christian, sorry, not ready yet: I’m still developing it and it’s just a prototype to understand how it works

  2. Brian Arnold

    Can you provide an example of setting the API Key in the NotesHTTPRequest header?

    • Fabio Di Paola

      Hi Brian, here it is:
      apiKey = "1234567890000191991"
      Set request = session.CreateHTTPRequest()
      Call request.SetHeaderField("Authorization", "Bearer " + apiKey)

  3. Christian

    Hi Fabio,

    here can you find our template: https://atnotes.de/index.php/topic,63742.msg405688.html#msg405688

    This database contains the Script-Library ChatGPT. This script library delivers the core functions to request the Chat GPT API with minimalistic code in the Notes-Client or Web-Browser. Its primary purpose is to get you introduced faster into the API – it delivers core functions and can be extended and adjusted anytime.