Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La integración de azure OpenAI Natural Language Processing (NLP) y las funcionalidades de finalización ofrecen un potencial significativo para mejorar la productividad del usuario. Al aprovechar las indicaciones y reglas adecuadas, un asistente de IA puede generar eficazmente diversas formas de comunicación, como mensajes de correo electrónico, mensajes SMS, etc. Esta funcionalidad conduce a un aumento de la eficiencia del usuario y a flujos de trabajo optimizados.
Aunque esta característica es bastante eficaz por sí sola, puede haber casos en los que los usuarios necesiten generar finalizaciones basadas en los datos personalizados de su empresa. Por ejemplo, es posible que tenga una colección de manuales de producto que pueden resultar difíciles para que los usuarios naveguen cuando ayuden a los clientes con problemas de instalación. Como alternativa, puede mantener un conjunto completo de preguntas más frecuentes (P+F) relacionados con los beneficios sanitarios que pueden resultar difíciles para que los usuarios lean y obtengan las respuestas que necesitan. En estos casos y muchos otros, azure OpenAI Service le permite aprovechar sus propios datos para generar finalizaciones, lo que garantiza una respuesta más adaptada y contextualmente precisa a las preguntas del usuario.
Esta es una introducción rápida a cómo funciona la característica "traiga sus propios datos" en la documentación de Azure OpenAI.
Nota:
Una de las características clave de Azure OpenAI en los datos es su capacidad de recuperar y usar datos de forma que mejore la salida del modelo. Azure OpenAI en los datos, junto con Azure AI Search, determina qué datos se van a recuperar del origen de datos designado en función de la entrada del usuario y del historial de conversaciones proporcionado. A continuación, estos datos se aumentan y se vuelven a enviar como una solicitud al modelo de OpenAI, con la información recuperada que se anexa a la solicitud original. Aunque los datos recuperados se anexan a la solicitud, el modelo sigue procesando la entrada resultante como cualquier otra solicitud. Una vez que se han recuperado los datos y la solicitud se ha enviado al modelo, el modelo usa esta información para proporcionar una finalización.
En este ejercicio, aprenderá a:
- Cree un origen de datos personalizado mediante el portal de Azure AI Foundry.
- Implemente un modelo de inserción mediante el portal de Azure AI Foundry.
- Cargar documentos personalizados.
- Inicie una sesión de chat en el área de juegos de chat para experimentar con la generación de finalizaciones basadas en sus propios datos.
- Explore el código que usa Azure AI Search y Azure OpenAI para generar finalizaciones basadas en sus propios datos.
Para empezar, implemente un modelo de inserción y agregue un origen de datos personalizado en Azure AI Foundry.
Adición de un origen de datos personalizado a Azure AI Foundry
Vaya a Azure OpenAI Studio e inicie sesión con credenciales que tengan acceso al recurso de Azure OpenAI.
Seleccione Implementaciones en el menú de navegación.
Seleccione Seleccionar Implementar modelo -->Deploy base model (Implementar modelo base ) en la barra de herramientas.
Seleccione el modelo text-embeding-ada-002 en la lista de modelos y seleccione Confirmar.
Seleccione las siguientes opciones:
- Nombre de implementación: inserción de texto-ada-002
- Versión del modelo: valor predeterminado
- Tipo de implementación: Estándar
- Establezca el valor tokens por límite de velocidad de minutos (miles) en 120 000
- Filtro de contenido: DefaultV2
- Habilitar comillas dinámicas: Habilitado
Seleccione el botón Implementar.
Una vez creado el modelo, seleccione Inicio en el menú de navegación para ir a la pantalla de bienvenida.
Busque el icono Bring your own data (Traer sus propios datos ) en la pantalla de bienvenida y seleccione Pruébelo ahora.
Seleccione Agregar los datos seguidos de Agregar un origen de datos.
En la lista desplegable Seleccionar origen de datos , seleccione Cargar archivos.
En la lista desplegable Seleccionar recurso de Azure Blob Storage , seleccione Crear un nuevo recurso de Azure Blob Storage.
Seleccione la suscripción de Azure en la lista desplegable Suscripción .
En la lista desplegable Seleccionar recurso de Azure Blob Storage , seleccione Crear un nuevo recurso de Azure Blob Storage.
Esto le llevará a Azure Portal, donde puede realizar las siguientes tareas:
- Escriba un nombre único para la cuenta de almacenamiento, como byodstorage[Su apellido].
- Seleccione una región cercana a su ubicación.
- Seleccione Revisar seguido de Crear.
Una vez creado el recurso de Blob Storage, vuelva al cuadro de diálogo Azure AI Foundry y seleccione el recurso de Blob Storage recién creado en la lista desplegable Seleccionar recurso de Azure Blob Storage . Si no lo ve en la lista, seleccione el icono de actualización situado junto a la lista desplegable.
Es necesario activar el uso compartido de recursos entre orígenes (CORS) para que se pueda acceder a la cuenta de almacenamiento. Seleccione Activar CORS en el cuadro de diálogo Azure AI Foundry.
En la lista desplegable Seleccionar recurso de Azure AI Search , seleccione Crear un nuevo recurso de Azure AI Search.
Esto le llevará de vuelta a Azure Portal, donde puede realizar las siguientes tareas:
- Escriba un nombre único para el recurso de búsqueda de IA, como byodsearch-[Su apellido].
- Seleccione una región cercana a su ubicación.
- En la sección Plan de tarifa , seleccione Cambiar plan de tarifa y seleccione Básico seguido de Seleccionar. No se admite el nivel gratis, por lo que limpiará el recurso de búsqueda de IA al final de este tutorial.
- Seleccione Revisar seguido de Crear.
Una vez creado el recurso ai Search, vaya a la página Información general del recurso y copie el valor de dirección URL en un archivo local.
Seleccione Configuración - ->Claves en el menú de navegación.
En la página Control de acceso de API , seleccione Ambos para habilitar el acceso al servicio mediante identidad administrada o mediante una clave. Seleccione Sí cuando se le solicite.
Nota:
Aunque usaremos una clave de API en este ejercicio, ya que agregar asignaciones de roles puede tardar hasta 10 minutos, con un poco de esfuerzo adicional, puede habilitar una identidad administrada asignada por el sistema para acceder al servicio de forma más segura.
Seleccione Claves en el menú de navegación izquierdo y copie el valor de clave de administrador principal en un archivo local. Necesitará los valores de dirección URL y clave más adelante en el ejercicio.
Seleccione Settings --Semantic ranker (Configuración:>clasificador semántico) en el menú de navegación y asegúrese de que Está seleccionado Gratis.
Nota:
Para comprobar si el clasificador semántico está disponible en una región específica, consulte la página Productos disponibles por región en el sitio web de Azure para ver si la región aparece.
Vuelva al cuadro de diálogo Agregar datos de Azure AI Foundry
y seleccione el recurso de búsqueda recién creado en la lista desplegable Seleccionar recurso de Azure AI Search . Si no lo ve en la lista, seleccione el icono de actualización situado junto a la lista desplegable.Escriba un valor de byod-search-index para el valor Escriba el nombre del índice .
Active la casilla Agregar búsqueda vectorial a este recurso de búsqueda .
En la lista desplegable Seleccionar un modelo de inserción , seleccione el modelo text-embeding-ada-002 que creó anteriormente.
En el cuadro de diálogo Cargar archivos , seleccione Examinar un archivo.
Vaya a la carpeta de documentos de cliente del proyecto (ubicada en la raíz del proyecto) y seleccione los siguientes archivos:
- Instructions.docxde instalación de Clock A102
- FAQs.docxde empresa
Nota:
Esta característica admite actualmente los siguientes formatos de archivo para la creación de índices locales: .txt, .md, .html, .pdf, .docx y .pptx.
Seleccione Cargar archivos. Los archivos se cargarán en un contenedor fileupload-byod-search-index en el recurso de blob storage que creó anteriormente.
Seleccione Siguiente para ir al cuadro de diálogo Administración de datos .
En la lista desplegable Tipo de búsqueda , seleccione Híbrido + semántico.
Nota:
Esta opción proporciona compatibilidad con la búsqueda de palabras clave y vectores. Una vez que se devuelven los resultados, se aplica un proceso de clasificación secundario al conjunto de resultados mediante modelos de aprendizaje profundo que mejora la relevancia de búsqueda para el usuario. Para más información sobre la búsqueda semántica, consulte la documentación búsqueda semántica en Azure AI Search .
Asegúrese de que el valor Seleccionar un tamaño está establecido en 1024.
Seleccione Siguiente.
Para el tipo de autenticación de recursos de Azure, seleccione Clave de API. Obtenga más información sobre cómo seleccionar el tipo de autenticación correcto en la documentación de autenticación de Azure AI Search.
Seleccione Siguiente.
Revise los detalles y seleccione Guardar y cerrar.
Ahora que se han cargado los datos personalizados, los datos se indexarán y estarán disponibles para usarlos en el área de juegos de chat. Este proceso puede tardar unos minutos. Una vez completado, continúe con la sección siguiente.
Uso del origen de datos personalizado en el área de juegos de chat
Busque la sección Sesión de chat de la página en Azure OpenAI Studio y escriba la siguiente consulta de usuario:
What safety rules are required to install a clock?
Después de enviar la consulta de usuario, debería ver un resultado similar al siguiente:
Expanda la sección 1 referencias en la respuesta del chat y observe que aparece el archivo De instalación del reloj A102 Instructions.docx y que puede seleccionarlo para ver el documento.
Escriba el siguiente mensaje de usuario:
What should I do to mount the clock on the wall?
Debería ver un resultado similar al siguiente:
Ahora vamos a experimentar con el documento preguntas más frecuentes de la empresa. Escriba el texto siguiente en el campo Consulta de usuario :
What is the company's policy on vacation time?
Debería ver que no se encontró información para esa solicitud.
Escriba el texto siguiente en el campo Consulta de usuario :
How should I handle refund requests?
Debería ver un resultado similar al siguiente:
Expanda la sección 1 referencias en la respuesta del chat y observe que aparece el archivo de FAQs.docxempresa y que puede seleccionarlo para ver el documento.
Seleccione Ver código en la barra de herramientas del área de juegos de chat.
Tenga en cuenta que puede cambiar entre distintos idiomas, ver el punto de conexión y acceder a la clave del punto de conexión. Cierre la ventana de diálogo Código de ejemplo.
Active el botón de alternancia Mostrar JSON sin formato encima de los mensajes de chat. Observe que la sesión de chat comienza con un mensaje similar al siguiente:
{ "role": "system", "content": "You are an AI assistant that helps people find information." }
Ahora que ha creado un origen de datos personalizado y ha experimentado con él en el área de juegos de chat, veamos cómo puede usarlo en la aplicación del proyecto.
Uso de la característica Bring Your Own Data en la aplicación
Vuelva al proyecto en VS Code y abra el archivo .env . Actualice los valores siguientes con el punto de conexión, la clave y el nombre del índice de AI Services. Copió el punto de conexión y la clave en un archivo local anteriormente en este ejercicio.
AZURE_AI_SEARCH_ENDPOINT=<AI_SERVICES_ENDPOINT_VALUE> AZURE_AI_SEARCH_KEY=<AI_SERVICES_KEY_VALUE> AZURE_AI_SEARCH_INDEX=byod-search-index
En un ejercicio anterior ha iniciado la base de datos, las API y la aplicación. También ha actualizado el
.env
archivo. Si no ha completado esos pasos, siga las instrucciones al final del ejercicio anterior antes de continuar.Una vez que la aplicación se haya cargado en el explorador, seleccione el icono Ayuda de chat en la esquina superior derecha de la aplicación.
El texto siguiente debería aparecer en el cuadro de diálogo de chat:
How should I handle a company refund request?
Seleccione el botón Obtener ayuda . Debería ver los resultados devueltos en el documento company FAQs.docx que cargó anteriormente en Azure OpenAI Studio. Si desea leer el documento, puede encontrarlo en la carpeta de documentos del cliente en la raíz del proyecto.
Cambie el texto a lo siguiente y seleccione el botón Obtener ayuda :
What safety rules are required to install a clock?
Debería ver los resultados devueltos en el documento Instalación de Clock A102 Instructions.docx que cargó anteriormente en Azure OpenAI Studio. Este documento también está disponible en la carpeta de documentos del cliente en la raíz del proyecto.
Exploración del código
Sugerencia
Si usa Visual Studio Code, puede abrir archivos directamente seleccionando:
- Windows/Linux: Ctrl + P
- Mac: Cmd + P
A continuación, escriba el nombre del archivo que desea abrir.
Vuelva al código fuente del proyecto en Visual Studio Code.
Abra el archivo server/apiRoutes.ts y busque la
completeBYOD
ruta. Se llama a esta API cuando se selecciona el botón Obtener ayuda en el cuadro de diálogo Ayuda de chat. Recupera el mensaje del usuario del cuerpo de la solicitud y lo pasa a lacompleteBYOD()
función en el archivo server/openAI.ts . A continuación, los resultados se devuelven al cliente.router.post('/completeBYOD', async (req, res) => { const { prompt } = req.body; if (!prompt) { return res.status(400).json({ status: false, error: 'The prompt parameter must be provided.' }); } let result; try { // Call OpenAI to get custom "bring your own data" completion result = await completeBYOD(prompt); } catch (e: unknown) { console.error('Error parsing JSON:', e); } res.json(result); });
Abra el archivo server/openAI.ts y busque la
completeBYOD()
función .async function completeBYOD(userPrompt: string): Promise<string> { const systemPrompt = 'You are an AI assistant that helps people find information in documents.'; return await callOpenAI(systemPrompt, userPrompt, 0, true); }
Esta función tiene las siguientes características:
- El
userPrompt
parámetro contiene la información que el usuario ha escrito en el cuadro de diálogo de ayuda de chat. - la
systemPrompt
variable define que se usará un asistente de IA diseñado para ayudar a las personas a encontrar información. -
callOpenAI()
se usa para llamar a la API de Azure OpenAI y devolver los resultados. Pasa lossystemPrompt
valores yuserPrompt
, así como los parámetros siguientes:-
temperature
- La cantidad de creatividad que se va a incluir en la respuesta. El usuario necesita respuestas coherentes (menos creativas) en este caso, por lo que el valor se establece en 0. -
useBYOD
: valor booleano que indica si se va a usar o no AI Search junto con Azure OpenAI. En este caso, se establecetrue
en para que se use la funcionalidad de búsqueda de IA.
-
- El
La
callOpenAI()
función acepta unuseBYOD
parámetro que se usa para determinar a qué función openAI llamar. En este caso, estableceuseBYOD
en para que se llame atrue
lagetAzureOpenAIBYODCompletion()
función .function callOpenAI(systemPrompt: string, userPrompt: string, temperature = 0, useBYOD = false) { const isAzureOpenAI = OPENAI_API_KEY && OPENAI_ENDPOINT && OPENAI_MODEL; if (isAzureOpenAI) { if (useBYOD) { return getAzureOpenAIBYODCompletion(systemPrompt, userPrompt, temperature); } return getAzureOpenAICompletion(systemPrompt, userPrompt, temperature); } return getOpenAICompletion(systemPrompt, userPrompt, temperature); }
Busque la
getAzureOpenAIBYODCompletion()
función en el servidor o openAI.ts. Es bastante similar a lagetAzureOpenAICompletion()
función que ha examinado anteriormente, pero se muestra como una función independiente para resaltar algunas diferencias clave que son exclusivas del escenario "Azure OpenAI en los datos" disponible en Azure OpenAI.async function getAzureOpenAIBYODCompletion(systemPrompt: string, userPrompt: string, temperature: number): Promise<string> { const dataSources = [ { type: 'azure_search', parameters: { authentication: { type: 'api_key', key: AZURE_AI_SEARCH_KEY }, endpoint: AZURE_AI_SEARCH_ENDPOINT, index_name: AZURE_AI_SEARCH_INDEX } } ]; const completion = await createAzureOpenAICompletion(systemPrompt, userPrompt, temperature, dataSources) as AzureOpenAIYourDataResponse; console.log('Azure OpenAI Add Your Own Data Output: \n', completion.choices[0]?.message); for (let citation of completion.choices[0]?.message?.context?.citations ?? []) { console.log('Citation Path:', citation.filepath); } return completion.choices[0]?.message?.content?.trim() ?? ''; }
Observe la siguiente funcionalidad en la
getAzureOpenAIBYODCompletion()
función :- Se crea una
dataSources
propiedad que contiene los valores ,key
yendpoint
delindex_name
recurso de búsqueda de IA que se agregaron al.env
archivo anteriormente en este ejercicio. - Se llama a la
createAzureOpenAICompletion()
función con lossystemPrompt
valores ,userPrompt
,temperature
ydataSources
. Esta función se usa para llamar a la API de Azure OpenAI y devolver los resultados. - Una vez que se devuelve la respuesta, las citas del documento se registran en la consola. A continuación, el contenido del mensaje de finalización se devuelve al autor de la llamada.
- Se crea una
Algunos puntos finales que se deben tener en cuenta antes de pasar al siguiente ejercicio:
- La aplicación de ejemplo usa un único índice en Azure AI Search. Puede usar varios índices y orígenes de datos con Azure OpenAI. La
dataSources
propiedad de lagetAzureOpenAIBYODCompletion()
función se puede actualizar para incluir varios orígenes de datos según sea necesario. - La seguridad debe evaluarse cuidadosamente con este tipo de escenario. Los usuarios no deben poder formular preguntas y obtener resultados de documentos a los que no pueden acceder.
- La aplicación de ejemplo usa un único índice en Azure AI Search. Puede usar varios índices y orígenes de datos con Azure OpenAI. La
Ahora que ha aprendido sobre Azure OpenAI, avisos, finalizaciones y cómo puede usar sus propios datos, vamos al siguiente ejercicio para obtener información sobre cómo se pueden usar las características de comunicación para mejorar la aplicación. Si quiere obtener más información sobre Azure OpenAI, consulte el contenido de aprendizaje Introducción al servicio Azure OpenAI . Puede encontrar información adicional sobre el uso de sus propios datos con Azure OpenAI en la documentación de datos de Azure OpenAI .