GPT-Engineer Tu nuevo asistente de programación de IA

GPT-Engineer, tu nuevo asistente de programación de IA

 

Introducción

 

¿No sería genial tener un compañero de programación que nunca se cansa, trabaja las 24 horas del día y puede generar un código completo a partir de una sola descripción del proyecto? Ese es el objetivo de un nuevo proyecto llamado GPT-Engineer, uno de los numerosos codificadores impulsados por IA que están surgiendo. Es una herramienta de construcción de aplicaciones impulsada por IA que utiliza el poder de GPT para ayudarte a construir aplicaciones. Desarrollado por Anton Osika, GPT-Engineer es un cambio de juego en el mundo del desarrollo asistido por IA. Puedes ver el repositorio de GPT-Engineer en GitHub aquí para verlo en acción.

GPT-Engineer no es solo otra herramienta de IA; es tu asistente de codificación. Ya sea que estés construyendo una aplicación simple o algo más complejo, como un juego, GPT-Engineer puede ayudarte. Es como tener a un desarrollador junior a tu lado, haciendo preguntas para asegurarse de comprender completamente los requisitos de tu proyecto.

 

Poner en marcha GPT-Engineer

 

Antes de comenzar a codificar con GPT-Engineer, deberás instalarlo. Para hacerlo, clona el repositorio de GPT-Engineer desde la página de GitHub del proyecto. A continuación, crea un nuevo entorno con una versión reciente de Python e instala los módulos necesarios. Para obtener una guía paso a paso, dirígete a la página de GitHub de GPT-Engineer.

 

Aprovechando GPT-4 para generar indicaciones de documentación de diseño

 

La generación de indicaciones de GPT-Engineer se basa en alimentarle documentos de diseño. Pero, ¿cómo se redacta un documento de diseño útil? ¿Por qué no utilizar GPT-4 para ayudar a crearlos?!?

Utilicemos GPT-4 para generar descripciones detalladas de diseño de proyectos, que luego se pueden alimentar a GPT-Engineer. De esta manera, puedes asegurarte de que tu compañero de codificación basado en IA tenga toda la información que necesita para construir tu aplicación.

A modo de ejemplo, creemos un documento de diseño con GPT-4 para utilizarlo como indicación para GPT-Engineer. Realmente no se necesita mucho para que ChatGPT produzca un documento de diseño útil, aunque pueden ser más complejos, como verás a continuación. Aquí está nuestra indicación:

Quiero implementar un juego de la serpiente en Python, utilizando las reglas y la jugabilidad clásicas del juego. Puede utilizar bibliotecas externas para lograr esto. Genera un documento de diseño para este proyecto.

 

Aquí están las primeras líneas generadas del documento de diseño, que puedo asegurarte que, en su totalidad, hacen un buen trabajo al describir lo que se debe hacer.

Introducción El propósito de este documento de diseño es describir los detalles de implementación para crear un juego clásico de la serpiente en Python. El juego se adherirá a las reglas y la jugabilidad tradicionales, donde el jugador controla una serpiente que crece al comer alimentos mientras evita colisiones consigo misma y con los límites del juego. El juego se desarrollará utilizando bibliotecas externas para facilitar los gráficos y la entrada del usuario.

Componentes del juego El juego de la serpiente constará de los siguientes componentes: a) Serpiente: un objeto móvil que crece en longitud cuando come alimentos y pierde el juego si colisiona consigo misma o con los límites del juego. b) Alimentos: un objeto colocado al azar que la serpiente puede comer para aumentar su longitud y puntaje. …

 

Ahora que tenemos una indicación de documento de diseño, podemos usarla con GPT-Engineer.

 

Construyendo un documento de diseño con ChatGPT

 

Una de las grandes ventajas de GPT-Engineer es su versatilidad. Puede implementar un juego de la serpiente simple, al igual que puede ayudarte a construir una amplia gama de aplicaciones, incluyendo una base de datos simple de clave-valor utilizando solo los módulos estándar de la biblioteca de Python. Simplemente describe el proyecto en el archivo main.prompt, y GPT-Engineer te pedirá las aclaraciones necesarias. Una vez que hayas proporcionado los detalles, siéntate y observa cómo GPT-Engineer genera tu código base.

Primero, generemos un documento de diseño con ChatGPT-4. Recuerda, no es necesario utilizar ChatGPT para lograr esto. Si tienes una descripción detallada del software que deseas construir, puedes utilizarla. Pero para una conversión completa de tus notas de diseño a algo que sea fácilmente ingestible por GPT-Engineer, esta es una ruta lógica a seguir.

Aquí está la indicación que el autor utilizó con ChatGPT-4 para generar un documento de diseño:

Genera un documento de diseño de alta calidad que pueda ser utilizado por nuestro equipo de proyectos para diseñar el software descrito a continuación. Debe ser completo y utilizable como única documentación de diseño para que nuestro equipo complete nuestro proyecto.

— Motor de base de datos de clave-valor simple escrito en Python utilizando solo módulos de la biblioteca estándar (excepto los mencionados a continuación).

La interacción básica con el motor de base de datos cuando está en funcionamiento debe ser a través de un módulo de Python importado con una API de biblioteca clara y concisa.

También debe haber una consola separada que se pueda ejecutar para actuar como una interfaz de línea de comandos REPL para interactuar con el motor de base de datos y las bases de datos.

Los métodos adicionales de interacción deben incluir una API creada con Fast API (biblioteca externa).

Especificaciones de diseño:

Una base de datos de clave-valor es un tipo de base de datos NoSQL que almacena datos como una colección de pares de clave-valor. A diferencia de las bases de datos relacionales tradicionales, las bases de datos de clave-valor no imponen un esquema rígido, lo que proporciona flexibilidad y escalabilidad para ciertos casos de uso. Diseñar una base de datos de clave-valor implica considerar varias especificaciones importantes.

Comandos que deben ser accesibles: – conectarse a la base de datos – eliminar base de datos – obtener clave – insertar datos – actualizar datos – eliminar datos – buscar la existencia tanto de claves como de valores

Modelo de datos: Cada registro consta de una clave única y un valor asociado. El valor puede ser un valor escalar simple o una estructura de datos compleja (como JSON o XML).

Estructura de clave: La clave sirve como identificador principal para cada entrada de datos y debe ser única dentro de la base de datos. Las claves pueden ser cadenas alfanuméricas, enteros o incluso claves compuestas (valores múltiples combinados para formar una clave única).

Estructura de valor: El valor asociado con cada clave puede ser de cualquier tipo de dato. Puede variar desde tipos de datos básicos (cadenas, números, booleanos) hasta estructuras más complejas como objetos o matrices anidadas.

Rendimiento y caché: Se deben emplear técnicas de almacenamiento en caché en memoria para acelerar las operaciones de lectura y reducir la latencia.

 

Y aquí está el documento de diseño que ChatGPT-4 produjo:

Visión general El objetivo principal de este proyecto es diseñar y desarrollar un

motor de base de datos de clave-valor ligero escrito en Python, utilizando solo módulos de la biblioteca estándar y FastAPI para la interfaz HTTP. La aplicación proporcionará las características esenciales de una base de datos de clave-valor, incluida la conexión a la base de datos, la inserción, actualización, eliminación y recuperación de datos, junto con la funcionalidad de búsqueda para claves y valores.

La base de datos se interfazará a través de tres métodos: 1. Un módulo de Python que puede ser importado por otros programas de Python. 2. Una consola REPL de línea de comandos para la interacción manual. 3. Una API creada con FastAPI para interacciones remotas.

Componentes El motor de la base de datos tendrá los siguientes componentes principales:

1. **Almacenamiento de datos**: El almacenamiento real para los pares de clave-valor. Como una implementación simple en Python, esto podría ser un diccionario donde las claves son identificadores únicos y los valores pueden ser de cualquier tipo de dato. El almacenamiento de datos debe tener métodos eficientes para acceder, agregar, actualizar y eliminar datos. 2. **Motor de base de datos**: El motor que proporciona los métodos para interactuar con el almacenamiento de datos. Esto incluirá métodos para conectarse a una base de datos, insertar, actualizar y eliminar datos, así como obtener un valor por clave. También debe incluir un método para verificar la existencia de una clave o valor específico en el almacenamiento de datos. 3. **Caché en memoria**: Una capa de caché que almacena datos accedidos con frecuencia para mejorar la velocidad de lectura y reducir la latencia. Esto se puede implementar utilizando el decorador `functools.lru_cache` de Python o una solución de caché personalizada. 4. **CLI**: Una interfaz de línea de comandos para la interacción manual con el motor de base de datos. Esto utilizaría el módulo `cmd` o `argparse` de la biblioteca estándar de Python para crear una interfaz REPL. 5. **API HTTP**: Una aplicación FastAPI que expone los métodos del motor de base de datos como una API HTTP. Esto permitirá la interacción remota con la base de datos.

Modelo de datos El motor de la base de datos seguirá un modelo de datos de clave-valor

simple. Cada registro en la base de datos consistirá en una clave única y un valor asociado.

### Estructura de clave Las claves pueden ser cadenas alfanuméricas, enteros o claves compuestas. Deben ser únicas dentro de la base de datos y servirán como identificador principal para cada entrada de datos.

### Estructura de valor El valor asociado con cada clave puede ser de cualquier tipo de dato de Python. Puede variar desde tipos de datos básicos (cadenas, números, booleanos) hasta estructuras más complejas como objetos o matrices anidadas.

Diseño de la API La API de la biblioteca de Python, CLI y FastAPI deben proporcionar

las siguientes funciones: – `connect(database_name: str)`: Conectarse a una base de datos. Crea la base de datos si no existe. – `delete_database(database_name: str)`: Elimina una base de datos. – `insert(key: str, value: Any)`: Inserta un nuevo par de clave-valor en la base de datos. – `update(key: str, value: Any)`: Actualiza el valor de una clave existente. – `delete(key: str)`: Elimina un par de clave-valor de la base de datos. – `get(key: str)`: Obtiene el valor de una clave de la base de datos. – `exists_key(key: str)`: Verifica si una clave existe en la base de datos. – `exists_value(value: Any)`: Verifica si un valor existe en la base de datos.

Rendimiento y caché Se emplearán técnicas de almacenamiento en caché en memoria

para acelerar las operaciones de lectura y reducir la latencia. Se puede utilizar el decorador `functools.lru_cache` o una solución de almacenamiento en caché personalizada con este propósito. El caché debe tener un tamaño máximo para evitar un uso excesivo de memoria.

Conclusión Este documento proporciona un diseño de alto nivel para una base de datos de clave-valor

simple utilizando Python y FastAPI. Al adherirse a este diseño, podemos asegurar que la base de datos será flexible y escalable, satisfaciendo las necesidades de diversas aplicaciones.

 

Y eso es todo. Lo único que quedaba por hacer era ejecutar GPT-Engineer y dirigirlo a estos criterios.

 

Conclusión

 

Entonces, ¿qué sigue ahora? ¿Cómo solucionamos los problemas que estaban presentes en el código generado? Bueno, recientemente y hasta hace unos días, el autor estaba utilizando GPT-Engineer en conjunto con Aider, otro proyecto capaz de generar software respaldado por GPT, para intentar ajustar los resultados. Sin embargo, con la reciente disponibilidad pública del complemento ChatGPT Code Generator, parece que probarlo tanto para generar como para corregir código sería una buena idea.

En resumen, GPT-Engineer es más que una herramienta, es una revolución potencial en la forma en que construimos aplicaciones. Es una prueba del poder de la inteligencia artificial, los LLM y tal vez un vistazo al futuro de la codificación. Independientemente de si eres un desarrollador experimentado o recién estás comenzando, definitivamente vale la pena echarle un vistazo a GPT-Engineer.

¡Feliz codificación!  

We will continue to update Zepes; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

Inteligencia Artificial

Explicar decisiones médicas en entornos clínicos utilizando Amazon SageMaker Clarify

En esta publicación, mostramos cómo mejorar la explicabilidad del modelo en entornos clínicos utilizando Amazon SageM...

Inteligencia Artificial

40+ Herramientas de IA para la Creación y Edición de Videos en 2023

Adobe Premiere Pro Adobe Premiere Pro es un software de edición de video con capacidades de inteligencia artificial q...

Inteligencia Artificial

Investigadores de Microsoft proponen Síntesis Visual Responsable de Vocabulario Abierto (ORES) con el Marco de Intervención de Dos Etapas

Los modelos de síntesis visual pueden producir imágenes cada vez más realistas gracias al avance del entrenamiento de...

Investigación

Entrenando máquinas para aprender más como lo hacen los humanos

Los investigadores identifican una propiedad que ayuda a los modelos de visión por computadora a aprender a represent...