A continuación encontrarás traducido al Castellano el artículo escrito por Geoff Perlman y publicado originalmente en el Blog Oficial de Xojo.
Tener la capacidad de utilizar ChatGPT desde tus apps con propósitos concretos abre un mundo de nuevas posibilidades.
ChatGPT es una IA o, de forma más específica un Modelo de Lenguaje Ampliado (LLM, en sus siglas en inglés). Para que el uso de ChatGPT en Xojo sea más sencillo, puedes utilizar la nueva clase ChatGPTConnection. Puedes encontrar un proyecto de ejemplo que te muestra como hacerlo ejecutando Xojo, haciendo clic a continuación en Examples en el Selector de Proyecto y luego mirando en la sección AI. Con esta clase, puedes utilizar ChatGPT desde tus proyectos Xojo.
Un ejemplo de cómo podrías usar ChatGPT en Xojo, he buscado un modo de convertir afirmaciones en preguntas; de modo que pregunto a ChatGPT:
Convierte “los límites numéricos de un double en xojo” en una frase.
La respuesta de ChatGPT es:
¿Cuáles son los límites numéricos de un tipo de dato double en Xojo?
Primeros pasos
Antes de ejecutar el ejemplo para probar la clase ChatGPTConnection o utilizarla en tus propios proyectos, tendrás que hacer tres cosas:
- Crea una cuenta en OpenAI.com. Es gratuito.
- Añade un método de pago a tu cuenta (para utilizar ChatGPT mediante una API es necesario pagar; más sobre esto a continuación).
- Obtén una clave API. Tendrás que haber añadido un método de pago antes de que puedas obtener una clave API.
Una vez completados los pasos anteriores, abre el proyecto de ejemplo ChatGPT, abre la clase ChatGPTConnection en el Inspector y asigna tu clave API a la constante APIKey. Ahora puedes ejecutar el ejemplo. Este ejemplo presenta una ventana que te permitirá conversar con ChatGPT.
Cada ventana es un contexto separado. Prueba a seleccionar File > New Conversation. Si haces referencia a preguntas realizadas en otra ventana no funcionará, porque en ese ejemplo cada ventana tiene su propio contexto.
Usar clases ChatGPT en tu proyecto
Para usar la clase ChatGPTConnection en tu proyecto, copia las clases ChatGPTConnection y ChatGPTException a tu proyecto.
Para usar la clase ChatGPTConnection, puedes arrastrarla sobre una nueva ventana, página web o pantalla mobile, o bien crear una nueva instancia mediante código. La mayor parte del trabajo se realiza mediante un único método: ReplyToPrompt. La sintaxis de ReplyToPrompt es:
ReplyToPrompt(prompt As String, Optional MaintainContext As Boolean = False) As String
En su forma más simple sólo has de pasar tu consulta y la clase devolverá la respuesta de ChatGPT. Por ejemplo:
Var gpt As New ChatGPTConnection Var response As String = gpt.ReplyToPrompt("Where were the 1980 Olympic Games held?") MessageBox(response)
Cuando quieras que ChatGPT considere las preguntas previas durante la mismas sesión, pasa True para el parámetro MaintainContext. Esto indica a la clase ChatGPTConnection que mantenga un histórico de todas tus preguntas y las respuestas de ChatGPT, de modo que se envían junto con tu nueva pregunta cada vez que se invoca al método ReplyToPrompt.
La cantidad de texto que puedes enviar no es ilimitado, de modo que define MaintainContext a True sólo realmente necesites que considere las anteriores preguntas y respuestas.
ChatGPTConnection utiliza por defecto GPT 3.5 Turbo, el cual tiene un límite máximo de 16.385 tokens por contexto. Un token es una cantidad de caracteres. La conversión es aproximadamente de 4 caracteres por token. Piensa en un token como en una palabra.
Cuando defines la propiedad MaintainContext a True, la clase ChatGPTConnection monitoriza el uso de tokens. Cuando alcanza el 90% del máximo permitido para el modelo que estás utilizando, comenzará a eliminar las peticiones y respuestas más antiguas de tu histórico (almacenados en la propiedad ContextHistory) para evitar que superes el límite.
Propiedades de la Clase ChatGPTConnection
No tienes por qué definir ninguna de las propiedades de la clase ChatGPTConnection dado que todas ellas cuentan con valores útiles por defecto. Sin embargo, si quieres utilizar un modelo distinto al empleado por omisión (gpt-3.5-turbo), entonces puedes definir la propiedad Model antes de invocar el método ReplyToPrompt.
Puedes encontrar un listado de modelos aquí. Los modelos tienen límites diferentes como la cantidad máxima de tokens que puedes usar, de modo que cuando cambies la propiedad Model, asegúrate de cambiar también la propiedad MaximumTokensPerContext para que refleje el valor apropiado del nuevo modelo.
La propiedad Temperature indica cuán creativo será ChatGPT. Otro modo de definirlo sería cuánto alucinará. Su valor comprende desde 0 (ninguna suposición) hasta 2 (haz todas las suposiciones que quieras). El valor por defecto es de 0.5. Por último, la propiedad TimeOut indica la cantidad de tiempo que ReplyToPrompt esperará por una respuesta. El valor por defecto es de 30 segundos.
Si algo va mal, la clase ChatGPTConnection lanzará una ChatGPTException, de modo que asegúrate de realizar tus llamadas al método ReplyToPrompt en un bloque Try…Catch:
Try Var gpt As New ChatGPTConnection Var response As String = gpt.ReplyToPrompt("Where were the 1980 Olympic Games held?") MessageBox(response) Catch e As ChatGPTException MessageBox("Error: " + e.Message) End Try
El precio de ChatGPT se calcula en millones de tokens. ChatGPT 3.5 es relativamente económico de modo que, si te ofrece el resultado deseado, úsalo. En el momento de escribir este artículo, cada millón de palabras/tokens enviado costará sólo 50 céntimos de dólares US. Cada millón de palabras/tokens que recibas en respuesta costará USD $1,50. Si precisas de respuestas con una mayor calidad, considera el uso de ChatGPT 4.