Ejecutar LLMs desde el terminal

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:

  • Monitorizar rankings en miles de KWs
  • Preprocesado de datos
  • Tareas típicas de servidor web
  • Extracción de datos
  • Crear mis propios agentes y/o herramientas

 

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.

 

Ejemplos usando LLM Cli desde la línea de comandos

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

 

Ejemplo comando llm y cat

 

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".



Ejemplo de traducción usando LLM Cli


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!!

 

Creando alias para facilitar la ejecución desde la línea de comandos

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.

 

Realizar preguntas sobre los datos de Google Search Console

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.

 

 




Lea otros artículos de Como uso la IA en mi día a día

Últimos posts

Últimos comentarios


Lino
@Emil8ano, no son tokens, son caracteres... Pero estoy casi seguro que el limite de texto en cada llamada aumentará rápidamente.
Post: aNótame: extensión para guardar notas y generar resumenes usando Gemini de manera local

Emiliano
Gran idea! Pregunta. Los 8000 caracteres no son tokens no? Si es así ojo que sin 8000 entre entrada y salida. O sea si te comes 6000 de ent
Post: aNótame: extensión para guardar notas y generar resumenes usando Gemini de manera local

Lino
@spamloco a tí r hacerme ver que no soy al único que le importa :p A ver si nos vemos!
Post: ¿Cómo decide Google que URL debe rastrear?

Alejandro
Gracias Lino, siempre investigando un poco más allá.
Post: ¿Cómo decide Google que URL debe rastrear?

Lino
3,2,1... Gracias a ti Pedro!! y sí, parece que los humanos somos expertos en haciendo ruido cuando intentamos que alguien nos escuche... :p
Post: ¿Cómo decide Google que URL debe rastrear?

Pedro
1,2...1,2... probando. Gracias por el artículo, verdaderamente interesante ver cómo no paramos de generar ruido :)
Post: ¿Cómo decide Google que URL debe rastrear?

Lino
Funcionan!! Ahora solo tengo que generar engagement :D A ver si quito lo de avisar por Twitter... no sé cuántos años llevará sin funcio
Post: ¿Cómo decide Google que URL debe rastrear?

Juanan Carapapa
Yo también vengo a probar los comentarios, probando probando xD
Post: ¿Cómo decide Google que URL debe rastrear?

Lino2
Hola @errioxa que tal
Post: ¿Cómo decide Google que URL debe rastrear?

Lino2
Hola
Post: ¿Cómo decide Google que URL debe rastrear?