Aider
Aider es un asistente de IA para la terminal. Se puede vincular con algunos de los modelos disponibles, o con un modelo autohosteado (accesible también por OpenWebUI), como en mi caso.
En particular, yo quería un asistente de AI estrictamente a demanda. Es decir, quiero tenerlo apagado la mayor parte del tiempo, y solamente activarlo en caso de que sea necesario.
Además, pude integrarlo en vim, que es el editor que uso, sin agregar plugins.
Instalación
Opté por hacer la instalación en un entorno virtual generado con venv, con los siguientes pasos:
- Creamos una carpeta llamada
aiderdentro de~/.configcon el comandomkdir ~/.config/aider, y vamos a esa carpeta concd ~/.config/aider. - Creamos un entorno virtual con Python, con el comando
python -m venv venv_aider, y lo activamos con el comandosource venv_aider/bin/activate. - Con el entorno activado, instalamos aider con
pip install aider-chat. - Generamos un archivo de configuración,
~/.config/aider/.aider.conf.yml, que en mi caso tiene solamente lo que sigue, lo podemos adecuar a gusto:
openai-api-key: mi-api-key
openai-api-base: https://modelo-autohosteado
map-refresh: files
subtree-only: true
auto-commits: false
- Generamos dos alias en
~/.bash_aliases(o donde estén nuestros alias), con lo siguiente:
alias activar_aider="cp -i ~/.config/aider/.aider.conf.yml .; source ~/.config/aider/.venv_aider/bin/activate ; echo 'Iniciar con: aiderwf'"
alias aiderwf="aider . --model alias-del-modelo --watch-files --no-show-model-warnings"Uso
- Ubicados en la carpeta donde esté el codebase para el que necesitemos asistencia, mientras editamos el archivo en vim, abrimos otro panel en tmux, y activamos aider con los alias definidos más arriba.

En el panel que tiene el prompt de aider, podemos agregar el/los archivo/s que queremos que edite, con
/add ruta/al/archivoEn la parte inferior, podemos escribir prompts a nuestro modelo. Pero frecuentemente queremos consultar por una parte del código en particular, y es complicado indicar dónde. Entonces podemos escribir comentarios-prompts, que son cualquier comentario que finalice con
AI!.

- Al guardar el archivo, vemos en la parte inferior el razonamiento que el modelo hace para resolver la tarea, la edición hecha al archivo, y el diff de esa edición. Al ejecutar
:een vim, vemos la nueva versión del archivo.

Nota: Fíjense que, aún en un caso tan simple, no me sugiere modificar la firma de la función para añadir self como parámetro o el decorador @staticmethod. No sé si esto es una limitación del modelo o si me está contestando estrictamente lo que pregunté.
- Si queremos hacer una pregunta acerca de una parte del código, sin editar el archivo, podemos hacer un comentario que finalice con
AI?

Evaluación
La aclaración es obvia, pero casi todo lo que digo son obviedades, así que nadie lo va a notar: la calidad de la respuesta dependerá de la calidad del modelo al que estemos “apuntando”. Y como todo en IA, nunca deberíamos confiar en las respuestas obtenidas sin haberlas revisado. En mi uso particular, lo vi mandar fruta más de una vez, y no siempre son errores que se puedan detectar fácilmente.
En particular, me resultó muy útil para preparar clases, en donde por lo general armo ejemplos breves y relativamente sencillos. En mi trabajo profesional, con codebases mucho más grandes y complejas, más de una vez se quedó pensando, con tiempos de espera que superaron mi paciencia. Las veces que sí respondió, fue con observaciones más bien dudosas.
Supongo que eso se debe a las particularidades del LLM, y no al setup que describo acá. Hasta ahora no me había gustado la idea de las herramientas tipo copilot; me parecía equiparable a programar con alguien mirando por sobre el hombro y emitiendo opiniones no solicitadas a cada paso. Así que, en lo que respecta a la usabilidad de la herramienta, esta configuración me resultó útil, porque puedo activarla únicamente cuando la necesito, y hacer que opine solo cuando se lo pido. Por lo demás, ya me resulta útil en uno de mis trabajos, y confío en que podré ir afinando el funcionamiento para aprovecharlo en un 100%.
Etiquetas: castellano, herramientas, ia, programacion