Publicado por Lino Uruñuela el 2025-08-05
Hoy quería contar cómo integro la IA en mi día a día. Cada vez la uso más para tareas más diversas, pero voy a empezar por aquello que uso más a menudo.
Uno de los casos en el que más uso la IA es para resolver algunos errores que cometo a la hora de ejecutar órdenes desde la línea de comandos. Si habéis leído este blog desde hace algún tiempo sabréis que uso la línea de comandos para muchas cosas:
Para poder ejecutar un LLM desde la línea de comandos existen muchas soluciones diferentes, por ejemplo Ollama permite ejecutar una variedad de modelos, ya sean de código abierto como propietarios de manera sencilla, pero hasta dónde yo sé es necesario lanzar el servidor de Ollama para su ejecución y su interactividad no es tan intuitiva como otras.
Normalmente uso LLM Cli "Una herramienta CLI y una biblioteca de Python para interactuar con OpenAI , Claude , Gemini , Llama y docenas de otros LLMs, tanto a través de API como con modelos que se pueden instalar y ejecutar en su propio ordenador", de Simon Willison (aprovecho para recomendaros seguir su blog).
Concretamente utilizo LLM configurado para utilizar el modelo mistral-small-2312 de Mistral, ya que es un LLM que funciona muy rápido y con respuestas bastante decentes en muchas tareas diferentes. Posiblemente existen a día de hoy mejores opciones que debo explorar, pero ha sido el modelo que he usado hasta ahora para la mayoría de tareas.
Una de las razones de usar LLM Cli es que puedes elegir entre una inmensa cantidad de LLMs, ya sean de pago como cualquiera de OpenAI o Google como gratuitos. Otra razón es por su versatilidad como un comando del terminal, ya que puedo crear "tuberías" entre la ejecución de diferentes comandos, es decir, puedes ejecutar el LLM obteniendo como entrada la salida de otro comando.
Por ejemplo, para ver el contenido de un fichero con contenido markdown puedes usar el comando "cat"
cat ejemplo.md mostrará el contenido del fichero ejemplo.md
Si quisiéramos traducir este contenido al español, podríamos usar LLM Cli para ejecutar un LLM que traduzca este contenido, por ejemplo ejecutando este simple comando
cat ejemplo.md |llm -m mistral/mistral-small-2503 "traduce el contenido al español".
Esta es una de las características que más me gustan al usar LLM Cli, puedo crear scripts que ejecuten un LLM en base a la salida de un comando o script en bash, todo de manera local, y en este caso de manera gratuita.
Esto nos da la posibilidad de ejecutar procesos que involucran miles de ficheros, tarde lo que tarde, pero que se va ejecutando de manera muy solvente, aunque como siempre que trabajamos con LLMs, ¡¡también tendrá algún error!!
En el contexto del terminal o de la línea de comandos un alias es "un nombre alternativo o atajo que se define para un comando o una secuencia de comandos", en mi caso creé un alias al que yo llamo "cheff" y lo declaro de la siguiente manera:
alias cheff='llm -m mistral/mistral-small-2503 $1'
Cuando ejecute "cheff" será lo mismo que ejecutar llm -m mistral/mistral-small-2503 dónde el $1 será el prompt que le pase al comando entre comillas, por ejemplo ahora puedo usar
cat ejemplo.md |cheff "traduce el contenido al español"
en vez de
cat ejemplo.md |llm -m mistral/mistral-small-2503 "traduce el contenido al español"
Sé que muchos no usáis habitualmente comandos desde el terminal, pero para aquellos que lo usáis habitualmente poder ejecutar un LLM desde la línea de comandos y con tan poco tiempo de respuesta me viene genial.
Además de que puede usar la salida de un comando como parte del prompt que enviaremos al LLM también me es útil para resolver dudas que tengo mientras ejecuto algún comando.
En vez de ir al navegador y abrir ChatGPT, Gemini o cualquier otro chat de IA para resolver la duda sobre determinado comando, pregunto directamente a cheff para que resuelva mi duda, corrija algún comando o me explique paso a paso qué hace determinado script o fichero de código.
Otro de los usos que estoy comenzando a utilizar es la obtención de datos de Search Console usando lenguaje natural. Para ello combino un script en bash que, dada la tabla en la base de datos a actuar, realiza las consultas necesarias para obtener la respuesta correcta a la pregunta que hagamos.
Para muchos clientes, obtengo los datos de Search Console diariamente y los almaceno en una base de datos. La idea es poder hacerle preguntas en lenguaje natural. Un LLM se encarga de generar la consulta SQL necesaria para encontrar la respuesta. Para que funcione, solo necesito indicarle al script sobre qué tabla debe actuar y cuál es su esquema.
Con esto creo un flujo para que si la SQL que genera da un error, ese error se le pase de nuevo al script como contexto para indicarle qué SQLs ha ejecutado y que dieron error, además del error que se generó para que de esta forma sea capaz de probar otra SQL diferente y sepa qué errores ha cometido. También monitorizo cada ejecución y respuesta para poder ver a posteriori qué errores comete o qué LLM funciona mejor.
Mi script ("sqlCHIA.sh") no es más que un orquestador. Primero, construye un prompt que incluye la pregunta del usuario y el esquema de la tabla de la base de datos. Luego, envía este prompt al LLM para que genere una consulta SQL. Finalmente, ejecuta esa consulta y, si falla, vuelve a intentarlo pasándole el error como contexto para que aprenda y se corrija.
Por ejemplo al ejecutar
./sqlCHIA.sh "base_datos.GSC_Proyecto" "Quiero saber en los 4 últimos meses en qué día o semana hubo un Google Update en base a los datos de clicks de este site. Devuelve una única semana que sea la más probable"
O podría pedir, en qué directorios se generan las mayores caídas dadas dos fechas
./sqlCHIA.sh "base_datos.GSC_Proyecto" "Quiero saber las 2 URLs (landing) que tienen el mayor incremento de clicks entre la semana del 2025-07-07 al 2025-07-13 y 2025-06-23 al 2025-06-29"
Aquí muestro el flujo del script, que no es sencillo, pero tampoco tan complicado como parece en este diagrama de flujo
Como podéis ver el uso de LLMs desde el propio terminal nos da muchísimas posibilidades de vitaminar nuestras ejecuciones desde la línea de comandos, seguro que en breve tiempo muestro más casos de uso de grandes modelos del lenguaje desde el terminal de comandos.