La tecnología del cloud ha cambiado muchas cosas, incluida la creación de aplicaciones inteligentes de forma ágil, escalable y de pago por uso. Las aplicaciones antes del auge de la tecnología del cloud por lo general no incorporaban la inteligencia dentro de sí mismas, principalmente porque:
- Requería mucho tiempo y era fácil cometer errores.
- Era difícil escribir, probar y experimentar con algoritmos de forma continua.
- Faltaban datos suficientes.
- Era sumamente costoso.
En la última década, han cambiado dos cosas que han llevado a la creación de aplicaciones significativamente más inteligentes que en el pasado. Estas dos cosas son la escalabilidad ilimitada rentable y a petición del cloud, junto con la disponibilidad de datos en términos de volumen, variedad y velocidad.
En este capítulo, vamos a ver arquitecturas que pueden ayudar a crear aplicaciones
inteligentes con Azure. Algunos de los temas que se tratan en este capítulo son:
- La evolución de la IA
- Procesos de IA de Azure
- Azure Cognitive Services
- Crear un servicio de reconocimiento óptico de caracteres
- Crear un servicio de características visuales mediante el SDK de .NET de
Cognitive Search
La evolución de la IA
La IA no es un nuevo campo de conocimiento. De hecho, la tecnología es el resultado
de décadas de innovación e investigación. Sin embargo, su implementación en décadas
anteriores fue un desafío por los siguientes motivos:
- Coste: los experimentos de IA eran costosos por naturaleza y no había tecnología
del cloud. Toda la infraestructura era comprada o contratada de un tercero. Los
experimentos también requerían mucho tiempo de configuración y se necesitaban
inmensas habilidades para empezar. También se requería una gran cantidad de
capacidad de almacenamiento y computación, que solía faltar en la comunidad
en general y que solo estaba en manos de unos pocos. - Falta de datos: casi no había dispositivos portátiles y sensores inteligentes disponibles
que generasen datos. La naturaleza de los datos era limitada y había que adquirirlos,
lo que de nuevo hacía que las aplicaciones de IA fuesen costosas. Los datos también
eran menos fiables y existía una falta general de confianza en los propios datos. - Dificultad: los algoritmos de IA no estaban documentados lo suficiente y se
encontraban principalmente en los ámbitos de los matemáticos y estadísticos.
Eran difíciles de crear y utilizar dentro de las aplicaciones. Imagina la creación de
un sistema de reconocimiento óptico de caracteres (OCR) hace 15 años. Casi no
había bibliotecas, datos, potencia de procesamiento o las habilidades necesarias
para desarrollar aplicaciones mediante OCR.
A pesar de que la afluencia de datos aumentó con el tiempo, todavía faltaban herramientas
para dar sentido a los datos de forma que aumentara el valor empresarial. Además, los
buenos modelos de IA se basan en datos lo suficientemente precisos y se entrenan con
algoritmos para poder resolver problemas en la vida real. Tanto la tecnología del cloud
como el gran número de sensores y dispositivos portátiles han redefinido este panorama.
Con la tecnología del cloud, es posible aprovisionar recursos de almacenamiento
y computación a petición para aplicaciones basadas en IA. La infraestructura en el
cloud proporciona gran cantidad de recursos para la migración, el almacenamiento,
el procesamiento y el cálculo de datos, además de generar conocimientos y, finalmente,
proporcionar informes y paneles. Todo esto se hace a un coste mínimo de una forma
más rápida, ya que no hay nada físico involucrado. Vamos a adentrarnos en lo que sucede
detrás de la creación de una aplicación basada en IA.
Procesos de IA de Azure
Cada proyecto basado en IA debe pasar por ciertos pasos antes de que esté operativo.
Vamos a explorar estas siete fases:
Ingesta de datos
En esta fase, los datos se capturan de varias fuentes y se almacenan de forma que se
puedan consumir en la siguiente fase. Los datos se limpian antes de almacenarse y se ignora
cualquier desviación respecto a la norma. Esto forma parte de la preparación de los datos.
Los datos pueden tener velocidad, variedad y volumen diferentes. Pueden estructurarse de
forma similar a las bases de datos relacionales, semiestructurarse como documentos JSON
o no estructurarse como imágenes, documentos de Word, etc.
Transformación de datos
Los datos ingeridos se transforman en otro formato, ya que es posible que no se puedan
consumir en su formato actual. La transformación de datos normalmente incluye la
limpieza y el filtrado de datos, la eliminación del sesgo de los datos, el aumento de los datos
uniéndolos con otros conjuntos de datos, la creación de datos adicionales a partir de datos
existentes y mucho más. Esto también forma parte de la preparación de los datos.
Análisis
Los datos de la última fase se reutilizan para su análisis. La fase de análisis contiene
actividades relacionadas con la búsqueda de patrones dentro de los datos, la realización
de análisis de datos exploratorios y la generación de más conocimientos a partir de estos.
Estos conocimientos se almacenan a continuación junto con los datos existentes para su
consumo en la siguiente fase. Esto forma parte del proceso de empaquetado del modelo.
Modelado de datos
Una vez que se aumentan y limpian los datos, los datos apropiados y necesarios se encuentran
a disposición de los algoritmos de IA para generar un modelo que sea adecuado para lograr el
objetivo general. Es un proceso iterativo conocido como experimentación mediante el uso de
varias combinaciones de datos (ingeniería de características) para garantizar que el modelo de
datos sea sólido. Esto también forma parte del proceso de empaquetado del modelo.
Los datos se introducen en algoritmos de aprendizaje para identificar patrones. Este proceso
se conoce como entrenamiento del modelo. Posteriormente, los datos de prueba se utilizan
en el modelo para comprobar su eficacia y eficiencia.
Validación del modelo
Una vez creado el modelo, se utiliza un conjunto de datos de prueba para determinar su
eficacia. Si el análisis obtenido de los datos de prueba refleja la realidad, entonces el modelo
es sólido y utilizable. Las pruebas son un aspecto importante del proceso de IA.
Implementación
El modelo se implementa en producción para que los datos en tiempo real se puedan
introducir en él para obtener el resultado previsto. Este resultado se puede utilizar en
las aplicaciones.
Supervisión
El modelo implementado en producción se supervisa de forma continua para el análisis
futuro de todos los datos entrantes y para volver a entrenarse y mejorar los modelos
de eficacia.
Las etapas y los procesos de IA, por naturaleza, requieren mucho tiempo y son iterativos.
Por lo tanto, las aplicaciones basadas en ellos tienen el riesgo inherente de ser de
larga duración, experimentales y requerir muchos recursos, además de retrasarse
con sobrecostes y tener pocas posibilidades de éxito.
Teniendo esto en cuenta, debe haber soluciones basadas en IA «out of the box» que los
desarrolladores puedan utilizar en sus aplicaciones para hacerlas inteligentes. Estas
soluciones de IA deben consumirse fácilmente desde aplicaciones y deben tener las
siguientes características:
- Multiplataforma: los desarrolladores que utilicen cualquier plataforma deben poder
consumir estos servicios. Deben implementarse y consumirse en Linux, Windows
o Mac sin ningún problema de compatibilidad. - Multilenguaje: los desarrolladores deben ser capaces de utilizar cualquier lenguaje
para consumir estas soluciones. Los desarrolladores no solo se encontrarán con una
curva de aprendizaje más corta, sino que no tendrán que cambiar su opción preferida
de lenguaje para consumir estas soluciones.
Estas soluciones deben implementarse como servicios utilizando estándares y protocolos
del sector. Por lo general, estos servicios están disponibles como puntos de conexión HTTP
REST que se pueden invocar utilizando cualquier lenguaje de programación y plataforma.
Hay muchos servicios de este tipo que se pueden modelar e implementar para que el
desarrollador los consuma. Estos son algunos ejemplos:
- Traducción de idiomas: en estos servicios, el usuario proporciona texto en un
idioma y obtiene el texto correspondiente en un idioma diferente como resultado. - Reconocimiento de caracteres: estos servicios aceptan imágenes y devuelven el
texto presente en ellas. - Conversión de voz en texto: estos servicios pueden convertir la voz de entrada
en texto.
Ahora que hemos revisado los detalles de la creación de un proyecto basado en IA/ML, vamos
a profundizar en las aplicaciones de los diversos servicios cognitivos que ofrece Azure.
Azure Cognitive Services
Azure proporciona un servicio extenso conocido como Azure Cognitive Services. Azure
Cognitive Services es un conjunto de servicios que los desarrolladores pueden consumir
dentro de sus aplicaciones para convertirlos en aplicaciones inteligentes.
Los servicios se han dividido en cinco categorías principales dependiendo de su naturaleza.
Estas cinco categorías son las siguientes:
Visión
Esta API proporciona algoritmos para la clasificación de imágenes y ayuda en el
procesamiento de imágenes al proporcionar información significativa. La visión artificial
puede proporcionar una gran variedad de información a partir de imágenes sobre diferentes
objetos, personas, caracteres, emociones y mucho más.
Búsqueda
Estas API ayudan en aplicaciones relacionadas con búsquedas. Ayudan con la búsqueda
basada en texto, imágenes, vídeo y con opciones de búsqueda personalizadas.
Lenguaje
Estas API se basan en el procesamiento del lenguaje natural y ayudan a extraer información
sobre la intención del texto enviado por el usuario junto con la detección de entidades.
También ayudan en el análisis y la traducción de texto a diferentes idiomas.
Voz
Estas API ayudan a convertir la voz en texto, el texto en voz y en traducción de voz. Se
pueden utilizar para ingerir archivos de audio y realizar acciones basadas en el contenido
en nombre de los usuarios. Cortana es un ejemplo que utiliza servicios similares para
realizar acciones para los usuarios basadas en la voz.
Decisión
Estas API ayudan en la detección de anomalías y la moderación del contenido. Pueden
comprobar si hay contenido dentro de imágenes, vídeos y texto y descubrir patrones
que se deben resaltar. Un ejemplo de dicha aplicación es mostrar una advertencia sobre
contenido para adultos.
Ahora que has entendido cuál es la base de Cognitive Services, vamos a hablar de cómo
funciona en detalle.
Descripción de Cognitive Services
Azure Cognitive Services consta de puntos de conexión HTTP que aceptan solicitudes
y envían las respuestas al autor de la llamada. Casi todas las solicitudes son solicitudes
HTTP POST y constan de un encabezado y un cuerpo.
El aprovisionamiento de Cognitive Services genera dos artefactos importantes que ayudan
a un autor de la llamada a invocar un punto de conexión correctamente. Genera una
dirección URL del punto de conexión y una clave única.
El formato de la URL es https://{azure location}.api.cognitive.microsoft.com/
{cognitive type}/{version}/{sub type of service}?{query parameters}. Un ejemplo
de URL es:
https://eastus.api.cognitive.microsoft.com/vision/v2.0/
ocr?language=en&detectOrientation=true
Cognitive Services se aprovisiona en la región de Azure del este de EE. UU. El tipo de
servicio es visión artificial que utiliza la versión 2 y el subtipo es OCR. Por lo general, hay
algunos subtipos para cada categoría de nivel superior. Por último, hay algunos parámetros
de cadena de consulta, como language y detectOrientation. Estos parámetros de consulta
son diferentes para cada categoría y subcategoría de servicio.
El encabezado o los parámetros de consulta deben proporcionar el valor de clave para que
la invocación del punto de conexión se realice correctamente.
El valor de clave debe asignarse a la clave de encabezado Ocp-Apim-Subscription-Key con
la solicitud.
El contenido del cuerpo de la solicitud puede ser una cadena simple, un binario o
una combinación de ambos. En función del valor, en la solicitud se debe establecer el
encabezado de tipo de contenido correspondiente.
Los posibles valores de encabezado son:
- Application/octet-stream
- multipart/form-data
- application/json
Utiliza octet-stream al enviar datos binarios y json para enviar valores de cadena. form-data
se puede utilizar para enviar varios valores combinados de binario y texto.
La clave es una cadena única que se utiliza para validar si se ha dado permiso al autor de
la llamada para invocar la URL. Esta clave debe protegerse para que otras personas que
no puedan invocar los puntos de conexión no tengan acceso a ella. Más adelante en este
capítulo verás formas de proteger estas claves.
Consumir Cognitive Services
Hay dos maneras de consumir Cognitive Services:
- Usando un punto de conexión HTTP directamente: en este caso, el punto de conexión
se invoca directamente mediante la creación tanto del encabezado como del cuerpo
con los valores adecuados. A continuación, se analiza el valor devuelto y se extraen
los datos. Todos los servicios de IA en Cognitive Services son API de REST. Aceptan
solicitudes HTTP en JSON, así como otros formatos, y responden en formato JSON. - Usando un SDK: Azure proporciona varios kits de desarrollo de software (SDK).
Hay SDK disponibles para los lenguajes .NET, Python, Node.js, Java y Go.
En la siguiente sección, investigaremos la utilización de uno de los Cognitive Services
usando ambos métodos. Vamos a explorar esto mediante la creación de algunos servicios
de IA con puntos de conexión HTTP.
Crear un servicio de OCR
En esta sección, vamos a utilizar algunos de los servicios de IA que usan C# y PowerShell
para mostrar su uso mediante el punto de conexión HTTP directamente. La siguiente
sección se centrará en hacer lo mismo mediante un SDK de .NET.
Antes de empezar a crear un proyecto con Cognitive Services, el primer paso es aprovisionar
la propia API.
El reconocimiento óptico de caracteres está disponible como una API de visión y se puede
aprovisionar mediante Azure Portal, como se muestra a continuación. Para crear una API de
visión navega hasta Cognitive Services > Computer Vision > Crear, como se muestra en la
Figura 19.1:
Una vez aprovisionada la API, la página de información general proporciona todos los
detalles para consumirla. Proporciona la dirección URL base y la información de la clave.
Toma nota de la clave, ya que se usará más adelante:
También proporciona una consola de API para probarla rápidamente. Al hacer clic en ella,
se abre una nueva ventana que tiene disponibles todos los puntos de conexión relacionados
con este servicio. Al hacer clic en OCR, aparecerá un formulario que se puede rellenar
con los datos apropiados y se ejecutarán los puntos de conexión del servicio. También
proporciona una respuesta completa. Esto se muestra en la Figura 19.3. La dirección URL
está disponible como dirección URL de solicitud y la solicitud es una solicitud HTTP típica
con un método POST. La dirección URL apunta al punto de conexión en la región de Azure
del este de EE. UU. También está relacionada con el grupo de visión de API, versión 2, y el
punto de conexión OCR.
La clave de suscripción se pasa en el encabezado con el nombre ocp-apim-subscription-key.
El encabezado también contiene la clave de tipo de contenido con application/json como
valor. Esto se debe a que el cuerpo de la solicitud contiene una cadena JSON. El cuerpo tiene
la forma de JSON con la dirección URL de la imagen de la que se debe extraer el texto:
La solicitud se puede enviar al punto de conexión al hacer clic en el botón Enviar. Esto dará
como resultado una respuesta HTTP 200 OK, como se muestra a continuación, si todo va
bien. Si se produce un error en los valores de solicitud, la respuesta será un código HTTP
de error:
La respuesta consta de detalles relacionados con el uso de facturación, un identificador
de solicitud interno generado por el punto de conexión, la longitud del contenido, el tipo
de contenido de respuesta (que es JSON) y los datos y la hora de la respuesta. El contenido
de la respuesta consta de una carga de JSON con las coordenadas del texto y el propio
texto real.
Usar PowerShell
Se puede crear la misma solicitud con PowerShell. El siguiente código de PowerShell se
puede ejecutar mediante PowerShell ISE.
El código utiliza el cmdlet Invoke-WebRequest para invocar el punto de conexión de
Cognitive Services al pasar la URL al parámetro Uri mediante el método POST y agrega los
encabezados apropiados como se ha comentado en la última sección y, por último, el cuerpo
que consta de datos en formato JSON. Los datos se convierten en JSON mediante el cmdlet
ConvertTo-Json:
La respuesta del cmdlet se guarda en una variable que también consta de datos en
formato JSON. Los datos se convierten en un objeto de PowerShell mediante el cmdlet
Convertfrom-Json y se recorren en bucle para encontrar las palabras en el texto.
Usar C#
En esta sección, crearemos un servicio que debe aceptar solicitudes de los usuarios, extraer
la dirección URL de la imagen, crear la solicitud HTTP y enviarla al punto de conexión de
Cognitive Services. El punto de conexión de Cognitive Services devuelve una respuesta
JSON. El contenido de texto apropiado se extrae de la respuesta y se devuelve al usuario.
Arquitectura y diseño
Una aplicación inteligente es una aplicación ASP.NET Core MVC. La aplicación MVC la crea
un desarrollador en un equipo de desarrollador, pasa por la canalización de la integración
y entrega continuas, genera una imagen de Docker y carga la imagen de Docker en Azure
Container Registry. Aquí, se explican los componentes principales de la aplicación, junto
con su uso:
Docker
Docker es una de las principales piezas de las tecnologías de contenedor y está
disponible en todas las plataformas, incluidas Linux, Windows y Mac. El desarrollo de
aplicaciones y servicios pensado para el uso de contenedores proporciona la flexibilidad
de implementarlos en clouds y ubicaciones, así como on-premises. También elimina
cualquier dependencia de la plataforma host, lo que de nuevo permite menos dependencia
de la plataforma como servicio. Docker ayuda a la creación de imágenes personalizadas
y se pueden crear contenedores a partir de estas imágenes. Las imágenes contienen
todas las dependencias, binarios y marcos necesarios para que la aplicación o el servicio
funcionen, y son totalmente autosuficientes. Esto los convierte en un gran objetivo de
implementación para servicios como los microservicios.
Azure Container Registry
Azure Container Registry es un registro similar a Docker Hub para el almacenamiento de
imágenes de contenedor en un repositorio. Es posible crear varios repositorios y cargar
varias imágenes en ellos. Una imagen tiene un nombre y un número de versión, que juntos
forman un nombre completo que se utiliza para referirse a ellos en una definición de pod
de Kubernetes. Cualquier ecosistema de Kubernetes puede acceder a estas imágenes
y descargarlas. El requisito previo de esto es que los secretos apropiados para extraer la
imagen ya deben estar creados de antemano. No tiene que estar en la misma red que los
nodos de Kubernetes y, de hecho, no es necesario que una red cree y use Azure Container
Registry.
Azure Kubernetes Service
La aplicación inteligente que acepta la URL de una imagen para recuperar el texto que
esta contiene se puede hospedar en máquinas virtuales convencionales o incluso en
Azure App Service. Sin embargo, la implementación en Azure Kubernetes Service ofrece
muchas ventajas, como se ha abordado en el capítulo 8, Arquitectura de soluciones de Azure
Kubernetes. Por ahora, es importante saber que estas aplicaciones son de recuperación
automática por naturaleza y que el nodo maestro de Kubernetes mantiene automáticamente
un número mínimo de instancias, además de proporcionar la flexibilidad para actualizarlas
de muchas maneras, incluidas las implementaciones blue-green y las actualizaciones de
valor controlado.
Pods, conjuntos de réplicas e implementaciones
El desarrollador también crea un archivo YAML relacionado con la implementación
de Kubernetes que hace referencia a las imágenes dentro de la especificación del pod
y también proporciona una especificación para el conjunto de réplicas. Proporciona su
propia especificación relacionada con la estrategia de actualización.
Diseño de entorno de ejecución
La arquitectura y el diseño siguen siendo los mismos que en la sección anterior; sin embargo,
cuando la aplicación o el servicio ya están en funcionamiento, ya han descargado las imágenes
de Azure Container Registry y han creado pods en los que se ejecutan contenedores. Cuando
un usuario proporciona una dirección URL de imagen para descodificar el texto que contiene,
la aplicación en el pod invoca la API de Computer Vision de Azure Cognitive Services, le pasa
la URL y espera una respuesta del servicio:
Una vez que recibe la respuesta JSON de los servicios, puede recuperar la información
y devolverla al usuario.
El proceso de desarrollo
El entorno de desarrollo puede ser Windows o Linux. Funcionará tanto con Windows 10
como con Windows Server 2016/19. Al utilizar Windows, es útil implementar Docker para
Windows para que se cree un entorno de Linux y un entorno de Docker de Windows.
Al crear un proyecto de aplicación web de ASP.NET Core con Visual Studio 2019, la opción
Compatibilidad con Docker debe seleccionarse con Windows o Linux como valores. En
función del valor elegido, el contenido apropiado se generará en Dockerfile. La principal
diferencia en Dockerfile son los nombres de imagen base. Utiliza diferentes imágenes para
Linux en comparación con Windows.
Al instalar Docker para Windows, también se instala una máquina virtual de Linux, por lo
que es importante activar el hipervisor Hyper-V.
En este ejemplo, en lugar de enviar los datos como una cadena JSON, se descarga la imagen
y se envían datos binarios al punto de conexión de Cognitive Services.
Tiene una función que acepta una entrada de cadena para los valores de URL.
A continuación, invoca Cognitive Services con los valores de encabezado adecuados
y un cuerpo que contiene la dirección URL. Los valores de encabezado deben contener
la clave proporcionada por Cognitive Services durante el aprovisionamiento del servicio.
El valor del cuerpo puede contener valores de cadena convencionales en forma de JSON
o puede contener datos binarios de la propia imagen. La propiedad de encabezado de
tipo de contenido debe establecerse en consecuencia.
El código declara la dirección URL y la clave relacionada con Cognitive Services. Esto se
muestra solo con fines de demostración. La URL y la clave deben ubicarse en los archivos
de configuración.
Mediante el objeto HttpClient, la imagen correspondiente a la dirección URL proporcionada
por el usuario se descarga y almacena en la variable responseMessage. Se crea una instancia
de otro objeto HttpClient y sus encabezados se rellenan con Ocp-Apim-Subscription-Key
y content-type keys. El valor del encabezado de tipo de contenido es application/octetstream,
ya que los datos binarios se pasan al punto de conexión.
Se realiza una solicitud posterior después de extraer el contenido de la variable
responseMessage y pasarlo como el cuerpo de una solicitud al punto de conexión del
servicio cognitivo.
El código para la acción del controlador se muestra a continuación:
Después de que el punto de conexión termine de procesarse, devuelve la respuesta con
una carga de JSON. El contexto se extrae y deserializa en objetos .NET. Se codifican varios
bucles para extraer el texto de la respuesta.
En esta sección, hemos creado una aplicación sencilla que utiliza Cognitive Services
para proporcionar extracciones de palabras de características mediante la API de OCR
e implementarla en pods de Kubernetes. Este proceso y arquitectura se pueden utilizar
dentro de cualquier aplicación que desee consumir API de Cognitive Services. A continuación,
echaremos un vistazo a otra API de Cognitive Services, conocida como características visuales.
Crear un servicio de características visuales mediante el SDK de
.NET de Cognitive Search
La última sección trataba de la creación de un servicio que utiliza un punto de conexión
cognitivo de OCR para devolver texto dentro de las imágenes. En esta sección, se creará
un nuevo servicio que devolverá características visuales dentro de una imagen, como
descripciones, etiquetas y objetos.
Usar PowerShell
El código de PowerShell es similar al ejemplo anterior de OCR, por lo que no se repite aquí.
La URL es diferente del ejemplo de código anterior:
La solicitud se realiza mediante un método POST y la dirección URL apunta al punto de conexión
en la región de Azure del este de EE. UU. También utiliza la versión 2 y consume la API de visión.
La clave de acceso de Cognitive Services forma parte del encabezado HTTP denominado
ocp-apim-subscription-key. El encabezado también contiene el tipo de contenido de
encabezado con application/json como valor. Esto se debe a que el cuerpo de la solicitud
contiene un valor JSON. El cuerpo tiene la dirección URL de la imagen de la que se debe
extraer el texto.
La respuesta estará en formato JSON con el contenido de la imagen y una descripción.
Usar .NET
Este ejemplo es de nuevo una aplicación ASP.NET Core MVC y tiene instalado el paquete
NuGet Microsoft.Azure.CognitiveServices.Vision.ComputerVision:
El código para la acción del controlador se muestra a continuación. En este código,
se declaran el servicio cognitivo y la clave. También declara variables para los objetos
ComputerVisionClient y VisionType. Crea una instancia del tipo ComputerVisionClient,
que proporciona la dirección URL y la clave.
La lista VisionTypes consta de varios tipos de datos buscados a partir de la imagen:
se añaden etiquetas, descripciones y objetos. Solo se extraerán estos parámetros de
la imagen.
Se crea una instancia de un objeto HttpClient para descargar la imagen mediante la
dirección URL proporcionada por el usuario y se envían estos datos binarios al punto de
conexión de Cognitive Services mediante la función AnalyzeImageInStreamAsync del tipo
ComputerVisionClient:
Los resultados se recorren en bucle y se devuelven las etiquetas al usuario. Del mismo
modo, también se pueden devolver al usuario las descripciones y las propiedades del objeto.
Ahora, echemos un vistazo a las formas en que podemos proteger la exposición de las claves
de servicio.
Proteger la clave de Cognitive Services
Hay varias maneras de proteger la exposición de las claves a otros agentes. Esto se puede
hacer mediante el recurso API Management de Azure. También se puede hacer mediante
Azure Functions Proxies.
Usar Azure Functions Proxies
Azure Functions Proxies puede hacer referencia a cualquier URL, ya sea interna o externa.
Cuando una solicitud llega a Azure Functions Proxies, usará la dirección URL del servicio
cognitivo junto con la clave para invocar el punto de conexión cognitivo, y también
invalidará los parámetros de solicitud y añadirá la URL de la imagen entrante y la anexará
a la URL del punto de conexión cognitivo como datos POST. Cuando una respuesta vuelve
del servicio, reemplaza la respuesta, elimina los encabezados y devuelve los datos JSON
al usuario.
Consumir Cognitive Services
El consumo de Cognitive Services sigue un patrón coherente. Cada servicio cognitivo
está disponible como API de REST, y cada API espera diferentes conjuntos de parámetros
en los que trabajar. Los clientes que invocan estas direcciones URL deben comprobar
la documentación de los parámetros asociados y proporcionar valores para ellos.
El consumo de URL es un método relativamente directo de uso de Cognitive Services.
Azure proporciona SDK para cada servicio y para varios lenguajes. Los clientes pueden
utilizar estos SDK para trabajar con Cognitive Services.
La API de creación de LUIS (Language Understanding Intelligence Service) está disponible
en https://{luis resource name}-authoring.cognitiveservices.azure.com/ y la API de
producción está disponible en
https://{azure region}.api.cognitive.microsoft.com/luis/prediction/v3.0/apps/
{application id}/slots/production/predict?subscription-key={cognitive key}
&verbose=true&show-all-intents=true&log=true&query=YOUR_QUERY_HERE.
Del mismo modo, Face API está disponible en https://{endpoint}/face/v1.0/
detect[?returnFaceId][&returnFaceLandmarks][&returnFaceAttributes]
[&recognitionModel][&returnRecognitionModel][&detectionModel].
Hay muchas API de Cognitive Services, cada una con múltiples tipos de URL, y la mejor
manera de conocer estas URL es utilizar la documentación de Azure.
Resumen
En este capítulo, has conocido la arquitectura de implementación y la arquitectura de
aplicaciones para crear aplicaciones inteligentes en Azure. Azure proporciona a Cognitive
Services numerosos puntos de conexión: cada punto de conexión es responsable de
ejecutar un algoritmo relacionado con la IA y de proporcionar resultados. Casi todos los
puntos de conexión de Cognitive Services funcionan de manera similar con respecto a
las solicitudes y respuestas HTTP. Estos puntos de conexión también se pueden invocar
mediante SDK proporcionados por Azure para diferentes lenguajes y has visto un ejemplo
de obtención de características visuales que los utilizan. Hay más de 50 puntos de conexión
diferentes y se recomienda conocer la naturaleza de los puntos de conexión mediante la
característica de consola de API proporcionada por Azure.