{"id":29664,"date":"2023-02-09T12:15:58","date_gmt":"2023-02-09T12:15:58","guid":{"rendered":"https:\/\/oct8ne.com\/?p=29664"},"modified":"2023-02-09T15:54:14","modified_gmt":"2023-02-09T15:54:14","slug":"integracion-gpt-con-oct8ne","status":"publish","type":"post","link":"https:\/\/oct8ne.com\/es\/blog\/integracion-gpt-con-oct8ne","title":{"rendered":"Integra GPT-3 con tu bot de Oct8ne (\u00a1en cinco minutos!)"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">GPT-3 (Generative Pre-trained Transformer versi\u00f3n 3) es un modelo de <\/span><i><span style=\"font-weight: 400;\">deep learning<\/span><\/i><span style=\"font-weight: 400;\"> desarrollado por 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;\">) enfocado al proceso de lenguaje natural, que ha sido entrenado con una gran cantidad de informaci\u00f3n y es capaz de \u201ccomprender\u201d textos que le suministramos para contestar a preguntas, clasificar datos, detectar intenciones, reescribir textos o traducirlos a otros idiomas, por citar algunas de sus utilidades.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Esto es lo que tendr\u00e1s que hacer para integrarlo a Oct8ne:\u00a0<\/span><\/p>\n<ol>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Crear una cuenta en OpenAI y obtener una clave de acceso a la API.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Modelar una conversaci\u00f3n en el dise\u00f1ador de Oct8ne que solicite al usuario el texto de entrada al chat GPT3 y mostrar la respuesta obtenida utilizando la API de OpenAI.<\/span><\/li>\n<\/ol>\n<p><span style=\"font-weight: 400;\">Ve\u00e1moslo paso a paso:<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">1. Crear una cuenta en OpenAI y obtener una API key<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Para tener acceso a la API de OpenAI, basta con visitar su sitio web en <\/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;\"> y registrarse como usuario. El registro es gratuito, aunque podremos utilizar la plataforma un n\u00famero limitado de veces; a partir de ah\u00ed, para continuar ser\u00e1 necesario contratar una <\/span><a href=\"https:\/\/openai.com\/api\/pricing\/\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">cuenta de pago<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Tras el registro, debemos acceder al men\u00fa <\/span><i><span style=\"font-weight: 400;\">API keys<\/span><\/i><span style=\"font-weight: 400;\">, donde usaremos el bot\u00f3n \u201cCreate a new secret key\u201d para generar una nueva clave de acceso a la API.<br \/>\n<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><i><span style=\"font-weight: 400;\">Debemos anotar esta clave porque la utilizaremos m\u00e1s adelante.<\/span><\/i><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-29586 size-full\" src=\"https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/unnamed-3.png\" alt=\"\" width=\"1385\" height=\"792\" title=\"\" srcset=\"https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/unnamed-3.png 1385w, https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/unnamed-3-300x172.png 300w, https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/unnamed-3-1024x586.png 1024w, https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/unnamed-3-768x439.png 768w\" sizes=\"auto, (max-width: 1385px) 100vw, 1385px\" \/><\/p>\n<h2><span style=\"font-weight: 400;\">2. Modelar la conversaci\u00f3n<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Usando el dise\u00f1ador de bots de Oct8ne, vamos a crear una conversaci\u00f3n sencilla, en la que \u00fanicamente solicitaremos al usuario la consulta a realizar al modelo GPT-3 de OpenAI y mostraremos la respuesta, finalizando la conversaci\u00f3n en ese momento.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Para ello, usaremos la acci\u00f3n \u201cPedir datos\u201d del dise\u00f1ador del bot para solicitar el texto al usuario. La informaci\u00f3n introducida la guardaremos en la variable \u201cconsulta\u201d:<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-29665 size-full\" src=\"https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/blogpostes1.png\" alt=\"\" width=\"916\" height=\"834\" title=\"\" srcset=\"https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/blogpostes1.png 916w, https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/blogpostes1-300x273.png 300w, https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/blogpostes1-768x699.png 768w\" sizes=\"auto, (max-width: 916px) 100vw, 916px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">A continuaci\u00f3n, insertamos en la conversaci\u00f3n una acci\u00f3n \u201cPetici\u00f3n HTTP\u201d. Esta acci\u00f3n permite enviar o solicitar informaci\u00f3n de sistemas externos que dispongan de una API p\u00fablica, como es el caso de OpenAI.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-29672 size-full\" src=\"https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/blogpostes2.png\" alt=\"\" width=\"1042\" height=\"836\" title=\"\" srcset=\"https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/blogpostes2.png 1042w, https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/blogpostes2-300x241.png 300w, https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/blogpostes2-1024x822.png 1024w, https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/blogpostes2-768x616.png 768w\" sizes=\"auto, (max-width: 1042px) 100vw, 1042px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">La acci\u00f3n \u201cPetici\u00f3n HTTP\u201d debemos configurarla con los siguientes aspectos b\u00e1sicos:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">El verbo debe ser \u201cPOST\u201d<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">La URL debe ser la proporcionada por OpenAI para la API, que en este caso es \u201c<\/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;\">\u201d.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Para el cuerpo de la petici\u00f3n debemos seleccionar la opci\u00f3n \u201capplication\/json\u201d, y en el \u00e1rea de texto utilizar el siguiente contenido:<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">{<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00abmodel\u00bb: \u00abtext-davinci-003\u00bb,<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00abprompt\u00bb: \u00ab&lt;var&gt;consulta&lt;\/var&gt;\u00bb,<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00abtemperature\u00bb: 0,<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00abmax_tokens\u00bb: 300<\/span><\/p>\n<p><span style=\"font-weight: 400;\">}<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Los valores que estamos suministrando indican que el modelo de GPT-3 que vamos a utilizar en la consulta es \u201ctext-davinci-003\u201d, que es el m\u00e1s potente de los modelos gen\u00e9ricos de base preentrenados que proporciona OpenAI. Pero podr\u00edamos usar <\/span><a href=\"https:\/\/beta.openai.com\/docs\/models\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">otros modelos disponibles<\/span><\/a><span style=\"font-weight: 400;\"> o incluso modelos entrenados de forma personalizada, para cubrir escenarios m\u00e1s espec\u00edficos.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">El \u201cprompt\u201d es el texto que vamos a enviar a la API. Como se puede observar, en este caso introducimos el contenido de la variable \u201cconsulta\u201d, que es justamente donde hemos almacenado el texto introducido por el usuario.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Con el par\u00e1metro \u201ctemperature\u201d regulamos el grado de creatividad o aleatoriedad de las respuestas de GPT-3. Podemos indicar valores entre cero y uno, donde cero arrojar\u00e1 resultados m\u00e1s previsibles, mientras que uno permitir\u00e1 devolver respuestas m\u00e1s creativas (aunque tambi\u00e9n con m\u00e1s probabilidad de resultar err\u00f3neas).<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Por \u00faltimo, \u201cmax_tokens\u201d permite limitar el tama\u00f1o de las respuestas. Hay que tener en cuenta que la API de OpenAI tiene costes en funci\u00f3n del tama\u00f1o de los textos que enviamos y recibimos, por lo que es una forma de controlar que no se dispare el gasto.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Una vez configurados estos puntos, a\u00fan debemos establecer dos configuraciones m\u00e1s en la acci\u00f3n \u201cPetici\u00f3n HTTP\u201d:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">En la secci\u00f3n \u201cEncabezados petici\u00f3n\u201d debemos a\u00f1adir un encabezado llamado \u201cAuthorization\u201d cuyo valor ha de ser la clave de uso de la API que hemos obtenido anteriormente desde el sitio web de OpenAI.<br \/>\n<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">En la secci\u00f3n \u201cMapeo respuesta\u201d, a\u00f1adir un mapeo para que la variable \u201crespuesta\u201d se cargue con el contenido del campo \u201cchoices[0].text\u201d retornado por la API.<\/span><\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-29678 size-full\" src=\"https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/blogpostes3.png\" alt=\"\" width=\"364\" height=\"831\" title=\"\" srcset=\"https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/blogpostes3.png 364w, https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/blogpostes3-131x300.png 131w\" sizes=\"auto, (max-width: 364px) 100vw, 364px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">A continuaci\u00f3n, y ya para finalizar, debemos mostrar el resultado al usuario. Esto consiste \u00fanicamente en a\u00f1adir una acci\u00f3n de tipo \u201cChat\u201d incluyendo el resultado obtenido desde la API en la interfaz de la conversaci\u00f3n (ya sea web WhatsApp, Messenger, etc.) Finalmente, enlazaremos una acci\u00f3n \u201cFin\u201d para que la conversaci\u00f3n se d\u00e9 por finalizada en ese mismo instante, aunque tambi\u00e9n podr\u00edamos optar por volver a la acci\u00f3n \u201cPedir datos\u201d para permitir que el usuario vuelva a realizar una consulta. Algo m\u00e1s abajo veremos un ejemplo de ello.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-29684 size-full\" src=\"https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/blogpostes4.png\" alt=\"\" width=\"1424\" height=\"833\" title=\"\" srcset=\"https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/blogpostes4.png 1424w, https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/blogpostes4-300x175.png 300w, https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/blogpostes4-1024x599.png 1024w, https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/blogpostes4-768x449.png 768w\" sizes=\"auto, (max-width: 1424px) 100vw, 1424px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">\u00a1Y eso es todo! Si en este momento lanzamos el bot, podremos comprobar que est\u00e1 listo para atender a nuestras consultas, ofreciendo siempre resultados asombrosos.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-29690 size-full\" src=\"https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/blogpostes5.png\" alt=\"\" width=\"324\" height=\"546\" title=\"\" srcset=\"https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/blogpostes5.png 324w, https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/blogpostes5-178x300.png 178w\" sizes=\"auto, (max-width: 324px) 100vw, 324px\" \/><\/p>\n<h2><span style=\"font-weight: 400;\">Un ejemplo m\u00e1s completo<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">La siguiente conversaci\u00f3n refleja b\u00e1sicamente los pasos que hemos descrito m\u00e1s arriba, aunque hemos a\u00f1adido un \u201cenvoltorio\u201d para hacer el resultado m\u00e1s profesional e interactivo de cara a los usuarios. Comenzamos la conversaci\u00f3n saludando al visitante, y luego le indicamos que puede introducir la consulta, o \u201cfin\u201d para finalizar la charla.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">En caso de que desee finalizar, simplemente llevaremos el flujo hacia la acci\u00f3n \u201cFin\u201d, que cerrar\u00e1 la conversaci\u00f3n. En otro caso, utilizaremos la acci\u00f3n \u201cPetici\u00f3n HTTP\u201d para enviar el texto introducido a OpenAI y esperar la respuesta, que quedar\u00e1 almacenada en la variable llamada \u201cresponse\u201d. Luego, volveremos al punto de inicio para volver a solicitar otro texto de entrada al usuario, de nuevo, hasta que introduzca el texto \u201cfin\u201d.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-29696 size-full\" src=\"https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/blogpostes6.png\" alt=\"\" width=\"1295\" height=\"772\" title=\"\" srcset=\"https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/blogpostes6.png 1295w, https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/blogpostes6-300x179.png 300w, https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/blogpostes6-1024x610.png 1024w, https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/blogpostes6-768x458.png 768w\" sizes=\"auto, (max-width: 1295px) 100vw, 1295px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">Al lanzar el bot, podremos tener conversaciones tan interesantes como las siguientes:<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-29702 size-full\" src=\"https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/blogpostes7.png\" alt=\"\" width=\"323\" height=\"545\" title=\"\" srcset=\"https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/blogpostes7.png 323w, https:\/\/oct8ne.com\/wp-content\/uploads\/2023\/02\/blogpostes7-178x300.png 178w\" sizes=\"auto, (max-width: 323px) 100vw, 323px\" \/><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>GPT-3 (Generative Pre-trained Transformer versi\u00f3n 3) es un modelo de deep learning desarrollado por OpenAI (www.openai.com) enfocado al proceso de lenguaje natural, que ha sido entrenado con una gran cantidad de informaci\u00f3n y es capaz de \u201ccomprender\u201d textos que le suministramos para contestar a preguntas, clasificar datos, detectar intenciones, reescribir textos o traducirlos a otros [&hellip;]<\/p>\n","protected":false},"author":14,"featured_media":29662,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[989],"tags":[],"class_list":["post-29664","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-novedades-oct8ne"],"_links":{"self":[{"href":"https:\/\/oct8ne.com\/es\/wp-json\/wp\/v2\/posts\/29664","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/oct8ne.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/oct8ne.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/oct8ne.com\/es\/wp-json\/wp\/v2\/users\/14"}],"replies":[{"embeddable":true,"href":"https:\/\/oct8ne.com\/es\/wp-json\/wp\/v2\/comments?post=29664"}],"version-history":[{"count":3,"href":"https:\/\/oct8ne.com\/es\/wp-json\/wp\/v2\/posts\/29664\/revisions"}],"predecessor-version":[{"id":29771,"href":"https:\/\/oct8ne.com\/es\/wp-json\/wp\/v2\/posts\/29664\/revisions\/29771"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/oct8ne.com\/es\/wp-json\/wp\/v2\/media\/29662"}],"wp:attachment":[{"href":"https:\/\/oct8ne.com\/es\/wp-json\/wp\/v2\/media?parent=29664"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/oct8ne.com\/es\/wp-json\/wp\/v2\/categories?post=29664"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/oct8ne.com\/es\/wp-json\/wp\/v2\/tags?post=29664"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}