Comience con el chat usando su propio ejemplo de datos para Java
En este artículo se muestra cómo implementar y ejecutar el chat con su ejemplo de datos para Java. En este ejemplo se implementa una aplicación de chat mediante Java, Azure OpenAI Service y Generación aumentada de recuperación (RAG) en Búsqueda de Azure AI para obtener respuestas sobre los beneficios de los empleados en una empresa ficticia. La aplicación se inicializa con archivos PDF, incluido el manual de empleados, un documento de beneficios y una lista de roles y expectativas de la empresa.
En este artículo, se realizan las siguientes tareas:
- Implemente una aplicación de chat en Azure.
- Obtenga respuestas sobre los beneficios para empleados.
- Cambie la configuración para modificar el comportamiento de las respuestas.
Una vez finalizado este artículo, puede comenzar a modificar el nuevo proyecto con su código personalizado.
Este artículo forma parte de una colección de artículos que muestran cómo crear una aplicación de chat mediante Azure OpenAI Service y Búsqueda de Azure AI. Otros artículos de la colección son:
Nota:
En este artículo se usan una o varias plantillas de aplicaciones de IA como base para los ejemplos e instrucciones del artículo. Las plantillas de aplicaciones de IA le proporcionan implementaciones de referencia bien mantenidas y fáciles de implementar que le ayudan a garantizar un punto inicial de alta calidad para sus aplicaciones de IA.
Introducción a la arquitectura
En el siguiente diagrama se muestra una arquitectura sencilla de la aplicación de chat:
Diagrama que muestra la arquitectura del cliente a la aplicación back-end.
Entre los componentes clave de la arquitectura se incluyen:
- Una aplicación web para hospedar la experiencia de chat interactivo.
- Un recurso de Búsqueda de Azure AI para obtener respuestas de sus propios datos.
- Un Azure OpenAI Service para proporcionar:
- Palabras clave para mejorar la búsqueda sobre sus propios datos.
- Respuestas del modelo OpenAI.
- Incrustaciones del modelo ada
Costos
La mayoría de los recursos de esta arquitectura utilizan un nivel de precios básico o de consumo. La tarifa del consumo se basa en el uso, lo que significa que solo paga por lo que utiliza. Para finalizar este artículo, se cobra un cargo, pero es mínimo. Una vez que haya terminado con el artículo, puede eliminar los recursos para dejar de incurrir en cargos.
Obtenga más información sobre el coste en el repositorio de ejemplo.
Requisitos previos
Hay disponible un entorno contenedor de desarrollo con todas las dependencias necesarias para completar este artículo. Puede ejecutar el contenedor de desarrollo en GitHub Codespaces (en un navegador) o localmente utilizando Visual Studio Code.
Para usar este artículo, necesita los siguientes requisitos previos:
- Una suscripción de Azure: Crear una gratuitamente.
- Permisos de cuenta de Azure: tu cuenta de Azure debe contar con permisos de
Microsoft.Authorization/roleAssignments/write
, como Administrador de Acceso de Usuario o Propietario. - Acceso concedido a Azure OpenAI en la suscripción de Azure que quiera. Actualmente, solo la aplicación concede acceso a este servicio. Para solicitar acceso a Azure OpenAI, rellene el formulario en https://aka.ms/oai/access. Si tiene algún problema, abra una incidencia en este repositorio para ponerse en contacto con nosotros.
- Una cuenta de GitHub.
Entorno de desarrollo abierto
Comience ahora con un entorno de desarrollo que tenga todas las dependencias instaladas para completar este artículo.
GitHub Codespaces ejecuta un contenedor de desarrollo administrado por GitHub con Visual Studio Code para la web como interfaz de usuario. Para obtener el entorno de desarrollo más sencillo, utilice Codespaces de GitHub de modo que tenga las herramientas y dependencias de desarrollador correctas preinstaladas para completar este artículo.
Importante
Todas las cuentas de GitHub pueden usar Codespaces durante un máximo de 60 horas gratis cada mes con 2 instancias principales. Para obtener más información, consulte Almacenamiento y horas de núcleo incluidas mensualmente en GitHub Codespaces.
Haga clic con el botón derecho del ratón en el botón siguiente y seleccione Abrir vínculo en ventanas nuevas para disponer al mismo tiempo del entorno de desarrollo y de la documentación.
En la página Crear codespace, revise las opciones de configuración de codespace y, después, seleccione Crear Codespace.
Captura de pantalla de la pantalla de confirmación antes de crear un nuevo codespace.
Espere a que se inicie Codespace. Este proceso de startup puede tardar unos minutos.
En el terminal de la parte inferior de la pantalla, inicie sesión en Azure con Azure Developer CLI.
azd auth login
Copie el código del terminal y péguelo en un navegador. Siga las instrucciones para autenticarse con su cuenta Azure.
Las tareas restantes de este artículo tienen lugar en el contexto de este contenedor de desarrollo.
Implementación y ejecución
El repositorio de ejemplo contiene todo el código y los archivos de configuración necesarios para implementar una aplicación de chat en Azure. Los siguientes pasos le guiarán a través del proceso de implementación de la muestra en Azure.
Implementación de la aplicación de chat en Azure
Importante
Los recursos Azure creados en esta sección incurren en costes inmediatos, principalmente del recurso Azure AI Search. Estos recursos pueden acumular costes incluso si interrumpe el comando antes de que se ejecute por completo.
Aprovisione los recursos de Azure e implemente el código fuente mediante la ejecución del siguiente comando:
azd up
Si se le pide que escriba un nombre de entorno, manténgalo corto y en minúsculas, por ejemplo,
myenv
. Se usa como parte del nombre del grupo de recursos.Cuando se le solicite, seleccione una suscripción en la que crear los recursos.
Cuando se le pida que seleccione una ubicación la primera vez, seleccione una ubicación cercana. Esta ubicación se utiliza para la mayoría de los recursos, incluido el hospedaje.
Si se le pide una ubicación para el modelo OpenAI, seleccione una ubicación que esté cerca de usted. Si está disponible la misma ubicación que la primera, selecciónela.
Espere hasta que se implemente la aplicación, lo que puede tardar entre 5 y 10 minutos en completarse.
Una vez que la aplicación se implemente correctamente, verá una dirección URL mostrada en el terminal.
Seleccione esa URL etiquetada
Deploying service web
para abrir la aplicación de chat en un navegador.
Utilice la aplicación de chat para obtener respuestas de archivos PDF
La aplicación de chat está precargada con información sobre los beneficios de los empleados a partir de archivos PDF. Puede utilizar la aplicación de chat para hacer preguntas sobre los beneficios. Los siguientes pasos le guiarán a través del proceso de uso de la aplicación de chat.
En el explorador, seleccione o escriba ¿Qué se incluye en mi plan Northwind Health Plus que no está en el estándar? en el cuadro de texto del chat.
Captura de pantalla de la primera respuesta de la aplicación de chat.
De la respuesta, seleccione una de las citas.
En el panel derecho, use las pestañas para entender cómo se ha generado la respuesta.
Pestaña Descripción Proceso de ideas Script de las interacciones en el chat. Contenido adicional Incluye la información para responder a su pregunta y el material de origen. Referencia bibliográfica Muestra la página PDF que contiene la cita. Una vez que haya terminado, vuelva a seleccionar la pestaña seleccionada para cerrar el panel.
Utilice la configuración de la aplicación de chat para cambiar el comportamiento de las respuestas
El modelo openAI y la configuración que se usan para interactuar con el modelo determinan la inteligencia de la aplicación de chat.
Captura de pantalla de la configuración del desarrollador de chat.
Configuración | Descripción |
---|---|
Anular plantilla de solicitud | Solicitud que se utiliza para generar la respuesta. |
Recuperar esta cantidad de resultados | Número de resultados de búsqueda que se usan para generar la respuesta. Puede ver estas fuentes devueltas en las pestañas Proceso de ideas y Contenido de soporte de la cita. |
Excluir categoría | Categoría de documentos que se excluyen de los resultados de búsqueda. |
Utilizar un clasificador semántico para la recuperación | Característica de Azure AI Search que usa el aprendizaje automático para mejorar la relevancia en los resultados de búsqueda. |
Utilizar resúmenes contextuales de consultas en lugar de documentos completos | Cuando Use semantic ranker y Use query-contextual summaries están marcadas, el LLM utiliza subtítulos extraídos de pasajes clave, en lugar de todos los pasajes, en los documentos mejor clasificados. |
Sugerir preguntas de seguimiento | Haga que la aplicación de chat sugiera preguntas de seguimiento en función de la respuesta. |
Modo de recuperación | Vectores + Texto significa que los resultados de la búsqueda se basan en el texto de los documentos y en las incrustaciones de los mismos. Vectores significa que los resultados de la búsqueda se basan en las incrustaciones de los documentos. Texto significa que los resultados de la búsqueda se basan en el texto de los documentos. |
Transmitir respuestas de finalización de chat | Transmita la respuesta en lugar de esperar a disponer de la respuesta completa para responder. |
Los siguientes pasos le guiarán a través del proceso de cambio de la configuración.
En el explorador, seleccione la pestaña Configuración del desarrollador.
Active la casilla Sugerir preguntas de seguimiento y vuelva a formular la misma pregunta.
What is my deductible?
El chat devuelve preguntas de seguimiento sugeridas, como estas:
1. What is the cost sharing for out-of-network services? 2. Are preventive care services subject to the deductible? 3. How does the prescription drug deductible work?
En la pestaña Configuración, anule la selección de Utilizar el clasificador semántico para la recuperación.
¿Vuelve a hacer la misma pregunta?
What is my deductible?
¿Cuál es la diferencia entre las respuestas?
Por ejemplo, la respuesta que usó el clasificador semántico proporcionó una sola respuesta:
The deductible for the Northwind Health Plus plan is $2,000 per year
.La respuesta sin clasificación semántica devolvía una respuesta que requería más trabajo para obtenerla:
Based on the information provided, it is unclear what your specific deductible is. The Northwind Health Plus plan has different deductible amounts for in-network and out-of-network services, and there is also a separate prescription drug deductible. I would recommend checking with your provider or referring to the specific benefits details for your plan to determine your deductible amount
.
Limpieza de recursos
Limpieza de los recursos de Azure
Los recursos Azure creados en este artículo se facturan a su suscripción Azure. Si no espera necesitar estos recursos en el futuro, elimínelos para evitar incurrir en más gastos. Use el siguiente comando para eliminar los recursos de Azure y quitar el código fuente:
azd down --purge
Limpiar GitHub Codespaces
La eliminación del entorno de GitHub Codespaces garantiza que pueda maximizar la cantidad de derechos de horas gratuitas por núcleo que obtiene para su cuenta.
Importante
Para obtener más información sobre los derechos de la cuenta de GitHub, consulte Almacenamiento y horas de núcleo incluidas mensualmente en GitHub Codespaces.
Inicie sesión en el panel de GitHub Codespaces.
Busque los Codespaces que se ejecutan actualmente a partir del repositorio de GitHub Azure-Samples/azure-search-openai-demo-java.
Captura de pantalla de todos los espacios de código en ejecución, incluidos su estado y las plantillas.
Abra el menú contextual del codespace y, a continuación, seleccione Eliminar.
Captura de pantalla del menú contextual de un solo codespace con la opción para eliminar resaltada.
¿Cómo se responde a la pregunta?
La aplicación se separa en dos aplicaciones:
- Una aplicación JavaScript de front-end usando el marco de trabajo de React con la herramienta de compilación Vite.
- Una aplicación Java de back-end responde a la pregunta.
El back-end de la API de /chat
recorre el proceso para obtener la respuesta:
- Crear opciones de RAG: cree un conjunto de opciones usadas para generar una respuesta.
- Cree un enfoque usando las opciones RAG: Use una combinación de modelos basados en la recuperación y en la generación para crear un enfoque que genere una respuesta precisa y que suene natural.
- Ejecute el enfoque con las opciones de RAG y la conversación previa: Use las opciones de enfoque y de RAG para generar una respuesta basada en la conversación anterior. La respuesta incluye información sobre los documentos que se usaron para generar la respuesta.
Obtener ayuda
Este repositorio de muestras ofrece información para la resolución de problemas. Si el problema no se soluciona, insértelo en el repositorio de problemas .
Pasos siguientes
- Obtener el código fuente para el ejemplo usado en este artículo
- Crear una aplicación de chat con la arquitectura de soluciones de mejores prácticas de Azure OpenAI
- Control de acceso en aplicaciones de IA generativa con Búsqueda de Azure AI
- Cree una solución OpenAI preparada para la empresa con Azure API Management
- Superar el vector de búsqueda con capacidades híbridas de recuperación y clasificación
- Más plantillas de Azure AI de extremo a extremo