Cree un asistente generativo de creación de aplicaciones basado en IA utilizando Amazon Bedrock Agents

En esta publicación, configuramos un agente que utiliza Amazon Bedrock Agents para que actúe como asistente de creación de aplicaciones de software.

Los flujos de trabajo agentes son una nueva perspectiva en la creación de flujos de trabajo dinámicos y complejos basados ​​en casos de uso empresarial con la ayuda de modelos de lenguaje grandes (LLM) como motor de razonamiento o cerebro. Estos flujos de trabajo agentes descomponen las tareas basadas en consultas en lenguaje natural en múltiples pasos procesables con ciclos de retroalimentación iterativos y autorreflexión para producir el resultado final utilizando herramientas y API.

Agentes de Amazon Bedrock le ayuda a acelerar el desarrollo de aplicaciones de IA generativa organizando tareas de varios pasos. Amazon Bedrock Agents utiliza la capacidad de razonamiento de los modelos básicos (FM) para dividir las tareas solicitadas por los usuarios en varios pasos. Utilizan las instrucciones proporcionadas por el desarrollador para crear un plan de orquestación y luego llevan a cabo el plan invocando las API de la empresa y accediendo a bases de conocimiento utilizando Retrieval Augmented Generation (RAG) para proporcionar una respuesta final al usuario final. Esto ofrece una enorme flexibilidad de casos de uso, permite flujos de trabajo dinámicos y reduce los costos de desarrollo. Amazon Bedrock Agents desempeña un papel decisivo en la personalización y adaptación de aplicaciones para ayudar a cumplir con los requisitos específicos del proyecto y, al mismo tiempo, proteger los datos privados y proteger sus aplicaciones. Estos agentes trabajan con capacidades de infraestructura administrada de AWS y Roca Amazónicareduciendo los gastos generales de gestión de infraestructura. Además, los agentes agilizan los flujos de trabajo y automatizan tareas repetitivas. Con el poder de la automatización de la IA, puede aumentar la productividad y reducir los costos.

Roca Amazónica es un servicio totalmente administrado que ofrece una selección de FM de alto rendimiento de empresas líderes en IA como AI21 Labs, Anthropic, Cohere, Meta, Mistral AI, Stability AI y Amazon a través de una única API, junto con un amplio conjunto de capacidades para construir Aplicaciones de IA generativa con seguridad, privacidad e IA responsable.

Descripción general de la solución

Normalmente, una aplicación de software de tres niveles tiene un nivel de interfaz de usuario, un nivel intermedio (el backend) para las API empresariales y un nivel de base de datos. El asistente de creación de aplicaciones basado en IA generativa de esta publicación lo ayudará a realizar tareas en los tres niveles. Puede generar y explicar fragmentos de código para la interfaz de usuario y los niveles de backend en el idioma de su elección para mejorar la productividad del desarrollador y facilitar el rápido desarrollo de casos de uso. El agente puede recomendar las mejores prácticas de diseño de arquitectura y software utilizando el Marco de buena arquitectura de AWS para el diseño general del sistema.

El agente puede generar consultas SQL utilizando preguntas en lenguaje natural utilizando un esquema de base de datos DDL (lenguaje de definición de datos para SQL) y ejecutarlas en una instancia de base de datos para el nivel de base de datos.

Usamos Amazon Bedrock Agents con dos bases de conocimiento para este asistente. Bases de conocimiento de Amazon Bedrock utiliza inherentemente la técnica de recuperación de generación aumentada (RAG). Una implementación RAG típica consta de dos partes:

  • Una canalización de datos que ingiere datos de documentos normalmente almacenados en Servicio de almacenamiento simple de Amazon (Amazon S3) en una base de conocimientos, es decir, una base de datos vectorial como Amazon OpenSearch sin servidorpara que esté disponible para su búsqueda cuando se reciba una pregunta
  • Una aplicación que recibe una pregunta del usuario, busca en la base de conocimientos información relevante (contexto), crea un mensaje que incluye la pregunta y el contexto, y se lo proporciona a un LLM para generar una respuesta.

El siguiente diagrama ilustra cómo nuestro asistente de creación de aplicaciones actúa como asistente de codificación, recomienda las mejores prácticas de diseño de AWS y ayuda en la generación de código SQL.

Según los tres flujos de trabajo de la figura anterior, exploremos el tipo de tarea que necesita para diferentes casos de uso:

  • Caso de uso 1 – Si desea escribir y validar una consulta SQL en una base de datos, utilice los esquemas DDL existentes configurados como base de conocimientos 1 para generar la consulta SQL. A continuación se muestran ejemplos de consultas de usuario:
    • ¿Cuáles son los montos totales de ventas por año?
    • ¿Cuáles son los cinco productos más caros?
    • ¿Cuál es el ingreso total de cada empleado?
  • Caso de uso 2 – Si desea recomendaciones sobre las mejores prácticas de diseño, busque la base de conocimientos de AWS Well-Architected Framework (base de conocimientos 2). A continuación se muestran ejemplos de consultas de usuario:
    • ¿Cómo puedo diseñar VPC seguras?
    • ¿Cuáles son algunas de las mejores prácticas de S3?
  • Caso de uso 3 – Es posible que desee crear algún código, como funciones auxiliares como validar el correo electrónico o utilizar código existente. En este caso, utilice técnicas de ingeniería rápida para llamar al agente predeterminado LLM y generar el código de validación de correo electrónico. A continuación se muestran ejemplos de consultas de usuario:
    • Escriba una función de Python para validar la sintaxis de la dirección de correo electrónico.
    • Explícame el siguiente código en un lenguaje lúcido y natural. $code_to_explain (Esta variable se completa utilizando el contenido del código de cualquier archivo de código de su elección. Puede encontrar más detalles en computadora portátil).

Requisitos previos

Para ejecutar esta solución en su cuenta de AWS, complete los siguientes requisitos previos:

  1. Clonar el repositorio de GitHub y siga los pasos explicados en el README.
  2. Configurar un Amazon SageMaker cuaderno en un medio ml.t3. Nube informática elástica de Amazon (Amazon EC2) instancia. Para esta publicación, hemos proporcionado una Formación en la nube de AWS plantilladisponible en el repositorio de GitHub. La plantilla de CloudFormation también proporciona los requisitos necesarios. Gestión de acceso e identidad de AWS (IAM) para configurar la base de datos vectorial, los recursos de SageMaker y AWS Lambda
  3. Adquiera acceso a modelos alojados en Amazon Bedrock. Elegir Administrar el acceso al modelo en el panel de navegación de la consola de Amazon Bedrock y elija de la lista de opciones disponibles. Usamos Claude v3 (Sonnet) de Anthropic en Amazon Bedrock y Amazon Titan Embeddings Text v2 en Amazon Bedrock para esta publicación.

Implementar la solución

En el repositorio de GitHub computadora portátilcubrimos los siguientes objetivos de aprendizaje:

  1. Elija el FM subyacente para su agente.
  2. Escriba una instrucción de agente clara y concisa para utilizar una de las dos bases de conocimiento y el LLM para agente base. (Se dan ejemplos más adelante en la publicación).
  3. Cree y asocie un grupo de acciones con un esquema API y una función Lambda.
  4. Cree, asocie e ingiera datos en las dos bases de conocimiento.
  5. Cree, invoque, pruebe e implemente el agente.
  6. Genere interfaz de usuario y código de backend con LLM.
  7. Recomendar las mejores prácticas de AWS para el diseño de sistemas con las pautas del marco de buena arquitectura de AWS.
  8. Genere, ejecute y valide SQL a partir de la comprensión del lenguaje natural utilizando LLM, ejemplos breves y un esquema de base de datos como base de conocimientos.
  9. Limpie los recursos del agente y sus dependencias mediante un script.

Instrucciones para el agente e indicaciones para el usuario

Las instrucciones del agente asistente del creador de aplicaciones se parecen a las siguientes.

Hello, I am AI Application Builder Assistant. I am capable of answering the following three categories of questions:

- Best practices for design of software applications using the content inside the AWS best practices 
and AWS well-architected framework Knowledge Base. I help customers understand AWS best practices for 
building applications with AWS services.

- Generate a valid SQLite query for the customer using the database schema inside the Northwind DB knowledge base 
and then execute the query that answers the question based on the [Northwind] dataset. If the Northwind DB Knowledge Base search 
function result did not contain enough information to construct a full query try to construct a query to the best of your ability 
based on the Northwind database schema.

- Generate and Explain code for the customer following standard programming language syntax</p><p>Feel free to ask any questions 
along those lines!

Cada pregunta del usuario al agente incluye de forma predeterminada el siguiente mensaje del sistema.

Nota: El siguiente mensaje del sistema sigue siendo el mismo para cada invocación de agente, solo el {user_question_to_agent} se reemplaza con la consulta del usuario.

Question: {user_question_to_agent} 

Given an input question, you will use the existing Knowledge Bases on AWS 
Well-Architected Framework and Northwind DB Knowledge Base.

- For building and designing software applications, you will use the existing Knowledge Base on AWS well-architected framework 
to generate a response of the most relevant design principles and links to any documents. This Knowledge Base response can then be passed 
to the functions available to answer the user question. The final response to the direct answer to the user question. 
It has to be in markdown format highlighting any text of interest. Remove any backticks in the final response.

- To generate code for a given user question,  you can use the default Large Language model to come up with the response. 
This response can be in code markdown format. You can optionally provide an explanation for the code.

- To explain code for a given user question, you can use the default Large Language model to come up with the response.

- For SQL query generation you will ONLY use the existing database schemas in the Northwind DB Knowledge Base to create a syntactically 
correct SQLite query and then you will EXECUTE the SQL Query using the functions and API provided to answer the question.

Make sure to use ONLY existing columns and tables based on the Northwind DB database schema. Make sure to wrap table names with 
square brackets. Do not use underscore for table names unless that is part of the database schema. Make sure to add a semicolon after 
the end of the SQL statement generated.</p><p>Remove any backticks and any html tags like <table><th><tr> in the 
final response.

Here are a few examples of questions I can help answer by generating and then executing a SQLite query:

- What are the total sales amounts by year?</p>
- What are the top 5 most expensive products?</p>
- What is the total revenue for each employee?</p>

Consideraciones de costos

Las siguientes son consideraciones de costos importantes:

  • Esta implementación actual no tiene cargos separados por la creación de recursos utilizando las bases de conocimiento de Amazon Bedrock o los agentes de Amazon Bedrock.
  • Incurrirá en cargos por incrustar el modelo y la invocación del modelo de texto en Amazon Bedrock. Para obtener más detalles, consulte Precios de Amazon Bedrock.
  • Incurrirá en cargos por el uso de Amazon S3 y Vector DB. Para más detalles, ver Precios de Amazon S3 y Precios del servicio Amazon OpenSearchrespectivamente.

Limpiar

Para evitar incurrir en costos innecesarios, la implementación limpia automáticamente los recursos después de una ejecución completa del portátil. Puedes consultar las instrucciones del cuaderno en el Sección de recursos de limpieza sobre cómo evitar la limpieza automática y experimentar con diferentes indicaciones.

El orden de limpieza de recursos es el siguiente:

  1. Deshabilite el grupo de acciones.
  2. Eliminar el grupo de acciones.
  3. Elimina el alias.
  4. Eliminar el agente.
  5. Elimine la función Lambda.
  6. Vacíe el depósito S3.
  7. Elimine el depósito S3.
  8. Elimine funciones y políticas de IAM.
  9. Elimine las políticas de recopilación de bases de datos vectoriales.
  10. Eliminar las bases de conocimiento.

Conclusión

Esta publicación demostró cómo consultar e integrar flujos de trabajo con agentes de Amazon Bedrock utilizando múltiples bases de conocimiento para crear un asistente de creación de aplicaciones de software generativo basado en IA que puede crear y explicar código, generar SQL utilizando esquemas DDL y recomendar sugerencias de diseño utilizando AWS Well-. Marco arquitectónico.

Más allá de la generación de código y la explicación del código como se demuestra en esta publicación, para ejecutar y solucionar problemas del código de la aplicación en un entorno de prueba seguro, puede consultar Configuración del intérprete de código con agentes de Amazon Bedrock

Para obtener más información sobre la creación de agentes para organizar flujos de trabajo, consulte Agentes de Amazon Bedrock.

Expresiones de gratitud

El autor agradece a todos los revisores por sus valiosos comentarios.


Sobre el autor

Ray Shayan es científico aplicado en Amazon Web Services. Su área de investigación es todo lo relacionado con el lenguaje natural (como PNL, NLU, NLG). Su trabajo se ha centrado en IA conversacional, sistemas de diálogo orientados a tareas y agentes basados ​​en LLM. Sus publicaciones de investigación versan sobre procesamiento, personalización y aprendizaje por refuerzo del lenguaje natural.