Cómo construir ChatGPT
HogarHogar > Noticias > Cómo construir ChatGPT

Cómo construir ChatGPT

Jul 31, 2023

Brien Posey | 31 de julio de 2023

ChatGPT se ha vuelto inmensamente popular por su capacidad para responder aparentemente cualquier pregunta. Si bien la mayoría de los usuarios acceden a ChatGPT a través del sitio web de ChatGPT, es posible crear un script de PowerShell que envíe consultas a ChatGPT.

Puede utilizar esta técnica para crear una variedad de herramientas habilitadas para ChatGPT para las necesidades específicas de su organización. En este artículo, le mostraré cómo crear dicho script.

Relacionado: ¿Puede ChatGPT escribir código PowerShell?

Antes de continuar, es importante tener en cuenta que, si bien ChatGPT en sí es de uso gratuito, la API de ChatGPT, que es lo que usa PowerShell para interactuar con ChatGPT, tiene un costo. Cada consulta realizada por su secuencia de comandos utilizando la API genera un pequeño cargo. Para obtener información detallada sobre precios, puede consultar la página de precios de OpenAI.

Al revisar los detalles de precios de ChatGPT, notará que se basan en la cantidad de tokens utilizados en cada interacción. Más adelante en este artículo, explicaré cómo puede ajustar su secuencia de comandos para optimizar y limitar la cantidad de tokens utilizados.

El primer paso para crear un script de PowerShell habilitado para ChatGPT es generar una clave secreta.

Normalmente, cuando accede a ChatGPT a través de la interfaz web, inicia sesión con un nombre de usuario y contraseña. Sin embargo, cuando utilice un script de PowerShell para acceder a ChatGPT, necesitará una clave secreta en lugar de un nombre de usuario y contraseña.

Esta es la forma más sencilla de generar una clave secreta:

No hay nada difícil en crear una clave secreta. Simplemente proporcione un nombre que desee asociar con la clave. En la Figura 1, por ejemplo, puede ver que utilicé "Ejemplo" como nombre de clave. Vale la pena señalar, sin embargo, que una vez generada la clave, se debe mantener un registro de los caracteres que la componen. ChatGPT muestra la clave solo una vez y no hay forma de recuperar o buscar el contenido de la clave más adelante.

Figura 1.Haga clic en el botón Crear nueva clave secreta.

Como se mencionó anteriormente, el uso de la API ChatGPT conlleva un costo. Cuando creas una cuenta ChatGPT, OpenAI te otorga un pequeño crédito que te permite experimentar con la API. Tenga en cuenta que estos créditos eventualmente caducan. Si ha pasado un tiempo desde que creaste tu cuenta ChatGPT, es muy probable que los créditos hayan caducado, incluso si no has utilizado la API.

En tales casos, deberá agregar un método de pago a su cuenta antes de poder utilizar la API. De lo contrario, si intenta utilizar la API sin suficientes créditos o información de pago, PowerShell generará un mensaje de error como el que se muestra en la Figura 2. El mensaje indica que ha excedido su cuota actual y le recomienda verificar su plan y configuración de facturación. .

Figura 2.A menos que tenga una cuenta paga o una cuenta de crédito, PowerShell generará un mensaje como este.

Para evitar sorpresas en la facturación, puede configurar límites de uso para su cuenta. Para hacerlo, simplemente vaya a la página de límites de uso de OpenAI y especifique la cantidad máxima de dinero que se siente cómodo gastando por mes.

Una vez que haya generado la clave API necesaria y haya verificado el estado de su cuenta, puede continuar con la creación del script de PowerShell.

Antes de hacerlo, recomiendo visitar GitHub para descargar el script ChatGPT-Conversation. Este script de PowerShell le permite entablar una conversación con ChatGPT directamente desde PowerShell. Para usar el script, ubique la línea de código cerca del principio que define la variable $ApiKey, luego inserte su clave API allí.

Se recomienda encarecidamente comenzar con este script prediseñado porque se sabe que funciona correctamente. Al usarlo, puede verificar que todo esté bien con su cuenta OpenAI antes de escribir su código. La Figura 3 muestra un ejemplo de cómo se ve el script cuando se ejecuta.

Figura 3.Así es como se ve el script ChatGPT-Conversation.ps1 cuando se ejecuta.

Para este artículo, utilizaré el script ChatGPT-Conversation.ps1 como punto de partida. Sin embargo, voy a eliminar cualquier código innecesario, reduciendo el script a sus elementos más básicos para que todo lo que haga sea enviar una consulta a ChatGPT y mostrar la respuesta. Después de presentar mi versión modificada del script, lo guiaré a través de él, permitiéndole adaptar la técnica a sus propios scripts de PowerShell.

A continuación se muestra mi código simplificado y ligeramente modificado:

Antes de comenzar a explicar el código paso a paso, hay que cubrir un par de conceptos importantes.

El primer concepto es el de roles. ChatGPT tiene que ver con conversaciones, y tanto usted como el motor de IA tienen roles distintos en esa conversación. Por tanto, es necesario definir explícitamente estos roles.

Tu rol es el de usuario. Puede ver el rol de usuario al que se hace referencia en esta línea de código:

En la línea de código, asigna su rol como "usuario" y agrega su entrada (contenida dentro de la variable $userMessage) al objeto Historial de mensajes.

El historial de mensajes es otro concepto a entender. Cuando interactúa con ChatGPT a través de la interfaz web, es posible que haya notado que ChatGPT realiza un seguimiento de sus consultas. De manera similar, cuando invoca ChatGPT a través de PowerShell, sus consultas se almacenan en el objeto $MessageHistory.

Incluso si no tiene intención de mantener un registro de la conversación, deberá crear un objeto $MessageHistory. Esto se debe a que las respuestas de ChatGPT también se agregan al historial de mensajes, y para mostrar esas respuestas es necesario hacer referencia al historial de mensajes.

Como se muestra en la línea de código discutida anteriormente, enviar una consulta a ChatGPT implica agregar al historial de mensajes especificando una función (en este caso, su función en la conversación) y su consulta, que se conoce formalmente como contenido del mensaje.

Cuando ChatGPT genera una respuesta, también se agrega al historial de mensajes. Al igual que su entrada, la respuesta de ChatGPT está asociada con un rol. La diferencia, sin embargo, es que puedes elegir el rol de ChatGPT en la conversación, que esencialmente controla la personalidad de ChatGPT.

En el guión proporcionado, el rol de ChatGPT se establece como "eres un asistente útil". Sin embargo, tienes la opción de reemplazar este texto con una frase concisa de tu elección. Esto le permite hacer que ChatGPT sea divertido, atrevido o cualquier otro rasgo de personalidad que prefiera. Déjame demostrarte cómo funciona.

En la Figura 4, puedes ver que le pregunté a ChatGPT: "¿Qué es 2+2?". ChatGPT respondió con la respuesta correcta. A continuación, modifiqué la declaración de rol en el código, cambiando la línea de "eres un asistente útil" a "eres un asistente humorístico". Después de este cambio, volví a hacer la misma pregunta. Esta vez, ChatGPT aún proporcionó la respuesta correcta pero con un poco de actitud, mostrando su personalidad actualizada.

Figura 4.Puedes ajustar la personalidad de ChatGPT a tu gusto.

Examinemos ahora el código del script paso a paso.

La primera sección, que se muestra a continuación, define la clave API y el punto final de API.

La clave API se refiere a la clave secreta que creó anteriormente. Para usarlo en el script, simplemente pegue su clave secreta entre las comillas, eliminando los signos < >. El punto final de API es la URL a la que se dirigirán sus consultas y lo proporciona OpenAI.

Después de eso, declaramos una variable llamada $AiSystemMessage y la configuramos como "eres un asistente útil", como se mencionó anteriormente.

La siguiente línea de código (excluyendo los comentarios) establece una tabla hash que se utilizará para almacenar el historial de mensajes:

Como puede ver, el historial de mensajes se almacena dentro de la variable denominada $MessageHistory.

El siguiente paso del código implica definir una función llamada Inicializar-MessageHistory.

Así es como se ve la función:

Realmente no hay nada especial que debas saber sobre esta función. Borra el historial de mensajes y agrega un mensaje inicial al historial de mensajes. Observe que este mensaje inicial tiene un rol asociado de System. Además, el comando se canaliza al cmdlet Out-Null, lo que evita cualquier tipo de salida visible.

El script configura otra función llamada Invoke-ChatGPT.

Puedes ver esta función a continuación:

La función Invoke-ChatGPT define un encabezado de solicitud para la sesión de ChatGPT. Este encabezado de solicitud se almacena en una variable llamada $Header y contiene la clave API definida al comienzo del script.

Además, la función crea el cuerpo de la solicitud. El historial de mensajes es parte del cuerpo de la solicitud, pero no es la única. El cuerpo de la solicitud también especifica el motor GPT que se utilizará, la cantidad máxima de tokens y la temperatura. En particular, hay algunos motores (modelos) GPT diferentes disponibles para elegir, y cada modelo tiene su costo por token asociado, que se puede encontrar en la página de precios mencionada anteriormente.

El parámetro max_tokens utilizado en la función controla la longitud máxima de las respuestas ChatGPT, lo que afecta directamente el costo general. Los valores de max_tokens más altos permiten respuestas más largas y costosas. Mientras tanto, el ajuste de la temperatura determina el estilo de la respuesta, ya sea más "práctica" o más creativa. Los valores de temperatura más altos tienden a generar respuestas más imaginativas.

Una vez que se forman el encabezado y el cuerpo de la solicitud, se envían a OpenAI a través del cmdlet Invoke-RestMethod.

El cuerpo principal del script es relativamente sencillo en comparación con las funciones.

Aquí está el cuerpo principal del guión:

El cuerpo principal comienza mostrando un cartel que presenta el guión. Después de eso, pasa el contenido de la variable $AISystemMessage a la función Initialize-MessageHistory. Como recordará, $AISystemMessage es la variable que almacena el rol de la IA.

A continuación, PowerShell usa el cmdlet Read-Host para capturar la entrada del usuario, que se almacena en la variable $userMessage. Luego, esta variable se agrega al historial de mensajes, junto con la función del usuario.

Luego, el historial de mensajes se pasa a la función Invoke-ChatGPT analizada anteriormente. La función Invoke-ChatGPT consulta ChatGPT y guarda el resultado en una variable llamada $aiResponse. El comando Write-Host muestra el contenido de la variable $aiResponse.

Finalmente, el script agrega la variable $aiResponse al historial de mensajes.

La principal diferencia entre el script que se encuentra en GitHub y mi script modificado es que el script de GitHub original contiene un bucle. Este bucle le solicita continuamente información hasta que decide salir del script, lo que le permite tener una conversación completa con ChatGPT.

En el guión que hemos estado discutiendo, eliminé ese bucle como una forma de reducir la complejidad.

Sobre el Autor

Más información sobre formatos de texto

Una nota sobre los costos de la API ChatGPTCómo crear una clave secretaFigura 1.Figura 2.El guión de conversación ChatGPTFigura 3.Una versión menos compleja del guiónDos conceptos clave: asignaciones de roles e historial de mensajesFigura 4.Inicializando el scriptLa función Inicializar historial de mensajesLa función Invoke-ChatGPTEl cuerpo principal del guiónConclusiónSobre el Autor