
Recientemente tuve una experiencia asombrosa utilizando Gemini CLI para generar un proyecto completo. Lo más notable fue la capacidad de la herramienta para entender un requerimiento complejo, crear la estructura de archivos, el código, la configuración y las pruebas, todo a la primera.
Este artículo detalla la interacción paso a paso con Gemini CLI, demostrando su eficiencia para desarrolladores que buscan prototipar o generar código de producción de forma rápida.
1. El Requerimiento Inicial: Un Desafío Completo
Mi objetivo era crear una API de Python con características específicas que cubrieran la lógica de negocio, la seguridad, la persistencia de datos y las pruebas unitarias.
Aquí está el prompt exacto que utilicé:
Hola, puedes crear un script en python, creando un directorio nuevo y ejecutandolo desde allí? quiero que el programa tenga ciertas caterísticas por ejemplo que use el framework FastApi, que exponda una ruta segura que requiera un token y que el proceso que se realice al acceder a esa ruta sea la concatenación del texto enviado en formato JSON. La salida también será un documento JSON que se escriba incluso en un directorio de la aplicación. Usará clases de pydantic para validar los datos, y lo mas importante, contendrá modulo para realizar pruebas: la primera verificar que devuelve le JSON con el texto concatenado, y la segunda verificando la escritura del archivo de salida en el respectivo directorio. Instrucciones para ejecutar la aplicación y para correr las pruebas en un archivo README.md y los requerimientos en un archivo requirements.txt.
Puntos clave solicitados:
- Framework: FastAPI.
- Seguridad: Ruta segura con requerimiento de token de cabecera.
- Lógica: Concatenación de texto a partir de una entrada JSON.
- Persistencia: Escribir la salida JSON en un archivo dentro del proyecto.
- Validación: Uso de clases Pydantic.
- Pruebas (Pytest): Verificar la concatenación y la creación del archivo de salida.
- Documentación:
README.md
yrequirements.txt
.
2. La Respuesta y Planificación de Gemini CLI
Gemini no solo aceptó la solicitud, sino que también propuso un plan de desarrollo completo antes de tocar una sola línea de código, lo cual es excelente para la claridad.
El Plan de Acción (Respuesta de Gemini)
¡Claro que sí! He creado un plan completo para desarrollar tu aplicación FastAPI con todas las características que solicitaste.
Aquí está el plan:
1. Crear el directorio del proyecto: fastapi_text_concatenator
2. Estructurar el proyecto: Crear subdirectorios app (para la lógica de la aplicación) y tests (para las pruebas).
3. Escribir el código de la aplicación:
* app/models.py: Definir los modelos de datos de entrada y salida con Pydantic.
* app/main.py: Crear la aplicación FastAPI, el endpoint seguro / que concatena texto y escribe el resultado en un
archivo dentro de app/outputs/.
4. Escribir las pruebas:
* tests/test_main.py: Implementar dos pruebas: una para verificar la concatenación y la respuesta JSON, y otra
para verificar que el archivo de salida se crea correctamente.
5. Crear archivos de configuración y documentación:
* requirements.txt: Listar todas las dependencias.
* .env: Un archivo para guardar el token secreto de forma segura.
* README.md: Proporcionar instrucciones claras sobre cómo instalar, ejecutar y probar la aplicación.
Voy a empezar creando el directorio y todos los archivos necesarios.
Ejecución de Herramientas y Creación de Archivos
A continuación, Gemini CLI procedió a ejecutar los comandos de shell y a escribir los archivos, cumpliendo con cada punto del plan:
Acción de Gemini CLI | Descripción |
✔ Shell mkdir fastapi_text_concatenator | Crea el directorio principal del proyecto. |
✔ WriteFile Writing to .../requirements.txt | Crea el listado de dependencias: fastapi , uvicorn , pydantic , python-dotenv , pytest , httpx . |
✔ WriteFile Writing to .../.env | Crea el archivo de variables de entorno con el SECRET_TOKEN . |
✔ Shell mkdir -p .../app/outputs | Crea la estructura de directorios, incluyendo el de salida para los JSON. |
✔ WriteFile Writing to .../app/models.py | Define las clases Pydantic InputData y OutputData . |
✔ WriteFile Writing to .../app/main.py | Contiene la lógica de la API (función de dependencia para el token, la concatenación y la escritura en archivo). |
✔ Shell mkdir .../tests | Crea el directorio para las pruebas unitarias. |
✔ WriteFile Writing to .../tests/test_main.py | Implementa las pruebas usando pytest y el cliente de httpx . |
✔ WriteFile Writing to .../README.md | Genera la documentación completa con pasos de instalación, ejecución y pruebas. |
Exportar a Hojas de cálculo
¡El proyecto completo se generó en una sola interacción!
¿Qué se creó?
Obtuve una estructura de aplicación así:
├── app
│ ├── __init__.py
│ ├── main.py
│ ├── models.py
│ ├── outputs
│ └── __pycache__
│ ├── __init__.cpython-39.pyc
│ ├── main.cpython-39.pyc
│ └── models.cpython-39.pyc
├── README.md
├── requirements.txt
├── tests
│ ├── __init__.py
│ ├── __pycache__
│ │ ├── __init__.cpython-39.pyc
│ │ └── test_main.cpython-39-pytest-8.4.2.pyc
│ └── test_main.py
3. Puesta en Marcha y Pruebas Funcionales
Una vez creado el proyecto, Gemini proporcionó las instrucciones para ejecutar la aplicación y las pruebas, tal como se especificó en el README.md
.

Ejecución de la Aplicación (Servidor Uvicorn)
Los pasos para iniciar la aplicación son estándar en el ecosistema FastAPI:
cd fastapi_text_concatenator
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
uvicorn app.main:app --reload

Prueba Manual: Concatenación Correcta (Éxito)
Para probar la ruta segura, solicité a Gemini el script de curl
necesario:
> Dame un script de curl para enviar un texto a la ruta expuesta, dos palabras: Buenos, dias, a contatenar.
Respuesta de Gemini (con curl
):
Bash
curl -X POST "http://127.0.0.1:8000/" \
-H "Content-Type: application/json" \
-H "x-token: mi_token_super_secreto_123" \
-d '{"texts": ["Buenos", " ", "dias"]}'
Resultado en la Consola:
JSON
{"concatenated_text":"Buenos dias"}
Verificación: La concatenación se realizó correctamente y, debido a la lógica implementada por Gemini en
app/main.py
, un archivo JSON con este contenido se escribió en el directorioapp/outputs/
.
Prueba de Seguridad: Token Faltante (Caso de Error)
A continuación, probé a propósito un caso de error omitiendo el token de la cabecera para verificar la seguridad:
> y la salida en consola corretiendo el error adrede de no incluir el token: curl -X POST "http://127.0.0.1:8000/" -H "Content-Type: application/json" -d '{"texts": ["Buenos", " ", "dias"]}'
Resultado en la Consola:
JSON
{"detail":[{"type":"missing","loc":["header","x-token"],"msg":"Field required","input":null}]}
Verificación: FastAPI devolvió un error
422 Unprocessable Entity
(o un error de validación de esquema, que es un detalle interno de FastAPI en este caso) confirmando que la dependencia de seguridad (el tokenx-token
) es obligatoria.
Ejecución de Pruebas Unitarias (Pytest)
Finalmente, ejecuté las pruebas generadas en tests/test_main.py
para verificar la lógica de la aplicación y la persistencia:
Bash
pytest

Resultado de Gemini CLI (a modo de resumen del proceso):
Hemos creado la aplicación, verificado su funcionamiento manualmente con curl, ejecutado las pruebas para confirmar su comportamiento y los casos de error, y finalmente hemos refactorizado el código para eliminar las advertencias y seguir las mejores prácticas.
Conclusión: La Productividad Aumentada con Gemini CLI
El proceso de desarrollo fue fluido, rápido y sin errores. La capacidad de Gemini CLI para gestionar tareas de infraestructura (creación de directorios, shell), lógica de aplicación (FastAPI, Pydantic) y desarrollo robusto (pruebas, seguridad, persistencia) en un solo prompt es una transformación en la productividad.
Recomiendo encarecidamente a cualquier desarrollador de Python probar Gemini CLI para automatizar el boilerplate y centrarse en la lógica de negocio. ¡Es como tener un compañero de desarrollo experto que escribe código limpio y probado a la velocidad del pensamiento! 🧠💻