{"id":29717,"date":"2023-02-09T15:52:52","date_gmt":"2023-02-09T15:52:52","guid":{"rendered":"https:\/\/oct8ne.com\/?p=29717"},"modified":"2023-02-09T15:52:52","modified_gmt":"2023-02-09T15:52:52","slug":"integra-gpt-con-oct8ne","status":"publish","type":"post","link":"https:\/\/oct8ne.com\/it\/blog\/integra-gpt-con-oct8ne","title":{"rendered":"Integra GPT-3 con il tuo bot di Oct8ne (in cinque minuti!)"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">GPT-3 (Generative Pre-trained Transformer version 3) \u00e8 un modello di deep learning sviluppato da OpenAI (<\/span><a href=\"http:\/\/www.openai.com\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">www.openai.com<\/span><\/a><span style=\"font-weight: 400;\">) focalizzato sull&#8217;elaborazione del linguaggio naturale, che \u00e8 stato addestrato con una grande quantit\u00e0 d&#8217;informazioni ed \u00e8 in grado di &#8220;capire&#8221; i testi che gli forniamo per rispondere a domande, classificare dati, rilevare intenzioni, riscrivere testi o tradurli in altre lingue, per citare alcune delle sue utilit\u00e0.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Ecco cosa occorre fare per integrarlo con Oct8ne:\u00a0<\/span><\/p>\n<ol>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Creare un account OpenAI e ottenere una chiave di accesso all&#8217;API.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Modellare una conversazione nel configuratore di Oct8ne che chieda all&#8217;utente il testo di entrata al chat GPT3 e visualizzare la risposta utilizzando l&#8217;API OpenAI.<\/span><\/li>\n<\/ol>\n<p><span style=\"font-weight: 400;\">Vediamolo passo per passo:<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">1. Creare un account su OpenAI e ottenere una API key<br \/>\n<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Per accedere alle API di OpenAI, \u00e8 sufficiente visitare il sito web di OpenAI all&#8217;indirizzo <\/span><a href=\"https:\/\/openai.com\/api\/\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">https:\/\/openai.com\/api\/<\/span><\/a><span style=\"font-weight: 400;\"> e registrarsi come utente. La registrazione \u00e8 gratuita, ma \u00e8 possibile utilizzare la piattaforma solo per un numero limitato di volte, dopodich\u00e9 \u00e8 necessario sottoscrivere un <\/span><a href=\"https:\/\/openai.com\/api\/pricing\/\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">account a pagamento<\/span><\/a><span style=\"font-weight: 400;\"> per continuare.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Dopo la registrazione, dobbiamo accedere al menu delle API key, dove utilizzeremo il pulsante &#8220;<\/span><i><span style=\"font-weight: 400;\">Crea una nuova secret key<\/span><\/i><span style=\"font-weight: 400;\">&#8221; per generare una nuova chiave di accesso API.\u00a0<\/span><\/p>\n<p><i><span style=\"font-weight: 400;\">\u00c8 necessario prendere nota di questa chiave perch\u00e9 la utilizzeremo in seguito<\/span><\/i><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-29718 size-full\" src=\"https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/unnamed-3-1.png\" alt=\"\" width=\"1385\" height=\"792\" title=\"\" srcset=\"https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/unnamed-3-1.png 1385w, https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/unnamed-3-1-300x172.png 300w, https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/unnamed-3-1-1024x586.png 1024w, https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/unnamed-3-1-768x439.png 768w\" sizes=\"auto, (max-width: 1385px) 100vw, 1385px\" \/><\/p>\n<h2><span style=\"font-weight: 400;\">2. Modellare la conversazione<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Utilizzando il configuratore del bot di Oct8ne, creeremo una semplice conversazione, in cui chiederemo all&#8217;utente solo la domanda da fare al modello OpenAI GPT-3 e mostreremo la risposta, terminando la conversazione in quel momento.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Per farlo, utilizzeremo l&#8217;azione &#8220;Ask for data&#8221; del configuratore del bot per richiedere il testo all&#8217;utente. Le informazioni inserite saranno salvate nella variabile &#8220;query&#8221;:<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-29757 size-full\" src=\"https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/richiesta-dati.png\" alt=\"\" width=\"1569\" height=\"714\" title=\"\" srcset=\"https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/richiesta-dati.png 1569w, https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/richiesta-dati-300x137.png 300w, https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/richiesta-dati-1024x466.png 1024w, https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/richiesta-dati-768x349.png 768w, https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/richiesta-dati-1536x699.png 1536w\" sizes=\"auto, (max-width: 1569px) 100vw, 1569px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">Quindi, inseriamo un&#8217;azione &#8220;Richiesta HTTP&#8221; nella conversazione. Questa azione consente di inviare o richiedere informazioni da sistemi esterni che dispongono di un&#8217;API pubblica, come OpenAI.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-29724 size-full\" src=\"https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/richiesta-http.png\" alt=\"\" width=\"1557\" height=\"701\" title=\"\" srcset=\"https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/richiesta-http.png 1557w, https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/richiesta-http-300x135.png 300w, https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/richiesta-http-1024x461.png 1024w, https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/richiesta-http-768x346.png 768w, https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/richiesta-http-1536x692.png 1536w\" sizes=\"auto, (max-width: 1557px) 100vw, 1557px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">L&#8217;azione &#8220;Richiesta HTTP&#8221; deve essere configurata con i seguenti aspetti di base:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Il verbo deve essere &#8220;POST&#8221;.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">L&#8217;URL deve essere quello fornito da OpenAI per l&#8217;API, che in questo caso \u00e8 &#8220;<\/span><a href=\"https:\/\/api.openai.com\/v1\/completions\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">https:\/\/api.openai.com\/v1\/completions<\/span><\/a><span style=\"font-weight: 400;\">&#8220;.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Per il corpo della richiesta dobbiamo selezionare l&#8217;opzione &#8220;application\/json&#8221; e nell&#8217;area di testo utilizzare il seguente contenuto:<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">{<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0&#8220;model&#8221;: &#8220;text-davinci-003&#8221;,<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0&#8220;prompt&#8221;: &#8220;&lt;var&gt;consulta&lt;\/var&gt;&#8221;,<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0&#8220;temperature&#8221;: 0,<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0&#8220;max_tokens&#8221;: 300<\/span><\/p>\n<p><span style=\"font-weight: 400;\">}<\/span><\/p>\n<p><span style=\"font-weight: 400;\">I valori forniti indicano che il modello GPT-3 che utilizzeremo nella query \u00e8 &#8220;text-davinci-003&#8221;, che \u00e8 il pi\u00f9 potente dei modelli di base generici pre-addestrati forniti da OpenAI. Ma potremmo utilizzare altri <\/span><a href=\"https:\/\/platform.openai.com\/docs\/models\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">modelli disponibili<\/span><\/a><span style=\"font-weight: 400;\">, o anche modelli addestrati su misura, per coprire scenari pi\u00f9 specifici.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Il prompt \u00e8 il testo che invieremo all&#8217;API. Come si pu\u00f2 vedere, in questo caso inseriamo il contenuto della variabile &#8220;query&#8221;, che \u00e8 esattamente il punto in cui abbiamo memorizzato il testo inserito dall&#8217;utente.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Con il parametro &#8220;temperatura&#8221; regoliamo il grado di creativit\u00e0 o di casualit\u00e0 delle risposte del GPT-3. Possiamo indicare valori compresi tra zero e uno, dove zero dar\u00e0 risultati pi\u00f9 prevedibili, mentre uno ci permetter\u00e0 di restituire risposte pi\u00f9 creative (anche se con maggiori probabilit\u00e0 di sbagliare).<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Infine, &#8220;max_tokens&#8221; ci permette di limitare la dimensione delle risposte. Tenete presente che l&#8217;API OpenAI ha dei costi che dipendono dalla dimensione dei testi che inviamo e riceviamo, quindi questo \u00e8 un modo per controllare i costi.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Una volta configurati questi punti, dobbiamo impostare altre due configurazioni nell&#8217;azione &#8220;Richiesta HTTP&#8221;:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Nella sezione &#8220;Request Headers&#8221;, dobbiamo aggiungere un header chiamato &#8220;Authorization&#8221;, il cui valore deve essere la chiave d&#8217;uso dell&#8217;API che abbiamo precedentemente ottenuto dal sito web di OpenAI.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Nella sezione &#8220;Response mapping&#8221;, dobbiamo aggiungere una mappatura in modo che la variabile &#8220;response&#8221; venga caricata con il contenuto del campo &#8220;choices[0].text&#8221; restituito dall&#8217;API.<\/span><\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-29730 size-full\" src=\"https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/microsoftteams-image-8.png\" alt=\"\" width=\"367\" height=\"707\" title=\"\" srcset=\"https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/microsoftteams-image-8.png 367w, https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/microsoftteams-image-8-156x300.png 156w\" sizes=\"auto, (max-width: 367px) 100vw, 367px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">Infine, dobbiamo mostrare il risultato all&#8217;utente. Si tratta solo di aggiungere un&#8217;azione &#8220;Chat&#8221; che includa il risultato ottenuto dall&#8217;API nell&#8217;interfaccia della conversazione (che sia WhatsApp web, Messenger, ecc.). Infine, collegheremo un&#8217;azione &#8220;End&#8221; in modo che la conversazione venga terminata in quel preciso momento, o tornare all&#8217;azione &#8220;Ask for data&#8221; per consentire all&#8217;utente di effettuare nuovamente una richiesta. Ne vedremo un esempio qui di seguito..<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-29763 size-full\" src=\"https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/chat2.png\" alt=\"\" width=\"1569\" height=\"719\" title=\"\" srcset=\"https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/chat2.png 1569w, https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/chat2-300x137.png 300w, https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/chat2-1024x469.png 1024w, https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/chat2-768x352.png 768w, https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/chat2-1536x704.png 1536w\" sizes=\"auto, (max-width: 1569px) 100vw, 1569px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">E questo \u00e8 quanto! Se lanciamo il bot a questo punto, potremo vedere che \u00e8 pronto a rispondere alle nostre domande, offrendo sempre risultati sorprendenti.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-29742 size-full\" src=\"https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/last-chat2.png\" alt=\"\" width=\"347\" height=\"609\" title=\"\" srcset=\"https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/last-chat2.png 347w, https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/last-chat2-171x300.png 171w\" sizes=\"auto, (max-width: 347px) 100vw, 347px\" \/><\/p>\n<h2><span style=\"font-weight: 400;\">Un esempio pi\u00fa completo<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">La conversazione che segue rispecchia sostanzialmente i passaggi descritti sopra, anche se abbiamo aggiunto un &#8220;wrapper&#8221; per rendere il risultato pi\u00f9 professionale e interattivo per gli utenti. Iniziamo la conversazione salutando il visitatore e poi gli indichiamo la possibilit\u00e0 di inserire la domanda o di &#8220;terminare&#8221; per chiudere la chat.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Nel caso in cui l&#8217;interlocutore voglia concludere, \u00e8 sufficiente condurre il flusso all&#8217;azione &#8220;Fine&#8221;, che chiude la conversazione. Altrimenti, utilizzeremo l&#8217;azione &#8220;HTTP Request&#8221; per inviare il testo inserito a OpenAI e attendere la risposta, che sar\u00e0 memorizzata nella variabile &#8220;response&#8221;. Quindi, torneremo al punto di partenza per richiedere all&#8217;utente un altro testo di input, sempre fino a quando non verr\u00e0 inserito il testo &#8220;fine&#8221;.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-29736 size-full\" src=\"https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/overviewpanel.png\" alt=\"\" width=\"1570\" height=\"705\" title=\"\" srcset=\"https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/overviewpanel.png 1570w, https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/overviewpanel-300x135.png 300w, https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/overviewpanel-1024x460.png 1024w, https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/overviewpanel-768x345.png 768w, https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/overviewpanel-1536x690.png 1536w\" sizes=\"auto, (max-width: 1570px) 100vw, 1570px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">Lanciando il bot, potremo avere conversazioni interessanti come le seguenti:<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-29748 size-full\" src=\"https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/chat-front1.png\" alt=\"\" width=\"366\" height=\"611\" title=\"\" srcset=\"https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/chat-front1.png 366w, https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/chat-front1-180x300.png 180w\" sizes=\"auto, (max-width: 366px) 100vw, 366px\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>GPT-3 (Generative Pre-trained Transformer version 3) \u00e8 un modello di deep learning sviluppato da OpenAI (www.openai.com) focalizzato sull&#8217;elaborazione del linguaggio naturale, che \u00e8 stato addestrato con una grande quantit\u00e0 d&#8217;informazioni ed \u00e8 in grado di &#8220;capire&#8221; i testi che gli forniamo per rispondere a domande, classificare dati, rilevare intenzioni, riscrivere testi o tradurli in altre [&hellip;]<\/p>\n","protected":false},"author":14,"featured_media":29660,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[990],"tags":[],"class_list":["post-29717","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-notizie-oct8ne"],"_links":{"self":[{"href":"https:\/\/oct8ne.com\/it\/wp-json\/wp\/v2\/posts\/29717","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/oct8ne.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/oct8ne.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/oct8ne.com\/it\/wp-json\/wp\/v2\/users\/14"}],"replies":[{"embeddable":true,"href":"https:\/\/oct8ne.com\/it\/wp-json\/wp\/v2\/comments?post=29717"}],"version-history":[{"count":3,"href":"https:\/\/oct8ne.com\/it\/wp-json\/wp\/v2\/posts\/29717\/revisions"}],"predecessor-version":[{"id":29769,"href":"https:\/\/oct8ne.com\/it\/wp-json\/wp\/v2\/posts\/29717\/revisions\/29769"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/oct8ne.com\/it\/wp-json\/wp\/v2\/media\/29660"}],"wp:attachment":[{"href":"https:\/\/oct8ne.com\/it\/wp-json\/wp\/v2\/media?parent=29717"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/oct8ne.com\/it\/wp-json\/wp\/v2\/categories?post=29717"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/oct8ne.com\/it\/wp-json\/wp\/v2\/tags?post=29717"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}