Cómo SnapLogic creó una aplicación de texto a tubería con Amazon Bedrock para traducir la intención empresarial en acción

Cómo SnapLogic utilizó Amazon Bedrock para crear una aplicación que convierte el texto en acción, traduciendo la intención empresarial

Este artículo fue co-escrito con Greg Benson, Científico Jefe; Aaron Kesler, Gerente de Producto Senior; y Rich Dill, Arquitecto de Soluciones Empresariales de SnapLogic.

Muchos clientes están construyendo aplicaciones de IA generativa en Amazon Bedrock y Amazon CodeWhisperer para crear artefactos de código basados en lenguaje natural. Este caso de uso destaca cómo los grandes modelos de lenguaje (LLMs, por sus siglas en inglés) pueden convertirse en traductores entre lenguajes humanos (inglés, español, árabe, y más) y lenguajes interpretables por máquina (Python, Java, Scala, SQL, y otros), junto con un razonamiento interno sofisticado. Esta capacidad emergente en los LLMs ha llevado a los desarrolladores de software a utilizarlos como herramienta de automatización y mejora de la experiencia de usuario, que transforma el lenguaje natural en un lenguaje específico del dominio (DSL, por sus siglas en inglés): instrucciones del sistema, solicitudes de API, artefactos de código, y más. En este artículo, te mostramos cómo SnapLogic, un cliente de AWS, utilizó Amazon Bedrock para potenciar su producto SnapGPT a través de la creación automatizada de estos complejos artefactos DSL a partir del lenguaje humano.

Cuando los clientes crean objetos DSL a partir de los LLM, el DSL resultante es una réplica exacta o una derivación de una interfaz de datos y esquema existente, que forma el contrato entre la interfaz de usuario (UI) y la lógica del negocio en el servicio de respaldo. Este patrón está especialmente en tendencia entre los proveedores de software independientes (ISVs, por sus siglas en inglés) y los proveedores de software como servicio (SaaS, por sus siglas en inglés), debido a su forma única de representar configuraciones a través de código y el deseo de simplificar la experiencia del usuario para sus clientes. Algunos casos de uso incluyen:

La forma más sencilla de construir y escalar aplicaciones de texto a pipeline con LLMs en AWS es utilizando Amazon Bedrock. Amazon Bedrock es la forma más fácil de construir y escalar aplicaciones de IA generativa con modelos base (FMs, por sus siglas en inglés). Es un servicio completamente gestionado que ofrece acceso a una selección de modelos base de alto rendimiento de IA líderes a través de una única API, junto con un amplio conjunto de capacidades que necesitas para construir aplicaciones de IA generativa con privacidad y seguridad. Anthropic, un laboratorio de investigación y seguridad de IA que construye sistemas de IA confiables, interpretables y direccionables, es una de las principales compañías de IA que ofrece acceso a su modelo LLM de última generación, Claude, en Amazon Bedrock. Claude es un LLM que sobresale en una amplia gama de tareas, como diálogos reflexivos, creación de contenido, razonamiento complejo, creatividad y programación. Anthropic ofrece tanto los modelos Claude como los modelos Claude Instant, todos los cuales están disponibles a través de Amazon Bedrock. Claude ha ganado rápidamente popularidad en estas aplicaciones de texto a pipeline debido a su capacidad de razonamiento mejorada, que le permite sobresalir en la resolución de problemas técnicos ambiguos. Claude 2 en Amazon Bedrock admite una ventana de contexto de 100,000 tokens, lo que equivale a aproximadamente 200 páginas de texto en inglés. Esta es una característica especialmente importante en la construcción de aplicaciones de texto a pipeline que requieren razonamiento complejo, instrucciones detalladas y ejemplos exhaustivos.

Antecedentes de SnapLogic

SnapLogic es un cliente de AWS con la misión de llevar la automatización empresarial al mundo. La Plataforma de Integración Inteligente (IIP) de SnapLogic permite a las organizaciones lograr la automatización en toda la empresa conectando todo su ecosistema de aplicaciones, bases de datos, big data, máquinas y dispositivos, APIs, y más, con conectores inteligentes pre-creados llamados Snaps. SnapLogic recientemente lanzó una función llamada SnapGPT, que proporciona una interfaz de texto en la que puedes escribir el pipeline de integración deseado que quieres crear en lenguaje humano sencillo. SnapGPT utiliza el modelo Claude de Anthropic a través de Amazon Bedrock para automatizar la creación de estos pipelines de integración como código, que luego se utilizan a través de la solución de integración emblemática de SnapLogic. Sin embargo, el viaje de SnapLogic hacia SnapGPT ha sido el resultado de muchos años de operación en el espacio de la IA.

El viaje de IA de SnapLogic

En el ámbito de las plataformas de integración, SnapLogic ha estado constantemente a la vanguardia, aprovechando el poder transformador de la inteligencia artificial. A lo largo de los años, el compromiso de la compañía de innovar con IA se ha vuelto evidente, especialmente cuando rastreamos el viaje desde Iris hasta AutoLink.

Los humildes comienzos con Iris

En 2017, SnapLogic presentó Iris, un asistente de integración con inteligencia artificial líder en la industria. Iris estaba diseñada para utilizar algoritmos de aprendizaje automático (ML) para predecir los próximos pasos en la creación de una tubería de datos. Al analizar millones de elementos de metadatos y flujos de datos, Iris podía hacer sugerencias inteligentes a los usuarios, democratizando la integración de datos y permitiendo incluso a aquellos sin un amplio conocimiento técnico crear flujos de trabajo complejos.

Basándose en el éxito y aprendizaje de Iris, SnapLogic introdujo AutoLink, una función diseñada para simplificar aún más el proceso de mapeo de datos. La tediosa tarea de mapear manualmente los campos entre sistemas de origen y destino se volvió muy sencilla con AutoLink. Utilizando IA, AutoLink identificaba automáticamente y sugería posibles coincidencias. Integraciones que antes llevaban horas se podían ejecutar en cuestión de minutos.

El salto generativo con SnapGPT

La última incursión de SnapLogic en la IA nos trae SnapGPT, que tiene como objetivo revolucionar aún más la integración. Con SnapGPT, SnapLogic introduce la primera solución de integración generativa del mundo. Esto no se trata solo de simplificar los procesos existentes, sino de reimaginar por completo cómo se diseñan las integraciones. El poder de la IA generativa puede crear tuberías de integración enteras desde cero, optimizando el flujo de trabajo en función del resultado deseado y las características de los datos.

SnapGPT tiene un impacto extremadamente importante en los clientes de SnapLogic porque pueden reducir drásticamente el tiempo necesario para generar su primera tubería de SnapLogic. Tradicionalmente, los clientes de SnapLogic tenían que pasar días o semanas configurando tuberías de integración desde cero. Ahora, estos clientes simplemente pueden pedirle a SnapGPT que, por ejemplo, “creé una tubería que mueva a todos mis clientes activos de SFDC a WorkDay”. Se crea automáticamente un primer borrador de una tubería para este cliente, reduciendo drásticamente el tiempo de desarrollo necesario para crear la base de su tubería de integración. Esto permite al cliente final dedicar más tiempo a lo que realmente tiene un impacto comercial en lugar de trabajar en la configuración de una tubería de integración. El siguiente ejemplo muestra cómo un cliente de SnapLogic puede introducir una descripción en la función SnapGPT para generar rápidamente una tubería utilizando lenguaje natural.

AWS y SnapLogic han colaborado estrechamente a lo largo de esta construcción del producto y han aprendido mucho en el camino. El resto de este artículo se centrará en los aprendizajes técnicos que AWS y SnapLogic han tenido en torno al uso de LLM para aplicaciones de texto a tuberías.

Descripción general de la solución

Para resolver este problema de texto a tubería, AWS y SnapLogic diseñaron una solución integral que se muestra en la siguiente arquitectura.

El proceso de solicitud a SnapGPT sigue el siguiente flujo de trabajo:

  1. El usuario envía una descripción a la aplicación.
  2. SnapLogic utiliza un enfoque de Generación con Recuperación Mejorada (RAG) para recuperar ejemplos relevantes de tuberías de SnapLogic que son similares a la solicitud del usuario.
  3. Estos ejemplos relevantes extraídos se combinan con la entrada del usuario y se someten a un preprocesamiento de texto antes de enviarse a Claude en Amazon Bedrock.
  4. Claude produce un artefacto JSON que representa una tubería de SnapLogic.
  5. El artefacto JSON se integra directamente en la plataforma de integración principal de SnapLogic.
  6. La tubería de SnapLogic se muestra al usuario de manera visualmente amigable.

A través de varias experimentaciones entre AWS y SnapLogic, hemos encontrado que el paso de ingeniería de la solicitud en el diagrama de la solución es extremadamente importante para generar salidas de alta calidad para estas salidas de texto a tubería. La siguiente sección profundiza en algunas técnicas específicas utilizadas con Claude en este espacio.

Experimentación rápida

Durante la fase de desarrollo de SnapGPT, AWS y SnapLogic descubrieron que la iteración rápida en las indicaciones enviadas a Claude era una tarea crítica para mejorar la precisión y relevancia de los resultados de texto a canalización en las salidas de SnapLogic. Al utilizar los cuadernos interactivos de Amazon SageMaker Studio, el equipo de AWS y SnapLogic pudieron trabajar rápidamente en diferentes versiones de las indicaciones utilizando la conexión del SDK de Boto3 a Amazon Bedrock. El desarrollo basado en cuadernos permitió a los equipos crear rápidamente conexiones del lado del cliente a Amazon Bedrock, incluir descripciones basadas en texto junto con código Python para enviar indicaciones a Amazon Bedrock y realizar sesiones conjuntas de ingeniería de indicaciones en las que se realizaron iteraciones rápidas entre múltiples personas.

Métodos de ingeniería de indicaciones de Claude antropomórfico

En esta sección, describimos algunas de las técnicas iterativas que utilizamos para crear una indicación de alto rendimiento basada en una solicitud de usuario ilustrativa: “Crea una canalización que utiliza la base de datos de ExampleCompany y recupera todos los clientes activos”. Tenga en cuenta que este ejemplo no es el esquema que impulsa SnapGPT, y solo se utiliza para ilustrar una aplicación de texto a canalización.

Para establecer nuestra ingeniería de indicaciones de línea base, utilizamos la siguiente indicación original:

Crea una canalización que utiliza la base de datos de ExampleCompany y recupera todos los clientes activos

La salida esperada es la siguiente:

{  "base de datos": "ExampleCompany",  "consulta": "SELECT * FROM ec_prod.customers WHERE status = 'active'"}

Mejora #1: Utilizar las anotaciones de Humano y Asistente

El procedimiento de entrenamiento de Claude enseña a FM a entender el diálogo entre un humano y un asistente en su estructura de indicación. Los usuarios de Claude pueden aprovechar esta estructura al finalizar su indicación con Asistente:, lo que hará que Claude comience a generar la respuesta a una consulta basada en lo que ha dicho el humano. Tenga en cuenta que, debido a que Claude seguirá generando texto hasta que se le indique detenerse, asegúrese de usar una secuencia de detención de \n\nHumano: en la solicitud de API a Amazon Bedrock cuando se utiliza Claude. Esto garantizará que solo reciba la respuesta del asistente y no la próxima respuesta predicha del humano en la cadena de diálogo. Estos indicadores \n\nHumano y \n\nAsistente no solo ayudan a limitar la respuesta de Claude a información relevante, sino que también ayudan a proporcionar una clara demarcación entre las entradas humanas principales y las respuestas del asistente de otras interacciones. Esto es especialmente útil en un entorno de indicación de pocos ejemplos en el que puede haber varias consultas y respuestas con consultas etiquetadas con \n\nHumano y respuestas anteriores etiquetadas con \n\nAsistente. Veamos la indicación mejorada y la llamada de API ilustrativa asociada a Amazon Bedrock a través del SDK de Boto3.

Utilizamos la siguiente indicación:

Humano: Crea una canalización que utiliza la base de datos de ExampleCompany y recupera todos los clientes activos

Asistente:

La salida es la siguiente:

Aquí hay una canalización de MongoDB para recuperar todos los clientes activos de la base de datos de ExampleCompany:

canalización = [    {        '$match': {            'base de datos': 'ExampleCompany',             'status': 'active'        }    }]db.customers.aggregate(canalización)

Los pasos clave son:

– `$match` para filtrar los documentos y obtener solo aquellos en la base de datos de ExampleCompany y con el estado igual a “activo”.

– `db.customers.aggregate()` ejecuta la canalización en la colección de clientes y devuelve los resultados filtrados.

Por lo tanto, esto devolverá todos los documentos de clientes de la base de datos de ExampleCompany en los que el campo de estado esté configurado en “activo”.

Observe cómo en la salida, Claude inventa una respuesta a nuestra pregunta sin ningún contexto. La respuesta puede ser potencialmente útil, pero no es específica para el problema que estamos tratando de resolver porque no se proporciona con suficiente contexto. También es importante tener en cuenta que Anthropic requiere este formato de humano y asistente al usar los modelos de Claude; si no incluye este paso, Amazon Bedrock devolverá un error.

Mejora #2: Incluir contexto hiperespecífico para Claude antes de indicarle qué hacer

Claude se desempeña mejor cuando se le proporciona un buen contexto sobre lo que necesita lograr y cómo debe lograr esa tarea. Aquí hay algunos ejemplos de cosas para incluir como contexto para Claude antes de decirle la tarea:

  • Describe la función laboral que deseas que Claude cumpla. Al hacer esto, haces que Claude piense en el rol de alguien que trabaja en ese empleo, o más bien como alguien que acaba de ser contratado en ese rol específico. Esto ayudará a Claude a formular la respuesta desde la perspectiva de ese rol laboral específico, reduciendo la alucinación y la aleatoriedad en la respuesta.
  • Incluye detalles técnicos sobre el formato de salida. Los modelos base suelen ser buenos siguiendo acciones, así que pedirle a Claude que genere la salida en un formato o esquema específico con uno o varios ejemplos ayudará a Claude a proporcionar la respuesta en el formato correcto, reduciendo la necesidad de filtrar y postprocesar la salida. El ejemplo en el siguiente texto muestra un esquema ficticio que coincide con la salida esperada.

Unamos estas sugerencias para mejorar nuestra indicación original:

Humano: Tu trabajo consiste en actuar como un experto en tuberías de ETL. Específicamente, tu trabajo es crear una representación JSON de una tubería de ETL que resuelva la solicitud del usuario proporcionada.

La salida JSON deberá seguir el siguiente formato:

{  "base de datos": "aquí se coloca el nombre de la base de datos",  "consulta": "aquí se coloca una representación SQL para resolver la tarea"}

Aquí está tu tarea: crea una tubería que use la base de datos ExampleCompany y recupere todos los clientes activos

Asistente:

La salida es la siguiente:

Aquí tienes una representación JSON de una tubería de ETL para recuperar todos los clientes activos de la base de datos ExampleCompany:

{  "base de datos": "ExampleCompany",  "consulta": "SELECT * FROM clientes WHERE estado = 'activo'"}

Esta tubería utiliza la base de datos ExampleCompany y una consulta SQL para seleccionar todos los registros de la tabla clientes donde el estado es ‘activo’.

Con la adición de contexto, el modelo ahora puede llegar a la mayor parte de nuestra respuesta. Ahora sabe cómo estructurar la salida y comprende que necesita escribir una declaración SQL para resolver la tarea. Sin embargo, notarás que el modelo no utiliza correctamente la nomenclatura ec_prod.clientes que esperamos. ¡Hay margen de mejora! También debes tener en cuenta que, en la práctica, necesitarás incluir significativamente más contexto que el que proporcionamos en este ejemplo para obtener resultados de alta calidad en casos de uso de texto a tubería.

Mejora #3: Encerrar ejemplos en etiquetas XML

El aprendizaje con pocas muestras es una forma popular de aumentar la precisión con los modelos base cuando tienes ejemplos relevantes para guiar al modelo en su tarea. Esto es particularmente importante cuando se trabaja en aplicaciones de texto a tubería porque estas salidas de tubería hiperespecíficas generalmente no se incluyen en ningún conjunto de datos públicos porque son específicas de la representación de datos de un cliente individual. Al utilizar Claude, puedes aprovechar su conocimiento innato de etiquetas XML arbitrarias para proporcionar estos ejemplos en un formato de pocas muestras. En la siguiente indicación mejorada, observa la adición de ejemplos encerrados en etiquetas <ejemplo> XML. Además, puedes utilizar abreviaturas para humano y asistente, H y A, respectivamente, para proporcionar contexto a Claude sin hacerlo pensar que son partes específicas del diálogo que ya han ocurrido.

Utilizamos la siguiente indicación:

Humano: Tu trabajo consiste en actuar como un experto en tuberías de ETL. Específicamente, tu trabajo es crear una representación JSON de una tubería de ETL que resuelva la solicitud del usuario proporcionada.

La salida JSON deberá seguir el siguiente formato:

{  "base de datos": "aquí se coloca el nombre de la base de datos",  "consulta": "aquí se coloca una representación SQL para resolver la tarea"}

Aquí tienes algunos ejemplos de solicitudes de usuarios y artefactos JSON asociados que resuelven correctamente la tarea proporcionada. Asegúrate de utilizar la misma nomenclatura que se proporciona en los ejemplos si estás utilizando las mismas bases de datos.

<ejemplo-1>

H: consulta la base de datos ExampleCompany para buscar pedidos activos para el cliente #1234

A:

{  "base de datos": "ExampleCompany",  "consulta": "SELECT * FROM ec_prod.pedidos WHERE id_cliente = 1234 AND estado = 'activo'"}

El motivo de esta consulta es que se filtra el cliente #1234 y estamos buscando registros existentes en la tabla “pedidos” después del filtro “activo”.

</ejemplo-1>

<ejemplo-2>

H: eliminar todos los clientes en la base de datos ExampleCompany que no han estado activos en el último mes

A:

{  "base de datos": "ExampleCompany",  "consulta": "SELECT * FROM ec_prod.clientes WHERE estado != 'activo'"}

El motivo de esta consulta es que la tabla “ec_prod.clientes” es la única tabla en la base de datos ExampleCompany que contiene registros de clientes.

</ejemplo-2>

Aquí está tu tarea: crea una tubería que use la base de datos ExampleCompany y recupere todos los clientes activos.

Asistente:

La salida es la siguiente:

Aquí está la representación JSON de un pipeline ETL para recuperar todos los clientes activos de la base de datos de ExampleCompany:

{  "database": "ExampleCompany",  "query": "SELECT * FROM ec_prod.customers WHERE status = 'active'"}

La lógica es la siguiente:

Se especifica la base de datos ExampleCompany como la base de datos a utilizar

La tabla ec_prod.customers contiene los datos de los clientes

El campo status indica si un cliente está activo, por lo que la consulta filtra solo los clientes activos

Esto debería recuperar todos los registros de clientes activos de la base de datos de ExampleCompany. ¡Házmelo saber si necesitas alguna aclaración o tienes requisitos adicionales para el pipeline ETL!

Ahora la salida JSON tiene la nomenclatura correcta de la base de datos, que Claude pudo usar gracias a los ejemplos que proporcionamos. La combinación de indicadores humanos y asistentes con etiquetas XML facilita que Claude comprenda cuál es la tarea y cuál fue la respuesta en ejemplos similares con una separación muy clara entre múltiples ejemplos de pocos disparos. Cuanto más fácil sea para Claude entenderlo, mejor y más relevante será la respuesta, reduciendo aún más la posibilidad de que el modelo alucine y proporcione respuestas irrelevantes al azar.

Mejora #4: Activar a Claude para comenzar la generación JSON con etiquetas XML

Un pequeño desafío con las aplicaciones de texto a pipeline que utilizan FMs es la necesidad de analizar exactamente una salida de texto resultante para que pueda interpretarse como código en una aplicación secundaria. Una forma de resolver esto con Claude es aprovechar su comprensión de etiquetas XML y combinar esto con una secuencia de parada personalizada. En el siguiente ejemplo, hemos indicado a Claude que encierre la salida en las etiquetas XML <json></json>. Luego, hemos agregado la etiqueta <json> al final del ejemplo. Esto garantiza que el primer texto que salga de Claude sea el inicio de la salida JSON. Si no lo haces, Claude a menudo responde con algo de texto conversacional y luego con el verdadero código de respuesta. Al indicarle a Claude que comience inmediatamente a generar la salida, puedes detener fácilmente la generación cuando veas la etiqueta de cierre </json>. Esto se muestra en la llamada actualizada a la API de Boto3. Los beneficios de esta técnica son dos. Primero, puedes analizar exactamente la respuesta de código de Claude. Segundo, puedes reducir costos porque Claude solo genera salidas de código y no texto adicional. Esto reduce el costo en Amazon Bedrock porque se te cobra por cada token que se produce como salida de todos los FMs.

Utilizamos la siguiente indicación:

Humano: Tu trabajo es actuar como un experto en pipelines ETL. Específicamente, tu trabajo es crear una representación JSON de un pipeline ETL que solucionará la solicitud del usuario que se te proporcionó.

La salida JSON debe seguir el siguiente formato:

{    "database": "el nombre de la base de datos que utilizarás aquí"    "query": "coloca una representación SQL para resolver la tarea aquí"}

Aquí tienes algunos ejemplos de solicitudes de usuarios y artefactos JSON de salida asociados que solucionan correctamente la tarea proporcionada. Asegúrate de usar la misma nomenclatura que se proporciona en los ejemplos si estás utilizando las mismas bases de datos.

<example-1>

H: consulta la base de datos de ExampleCompany para encontrar cualquier pedido activo para el cliente #1234

A:

<json>

{  "database": "ExampleCompany",  "query": "SELECT * FROM ec_prod.orders WHERE customer_id = 1234 AND status  = 'active'"}

</json>

El razonamiento de esta consulta es que se filtra el cliente #1234 y estamos buscando en la tabla “orders” cualquier registro existente después del filtro “activo”.

</example-1>

<example-2>

H: eliminar todos los clientes en la base de datos de ExampleCompany que no hayan estado activos en el último mes

A:

<json>

{  "database": "ExampleCompany",  "query": "SELECT * FROM ec_prod.customers WHERE status != 'active'"}

</json>

El razonamiento de esta consulta es que la tabla “ec_prod.customers” es la única tabla en la base de datos de ExampleCompany que contiene registros de clientes.

</example-2>

Recuerda siempre encerrar tus salidas JSON en etiquetas <json></json>.

Aquí está tu tarea: crea un pipeline que use la base de datos ExampleCompany y recupere todos los clientes activos.

Asistente:

<json>

Usamos el siguiente código:

body = json.dumps({"prompt": prompt, "stop_sequences": ['\n\nHuman:', '</json>']})response = bedrock.invoke_model(   body=body,   modelId='anthropic.claude-v2')

La salida es la siguiente:

{  "database": "ExampleCompany",  "query": "SELECT * FROM ec_prod.customers WHERE status = 'active'"}

¡Ahora hemos llegado a la salida esperada solo con el objeto JSON devuelto! Al utilizar este método, podemos generar un artefacto técnico inmediatamente utilizable y reducir el costo de generación al reducir los tokens de salida.

Conclusión

Para comenzar hoy con SnapGPT, solicite una prueba gratuita de SnapLogic o solicite una demostración del producto. Si desea utilizar estos conceptos para crear aplicaciones hoy, le recomendamos experimentar prácticamente con la sección de ingeniería de prompt en esta publicación, utilizando el mismo flujo en un caso de uso de generación DSL diferente que se adapte a su negocio, y profundizar en las funciones RAG que están disponibles a través de Amazon Bedrock.

SnapLogic y AWS han sido capaces de asociarse de manera efectiva para construir un traductor avanzado entre el lenguaje humano y el esquema complejo de los pipelines de integración de SnapLogic impulsados por Amazon Bedrock. A lo largo de este viaje, hemos visto cómo se puede mejorar la salida generada con Claude en aplicaciones de texto-a-pipeline utilizando técnicas específicas de ingeniería de prompt. AWS y SnapLogic están emocionados de continuar esta asociación en la IA generativa y esperan futuras colaboraciones e innovaciones en este ámbito tan dinámico.

We will continue to update Zepes; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

Ciencias de la Computación

Después de un año difícil, Zuckerberg presenta el plan de Meta a los empleados.

En una reunión interna de toda la empresa, el director ejecutivo explicó sus planes para la inteligencia artificial, ...

Inteligencia Artificial

Descubre RAGs una aplicación de Streamlit que te permite crear una tubería RAG a partir de una fuente de datos utilizando lenguaje natural.

Los GPT se destacan en inteligencia artificial en cuanto a tareas de NLP. No obstante, las tuberías construidas e imp...

Inteligencia Artificial

NetEase Youdao abrió EmotiVoice al público un motor de texto a voz potente y moderno.

NetEase Youdao anunció el lanzamiento oficial del “Yi Mo Sheng”: Un motor de síntesis de voz a texto abie...

Inteligencia Artificial

Los robots de IA podrían desempeñar un papel futuro como compañeros en hogares de cuidado

Los robots sociales impulsados por inteligencia artificial podrían ayudar a cuidar a los enfermos y ancianos en el fu...