RAGCli · AI Uniandes

Utilice AI Uniandes desde la terminal: converse con asistentes y RAG institucionales, procese archivos y gestione cargas de documentos. El comando de la aplicación es ai-uniandes.

Esta guía corresponde a la versión 0.2.0 del cliente. Los ejemplos usan el entorno de desarrollo y requieren acceso a las aplicaciones y servicios de ese entorno.

1. ¿Qué puede hacer con RAGCli?

Necesidad

Comando

Resultado

Consultar aplicaciones

app list

Lista asistentes y RAG institucionales, con sus identificadores y conteo de documentos.

Interactuar en chat

chat

Conversaciones multimodelo, con asistentes o con un RAG institucional.

Procesar archivos

rag-ingest

Carga de documentos para asistentes y flujos institucionales individuales o desde Excel.

Consultar OnBase

rag-ingest download-metadata-onbase

Exporta metadatos a Excel para preparar una carga institucional.

Agregar contexto temporal

rag-chat upload-file

Adjunta un archivo a la conversación activa del flujo rag-chat.

2. Instalación

Necesita Python 3.9 o superior, el código fuente de RAGCli suministrado por el equipo y acceso de red a los servicios de AI Uniandes y Microsoft Entra ID. Ejecute la instalación desde la carpeta que contiene pyproject.toml.

Windows · PowerShell

cd AI-Uniandes-RAG-CLI
py -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install -e .
ai-uniandes --help

macOS y Linux

cd AI-Uniandes-RAG-CLI
python3 -m venv .venv
source .venv/bin/activate
python -m pip install -e .
ai-uniandes --help

Ajuste el nombre de la carpeta si recibió el proyecto con otro nombre. La instalación incorpora las dependencias del cliente. Active el mismo entorno virtual cada vez que abra una terminal nueva.

3. Primeros pasos

Seleccione el entorno, inicie sesión y consulte los identificadores disponibles. En el inicio de sesión de usuario, siga la dirección y el código que muestra la terminal para autenticarse en el navegador.

ai-uniandes config set env dev
ai-uniandes login
ai-uniandes whoami
ai-uniandes app list

Para probar una conversación multimodelo:

ai-uniandes chat --question "¿Cómo puedes ayudarme?"

Para consultar un asistente, sustituya ASISTENTE_ID por un identificador de app list:

ai-uniandes chat asistente --app-id ASISTENTE_ID --question "¿Qué información puedes consultar?"

Los nombres ASISTENTE_ID, RAG_ID, DOCUMENTO_ID, CLIENT_ID y ONBASE_ID son marcadores de ejemplo: reemplácelos por los valores de su entorno.

4. Autenticación y configuración

Modo

Uso

Inicio de sesión

Usuario

Uso interactivo. Es obligatorio para el chat institucional, que resuelve permisos a partir de la identidad del usuario.

ai-uniandes login

Aplicación

Automatización con una aplicación autorizada, por ejemplo ingesta y consultas administrativas.

ai-uniandes login --app --client-id CLIENT_ID --client-secret -

El valor - solicita el secreto sin escribirlo en el comando. Para el modo aplicación, configure también el usuario cuando la operación administrativa lo necesite. Este valor no sustituye una sesión de usuario para el chat institucional.

ai-uniandes config set username [email protected]
ai-uniandes whoami
ai-uniandes logout

Entorno de trabajo

El cliente admite dev, staging y prod; el valor predeterminado es staging. La disponibilidad de cada servicio depende del entorno. Para una ejecución puntual, escriba --env antes del comando:

ai-uniandes --env dev login
ai-uniandes --env dev app list

Desarrollo usa un tenant diferente de staging. Al cambiar de entorno, autentíquese en el entorno seleccionado. El cliente incluye una aplicación de inicio de sesión de usuario para dev y staging; para prod necesita configurar el client_id que le indique el equipo.

Configuración

Uso

env

Entorno predeterminado.

default_app_id

Asistente predeterminado para chat asistente.

institutional_rag_id

RAG predeterminado para chat institucional.

default_model

Modelo de chat preferido; el valor inicial es gpt-5. Su disponibilidad se valida por flujo.

timeout

Tiempo de espera de las llamadas de chat, inicialmente 180 segundos.

ai-uniandes config list
ai-uniandes config set default_app_id ASISTENTE_ID
ai-uniandes config set institutional_rag_id RAG_ID
ai-uniandes config get env
ai-uniandes config unset default_app_id
ai-uniandes config path

La configuración se guarda en ~/.ai-uniandes/config.json y las credenciales en ~/.ai-uniandes/credentials.json. No comparta el archivo de credenciales. Para las opciones que admiten estas fuentes, la prioridad es argumento de línea de comandos, variable de entorno, archivo y valor predeterminado.

5. Consultar aplicaciones

ai-uniandes app list
ai-uniandes app list --type assistant
ai-uniandes app list --type institutional
ai-uniandes app list --no-counts
ai-uniandes app list --json

Copie el identificador de la aplicación que desea usar. --no-counts omite el conteo de documentos y --json facilita el procesamiento de la salida. Un guion en el conteo indica que el cliente no pudo consultar ese resumen.

El listado institucional depende del filtro del servicio por propietario: pertenecer a un RAG no implica que aparezca en esta lista.

6. Chat con AI Uniandes

Flujo

Ejemplo

Contexto

Multimodelo

ai-uniandes chat

Conversación sin un RAG asociado.

Asistente

ai-uniandes chat asistente --app-id ASISTENTE_ID

Asistente seleccionado y su contexto documental.

Institucional

ai-uniandes chat institucional --rag-id RAG_ID

RAG institucional y documentos accesibles al usuario autenticado.

Sin --question, el chat abre una sesión interactiva: escriba salir para terminar o nueva para reiniciar la conversación. Con --question, envía una pregunta y termina.

ai-uniandes chat institucional --rag-id RAG_ID --question "Resume los documentos disponibles."
ai-uniandes chat asistente --app-id ASISTENTE_ID --model gpt-4.1
ai-uniandes chat --question "Explica qué es RAG." --new
ai-uniandes chat --question "Explica qué es RAG." --no-stream --raw

El cliente muestra la respuesta a medida que llega mediante streaming. --no-stream espera la respuesta completa; --raw, junto con una pregunta, imprime el JSON final. --verbose agrega información de la ejecución. El catálogo valida los modelos admitidos para cada flujo; si rechaza uno, consulte las alternativas que muestra el cliente.

Para el chat institucional, los permisos de documentos se resuelven con la identidad de usuario. Si esa consulta falla, el cliente avisa y continúa solo con documentos públicos. No cambie los roles del comando para intentar conceder acceso.

7. Procesar documentos de un asistente

Flujo: seleccionar asistente → subir archivo → solicitar procesamiento → consultar estado → conversar cuando el documento esté READY.

ai-uniandes rag-ingest ingest-assistant --app-id ASISTENTE_ID --file ./documento.pdf
ai-uniandes rag-ingest list --app-id ASISTENTE_ID
ai-uniandes rag-ingest status --document-id DOCUMENTO_ID

La ingesta consulta el estado cada 5 segundos, con un máximo predeterminado de 300 segundos. Puede modificar esos valores:

ai-uniandes rag-ingest ingest-assistant --app-id ASISTENTE_ID --file ./documento.pdf --poll-interval 5 --poll-timeout 600

Verifique READY antes de usar el documento como contexto. La versión actual del cliente también detiene la espera en PROCESSED y puede mostrar “INGESTA COMPLETADA”. PROCESSED no confirma que haya terminado la indexación. Vuelva a consultar el estado hasta obtener READY o un error; la opción status --poll también se detiene en PROCESSED.

Carga de varios archivos

Coloque copias de los archivos en la carpeta upload/ del proyecto RAGCli y ejecute:

ai-uniandes rag-ingest batch-assistant --app-id ASISTENTE_ID

Este comando elimina de upload/ los archivos locales que termina en PROCESSED o READY. Conserve los originales en otra carpeta y verifique después el estado READY de cada documento.

8. Documentos institucionales y OnBase

Cargar un documento

ai-uniandes rag-ingest ingest-institucional --file ./documento.pdf --app-id RAG_ID
ai-uniandes rag-ingest ingest-institucional --file ONBASE_ID --app-id RAG_ID --source ONBASE

El comando individual configura visibilidad PUBLIC y ejecuta carga y clasificación. No tiene opciones para usuarios o grupos restringidos: para ese caso use el Excel del flujo batch. Después de la clasificación, consulte el documento y confirme READY.

Preparar metadatos de OnBase

Puede navegar por una carpeta o buscar por texto. La exportación genera metadatos para el Excel; no equivale a descargar los archivos originales.

ai-uniandes rag-ingest download-metadata-onbase --path "Secretaria/Actas/"
ai-uniandes rag-ingest download-metadata-onbase --search "Acta" --output ./lote/metadata-institucional.xlsx

Use una carpeta nueva para preparar cada lote y revise el Excel antes de iniciar la ingesta. La ruta predeterminada es workspace/flujo-institucional/metadata-institucional.xlsx.

Procesar un lote desde Excel

La carpeta debe contener metadata-institucional.xlsx y los archivos locales referenciados por las filas PORTAL_WEB. Las filas ONBASE identifican el documento por su ID.

Columnas

Cómo completarlas

source

PORTAL_WEB para archivos locales u ONBASE para documentos de OnBase.

filename / document_onbase_id

Nombre del archivo local o ID de OnBase, según la fuente.

name, typology, category, file_source

Metadatos descriptivos del documento y su origen.

visibility

PUBLIC o RESTRICTED.

users / groups

Valores separados por comas. Una fila restringida requiere al menos un usuario o grupo permitido.

action

NEW para una carga nueva. UPDATE y DELETE se usan para cambios posteriores; el proceso también maneja SYNC y DELETED.

id_application, id_file, id_file_document_group, status_file, status_flow

Campos de seguimiento que completa el cliente. Consérvelos para reanudar el lote.

ai-uniandes rag-ingest batch-institucional --folder ./lote --app-id RAG_ID

Flujo: validar Excel → cargar documentos → sincronizar permisos restringidos → clasificar → consultar estados → actualizar Excel. El cliente guarda avances en el mismo archivo; cierre el Excel antes de ejecutarlo. Para reanudar, utilice la misma carpeta y el mismo RAG_ID.

Los valores predeterminados son 200 filas por bloque, 20 hilos concurrentes y 3600 segundos de espera del polling. Puede ajustar la concurrencia y el tamaño del bloque:

ai-uniandes rag-ingest batch-institucional --folder ./lote --app-id RAG_ID --batch-size 50 --concurrency 5

9. Archivos temporales y chat heredado

El grupo rag-chat usa el flujo de asistentes anterior. Para un archivo temporal, mantenga la carga y la pregunta dentro de ese grupo: no presuponga que comparte conversación con chat asistente.

ai-uniandes rag-chat upload-file --app-id ASISTENTE_ID --file ./manual.pdf
ai-uniandes rag-chat list-files --app-id ASISTENTE_ID
ai-uniandes rag-chat ask --app-id ASISTENTE_ID --question "Resume el manual adjunto."
ai-uniandes rag-chat interactive --app-id ASISTENTE_ID

El archivo se vincula a la conversación activa. La carga espera READY o ERROR, con intervalo de 5 segundos y límite de 120 segundos. list-files consulta el registro local y actualiza los estados desde el servicio; no es un inventario de archivos de todos los usuarios o equipos.

Al iniciar otra conversación, el archivo anterior no se transfiere: vuelva a adjuntarlo. El servicio controla la expiración de los archivos temporales.

10. Eliminar documentos

Confirme el entorno y el identificador antes de ejecutar una eliminación.

# Documento de un asistente
ai-uniandes rag-ingest delete --document-id DOCUMENTO_ID

# Documento institucional: resuelve también su grupo de permisos
ai-uniandes eliminar-archivo-institucional --document-id DOCUMENTO_ID

El comando rag-ingest reset-institucional elimina archivos sincronizados y reinicia el Excel para reprocesar. No lo utilice para reanudar un lote interrumpido: vuelva a ejecutar batch-institucional.

11. Solución de problemas

Situación

Qué revisar

No se encuentra ai-uniandes

Active el entorno virtual donde instaló el paquete y ejecute nuevamente python -m pip install -e . desde la carpeta del proyecto.

No hay sesión activa o se rechaza el token

Revise config get env y whoami. Inicie sesión en el entorno correcto; dev y staging usan tenants distintos.

El chat institucional exige usuario

Ejecute login sin --app. Configurar username no convierte un token de aplicación en uno de usuario.

No aparece un RAG institucional

Verifique el entorno, el usuario y el filtro por propietario. Indique --rag-id si conoce un RAG al que tiene acceso.

Modelo no disponible

Seleccione uno de los modelos que muestra el cliente para ese flujo.

Streaming interrumpido

La respuesta puede estar incompleta. Pruebe la pregunta con --no-stream.

El documento queda en PROCESSED

Consulte status nuevamente. Espere READY antes de probar preguntas sobre su contenido.

Excel inválido o lote de otra aplicación

Revise source, archivo o ID de origen, visibility, users/groups e id_application. Reanude con el mismo --app-id.

No se recuperan documentos restringidos

Revise la sesión de usuario y los avisos de resolución de permisos. El cliente puede haber continuado solo con documentos públicos.

Si la instalación solicita credenciales de un feed privado de Azure DevOps o informa invalid command 'bdist_wheel', el README del cliente contempla esta alternativa usando PyPI:

python -m pip install --isolated --index-url https://pypi.org/simple/ -U "setuptools>=68" wheel
python -m pip install --isolated --index-url https://pypi.org/simple/ --no-build-isolation -e .

Para consultar las opciones de cada grupo:

ai-uniandes --help
ai-uniandes chat --help
ai-uniandes rag-ingest --help
ai-uniandes rag-chat --help

El cliente utiliza código de salida 2 para errores de autenticación o de modelo y 130 cuando se cancela con Ctrl+C. En los flujos de ingesta, revise además los estados y el resumen: que el proceso termine no garantiza que todos los documentos estén READY.