Microsoft Dynamics 365 Supply Chain Management & Others

COPILOT EN DYN365SCM

Finalmente pude configurar y probar Copilot en el ERP. Mucho se lleva hablando de él (o ella según como se quiera identificar a nuestr@ ayudante) y ya tenía ganas de probarlo. Se que es trabajo en curso y que van a salir actualizaciones muy interesantes pero no quería dejar pasar la oportunidad de escribir un artículo con mi experiencia.

Lo primero es instalar la solución, aunque esto está sobradamente documentado va un resumen rápido:

  1. Preparar el entorno de Dynamics 365 SCM: Lo primero que hay que hacer es desplegar un entorno Tier 2 en versión 10.0.38, yo además opté por desplegarlo en USA para que no hubiera restricciones de zona. Una vez desplegado hay que integrarlo con un entorno de Dataverse (en USA también) Aquí lo bueno es que no hace falta configurar DualWrite, que ya sabemos lo pesado que se hace.
  2. Una vez desplegado y configurada la integración con Dataverse lo siguiente es activar en la configuración de licencias de FO la propiedad «Sql row version change tracking«
  3. En el entorno de Dataverse, configuramos la opción de «Finance and Operations in Dataverse«
  4. Ya podemos instalar la APP de Copilot, o bien directamente desde la APP Store o bien desde el propio entorno de Dataverse en Aplicaciones de Dynamics 365.
  5. Con la aplicación instalada se crearán 2 roles de seguridad en Dataverse (no en FO) que habrá que asignar al usuario que va a usar Copilot: AIB y Finance and Operations AI security
  6. Como último paso habilitamos la característica de Copilot en FO (en inglés: (Preview) User experience for Copilot in Finance and Operations.

Ahora que ya tenemos todo implantado correctamente podremos ver en nuestro gestor de soluciones las nuevas soluciones implantadas:

Luego volveremos a ellas para crearnos nuestro propio Copiloto tuneado, pero de momento vamos a verlo en acción:

La funcionalidad que nos ofrece es la de, mediante lenguaje natural, resolver dudas sobre el uso de FO que obtiene del sitio de Learn (https://learn.microsoft.com/en-us/dynamics365) de Dynamics 365:

Aunque la funcionalidad es útil, no está aprovechando la información de nuestro ERP que para mi sería lo realmente interesante.

La siguiente funcionalidad si que utiliza algo mas los datos existentes, se ha creado un nuevo Workspace denominado «Pedido de compras con cambios confirmados» y en él nos muestra el retraso en los pedidos de compra y como afecta al resto de la cadena de suministro, como añadido nos lo explica en lenguaje natural:

«Se ha realizado un cambio en una línea de orden de compra con alto impacto aguas abajo. Hay un total de 1 orden de compra cambiada y 1 línea de orden cambiada. La cantidad reducida afectó a 1 línea de orden y el artículo afectado es M0004. La entrega retrasada también afectó a 1 línea de orden y el artículo afectado es M0004. No hay más detalles disponibles.»

Además de poder navegar a los pedidos afectados podemos enviar automáticamente un mail o un mensaje de Teams al proveedor escrito también por la IA:

Hasta aquí esto es todo lo que ofrece la funcionalidad liberada, si bien es cierto que Microsoft ha anunciado la integración con los datos de FO que contaré mas adelante pero hasta que lo haga publico, de momento no hay mas funcionalidad de forma estándar, así que vamos a intentar tunear el Copilot con nuestros datos.

La primera opción que tenemos es añadirle ficheros planos al Copilot estándar.

Por ejemplo, he creado un fichero de texto que identifica como está organizado el almacén de forma hiper simple:

Ubicaciones de almacén:

Esto se traduce en que cuando preguntamos cosas como la siguiente, nuestro copiloto puede respondernos:

Así que si subimos un fichero con información sobre nuestros procesos Copilot no solo sabrá responder al funcionamiento estándar si no también a nuestros procesos.

Para poder configurar esto debemos irnos a Copilot Studio y abrir el Copilot de FO:

Dentro del menú de IA Generativa tenemos la opción de añadir los ficheros de texto:

Añadidos los ficheros podremos grabarlo e incluso publicarlo dentro de nuestro TEAMS para que no sea necesario abrirlo desde FO:

Mi Copilot

Mientras Microsoft libera funcionalidad que nos permita preguntar sobre información dentro del ERP, he intentado configurarlo por mi cuenta como prueba de concepto con el siguiente resultado:

Lo primero que hay que hacer es duplicar el Copilot de FO para tener un Copilot propio pero con los complementos de FO instalados:

Luego habrá que copiar los Temas para tener el mismo comportamiento que el Copilot original, pero con la capacidad de poder modificar la IA Generativa y para ello hay que ir al Tema de «conversational boosting»:

Y dentro de este tema en «Crear respuestas generativas» ya podremos editar las opciones:

Como veis en la imagen, he añadido la web de El Rincón Dynamics https://www.elrincondynamics.es/ dentro de la solución y lo mas importante, el origen de datos de AZURE OPEN AI, en donde están los datos de FO.

Esta ultima parte es la mas compleja con diferencia, y además tiene un coste en mi caso de unos 75€ al mes. Para poder acceder a datos de FO lo primero que hice fue publicar dichos datos en una BBDD de AZURE SQL, podría haber optado por un blob storage pero para esta PoC me era mucho mas cómodo el SQL.

Dentro de la solución de Copilot se instalan varias entidades virtuales en el dataverse que en el futuro serán las que se usen por el Copilot estándar, así que las aproveché yo para este ejemplo, pero podría haber usando cualquier entidad, incluso configurar el BYOD de FO para publicarlas directamente, la ventaja de usar estas entidades reside en los nombre de los campos que son nombre naturales que entiende la IA. Estas entidades son:

Para nuestro ejemplo seleccione la entidad de disponible (inventory on hand) a la que tuve que hacer algunos cambios para que no diera errores, por ejemplo, no se permite el uso de caracteres especiales excepto «-» en los campos de clave por lo que tuve que cambiar el campo clave. Tampoco se admiten campos con espacios en blanco y para añadirlos hay que hacerlo mediante Script, así que opté por simplificar los nombres. Pero finalmente, obtuve una entidad que se actualiza desde dataverse (o desde FO si se prefiere) con una estructura valida:

Lo siguiente es crear un servicio de AI Search con nuestro datos. Es importante recalcar que no funciona con el modelo Free, hay que ir al menos al básico con su coste correspondiente.

Luego añadí el origen de datos de nuestra BBDD de AZURE SQL y procedí a crear el índice mediante la opción de Importar:

Aparece un asistente en el que hay que elegir nuestro origen de datos y seleccionar los campos que queremos y su comportamiento:

Una vez configurados se crea el índice y el indexador, que procesará los datos, es aquí donde pueden aparecer los errores, normalmente por los caracteres especiales comentados:

Si todo ha funcionado bien, podremos probarlo dentro del propio índice:

Con esta parte funcionando ya pude pasar el siguiente nivel que es crear nuestra implementación en AZURE OpenAI Studio, usando el modelo gpt-35-turbo.

Una vez la implementación estuvo creada, desde la pantalla principal y usando la opción de «Traiga sus propios datos» configuré el acceso a los mismos:

Aquí tuve que configurar nuestro origen de datos y nuestro índice:

y rellenar los campos que quería usar:

Una vez creado, revisé los parámetros para asociarlos a la Implementación creada anteriormente y comprobé que funcionaba correctamente preguntándole sobre un producto concreto:

Lo último que me quedaba por hacer era añadir la conexión al entorno de dataverse correcto, para ello en la opción «implementar en» se debe usar «implementar en un Bot de PVA»

Esto lo que hace es crear el BOT y la conexión a nuestro servicio de datos en el entorno por defecto, lo que no suele ser el adecuado, para poder configurar la conexión sin crear un nuevo Bot, lo que hay que hacer, es una vez que sale la pantalla de creación del nuevo BOT en nuestro entorno por defecto, parar el explorador y cambiar en la URL el ID del entorno de dataverse por el nuestro:

Esto creará una conexión de AZURE OPEN AI en el entorno correcto:

Y con esto ya estamos en disposición de añadir la conexión a nuestro Copilot Tuneado:

Lo mas importante aquí, es configurar las propiedades de la conexión tal y como las tenemos en nuestro Open AI, ya que si no nos dará error y no responderá nada.

Algo curioso que me he encontrado es la versión de la API, si nos vamos al área de juegos de Azure OPENAI y le damos a ver código aparecerá lo siguiente:

En el código aparece la versión 2023-08-01-preview que es la que se elige en el índice cuando se crea, pero en el extremo aparece 2023-07-01-preview, bueno, pues después de dos días sin saber por que no funcionaba, puse la versión de julio y empezó a funcionar.

Y con esto tenemos nuestro Copilot que responde tanto preguntas sobre funcionamiento estándar como preguntas sobre el disponible de FO. Quedaría publicarlo en Teams y usarlo desde ahí.

Para concluir, debo decir, que a mi no siempre me funciona correctamente la lectura de datos externos, he tenido momentos donde preguntando lo mismo no ha devuelto nada y otras en las que ha respondido correctamente. Tengo que seguir investigando a ver si encuentro la tecla o es simplemente por que es una preview la parte de utilizar tus propios datos en IA, así que si lo probáis y os funciona bien contármelo por favor!!

¡Muchas gracias por leerme!

7 respuestas a “COPILOT EN DYN365SCM”

  1. Genial Hugo, Que vas volando.
    Me quedo una duda, estas usando una azure database para exportar datos de entidades del FO con BYOD y sobre esa DB es que usas el servicio de azure search, pero a la vez estas usando otras entidades virtuales del FO que se crearon en el dataverse, no me quedo claro en como llego la información de estas virtuales del dataverse a tu DB para que pudiesen ser también analizados por el azure search.

    Me gusta

    1. Hola Huber,

      Gracias por la pregunta y por leerme, respecto a lo que comentas, en realidad son dos opciones distintas, por un lado podrías tener unas entidades exportándose desde FO a BYOD de forma estandard, y por otro exportar las entidades virtuales que están en dataverse que es lo que yo hice, en mi caso usando power automate exporto al SQL ya que quería algo sencillo, pero se podría hacer de formas mas profesional. Entiendo también que debería existir la forma de usar el Datalake de FO junto con la conexión a Blob Storage, pero tampoco me he puesto a investigarlo mucho. El ejercicio sobre todo era comprobar si podía usar datos de FO en un Copilot, luego en una implantación realista habría que diseñar mejor la arquitectura de los datos, piensa que los nombres de los campos de FO no sirven para el IA y hay que crear consultas con nombre normalizados, así que es todo un proyecto de Data lo que hay que montar aquí.

      Sds,

      Me gusta

      1. Hola Hugo gracias por la respuesta,
        Perfecto, era solo esa duda, lo importante es la PoC que esta genial. a la espera de ver la actualización de tu copilot con el OneLake y el Fabric cuando este GA, Saludos!

        Me gusta

  2. […] Y este no es el caso de las entidades que trae la solución, así que, dado que es una solución administrada y para no duplicarlas, lo que hice fue configurarlo para que use la entidad que se instala con el Copilot de FO: «INVENTORY ON HAND FOR AI» que sí que está configurada correctamente. Si queréis ver mas detalles sobre esto podéis revisar la entrada anterior COPILOT EN DYN365SCM – Blog de Hugo de Jesús (Dynamics 365 SCM) (hdejesus.com) […]

    Me gusta

  3. Increible trabajo muy interesante. Actualmente estoy trabajando para implementar Copilot con Inventory Visibility me pregunto si el proceso podria ser algo similar? Ya que e estado trabajando un buen tiempo en esto y no e podido lograr la integracion de copilot para que genere respuestas sobre el inventario disponible en lenguaje natural.

    Me gusta

    1. Podrías sin problemas hacer el mismo enfoque con los datos de Dataverse de Inventory Visibilty pero como ya está anunciado yo esperaría a probarlo: Inquire into inventory with Copilot (preview) – Supply Chain Management | Dynamics 365 | Microsoft Learn

      Me gusta

    2. Hola de nuevo. Hoy pude probar copilot en inventory visibility y funciona bastante bien. Aunque hay que indicarle sitio y almacén para que te devuelva las cantidades. Pero lo importante es que ya está disponible y funcionando en IV.

      Me gusta

Replica a Aplicación móvil de inventario disponible – Blog de Hugo de Jesús (Dynamics 365 SCM) Cancelar la respuesta