Preparando tu KB GeneXus para Aplicaciones de Inteligencia Artificial


En el desarrollo moderno, donde la IA se integra cada vez más en la creación y mantenimiento de aplicaciones, GeneXus ya ha mostrado que en su próxima versión vamos a tener dentro del IDE y vamos a poder generar asistentes de inteligencia artificial. 

Como desarrollador GeneXus, ¿que es lo que puedo hacer hoy en las versiones liberadas, para prepararme para ese desafío? 

Las herramientas de inteligencia artificial en su estado actual, necesitan descripciones textuales para poder entender los elementos con los que operan.  Por lo tanto, tenemos que tener claro que vamos a tener que mejorar la metadata que describe nuestros objetos. 

 ¿Por qué la metadata es tan importante?

Describe la intención y contexto de cada componente, no solo su estructura técnica.

Permite a herramientas de IA entender cómo reutilizar, adaptar o proponer cambios en base a la semántica.

Facilita la generación de pruebas, documentación y migraciones automatizadas.

A continuación, paso una lista de las tareas que a mi me sirvieron para poder incorporar agentes a la KB

 Prácticas clave para una KB lista para IA

1) Eliminar lo que no se usa

A las herramientas y agentes, hay que brindarle cuales son los objetos que debe usar en forma clara. Tener en la KB objetos que no se usan, dificulta mucho esta tarea. 

Revisa y borra: atributos que no estén en tablas, objetos no alcanzables, objetos main no usados, tablas sin uso y variables no utilizadas.

Si hay objetos en folder Borrar, To_Delete, etc o con nombres del tipo _BACKUP, *_borrar, etc hay que hacer un esfuerzo y borrarlos. 

Para esto hay herramientas como el KBDoctor, VariableCleaner que puede ayudarte. 

2) Mejora los campos Description y Documentation de los objetos

Completa el campo Description en cada objeto, describiendo QUE ES ese objeto

El orden de importancia que yo le doy a esto es:

  • Tablas
  • Atributos
  • API
  • Objetos con UI mas usados (si tenes Google Analytics es facil hacer una lista)
  • Resto de los objetos
Si la base de datos va a ser accedida por herramientas externas, también es bueno poner la propiedad "Generate COMMENT ON statements" en YES de forma que las descripciones de tablas y atributos lleguen a la base de datos, cuando se hacen reorganizaciones a través de GeneXus. 

Para objetos con UI, en el tab Documentation, escribe el PARA QUE de ese objeto o sea la intención de uso de la pantalla: qué operación realiza, en qué contexto se usa y a qué usuarios está dirigida.

Los nombre de los eventos, es bueno que tenga nombres que indique que operacion hacen desde el punto de vista del usuario, asegurándote de que tengan nombres claros que reflejen exactamente qué acción ejecutan (ValidarCamposEntrada, ConfirmarPago, EnviarNotificacionCliente).

3) Nombrar con intención

Evita nombres genéricos (Procedure1, Prompt1).

Usa nombres que expliciten acción y contexto: GenerarFacturaPDF, CalcularRetencionesProveedor.

Siempre pensar en para que va a usarse el objeto que estoy nombrando y describiendo.  

Tener objetos chicos que solo hacen una cosa, facilita muchísimo ponerle nombre. 

4) Modularizar la KB 

La inteligencia artificial  funciona mejor si trabaja con un conjunto chico de objetos. En KB grandes, conviene clasificar las tablas y objetos en módulos  para reflejar los grupos funcionales de la aplicación y esto ayuda a tener contextos mas limitados para ciertos problemas. 

Agrupa objetos por contexto funcional, no solo por tipo técnico, por ejemplo:

  • DatosBasicos/Clientes,
  • DatosBasicos/Depositos,
  • Facturacion,
  • Cobranza.

5) Hacer explícita las funciones que cada modulo expone como servicio. 

Si queremos que los agentes de inteligencia artificial usen los servicios provistos por nuestra KB, es bueno crear objetos API con nombres claros, parámetros significativo y una buena explicación de que es lo que hacen para que sea fácil a los agentes hacer llamadas a dichas API. 

Consistencia en la forma de pasar parámetros y resultados. Usar formatos legibles para IA: JSON, YAML o tablas de base de datos.

6) Encontrar  y agrupar las pantallas parecidas 

Es común que en las aplicaciones tengamos patrones de pantallas (aunque no sean generadas con herramientas de GeneXus Patterns), sino que son pantallas que se usan de una forma consistente en todo el sistema. 

Es bueno tener esos objetos catalogados (puede ser en categorías) de forma de luego poderle dar a los agentes un conjunto de objetos sobre los que trabajar. 

7) Crear y mantener un glosario de sinónimos

Empieza a generar una lista de sinónimos y términos equivalentes que tus usuarios usan para referirse a entidades y atributos clave. Para esta tarea, podemos usar inteligencia artificial. 

Esto aun no tiene un lugar claro para guardar en la KB, pero es de mucha ayuda cuando hacemos agentes que sean usados por público diverso y mas si es de diferentes paises. 

Facilita la comprensión de la KB por parte de la IA mejorando la precisión de asistentes de lenguaje natural o chatbots. Por ejemplo:

Término      Sinónimos 

Cliente    Usuario, Comprador, Consumidor, CuentaCliente

Depósito   Almacén, Bodega, CentroDistribución, StockLocation

Ciudad     Localidad, Municipio, Población, CiudadResidencia

Beneficios concretos

Si se aplican estos cambios, que ninguno es demasiado complejo, se tendrán varios beneficios:

  • Acelera la incorporación de asistentes a una KB existente
  • Facilita la migración o refactorización asistida por IA, haciendo mas fácil el mantenimiento
  • Potencia la precisión de asistentes conversacionales al entender sinónimos y términos usados por los usuarios finales.

 Conclusión

Invertir en una buena estructura de metadata no es opcional: es la base para integrar inteligencia artificial en tu proceso de desarrollo. Empieza hoy a hacer explícita la intención de cada componente y a mantener un glosario de términos usados por tus usuarios: tu KB GeneXus se convertirá en una fuente de conocimiento vivo, lista para trabajar codo a codo con herramientas de IA.

Aunque aún no vayas a incorporar herramientas de IA, es un trabajo que se puede adelantar, es indispensable para lo que se viene y lleva bastante trabajo, por lo que conviene anticiparse en lo posible.  Es una tarea que puede ser hecha por usuarios con conocimiento funcional de la aplicación, sin necesitad de grandes conocimientos técnicos. 

Comentarios

Entradas más populares de este blog

Aplicación monolítica o distribuida?

La nefasta influencia del golero de Cacho Bochinche en el fútbol uruguayo

Migrando de GeneXus 9.0 a GeneXus X.