Usar la aplicación web de Azure OpenAI
Junto con Azure AI Foundry, Azure OpenAI Studio, API y SDK, puede usar la aplicación web independiente personalizable para interactuar con los modelos de Azure OpenAI mediante una interfaz gráfica de usuario. Entre las características principales se incluyen:
- Conectividad con varios orígenes de datos para admitir consultas enriquecidas y generación aumentada de recuperación, como Azure AI Search, Flujo de avisos y mucho más.
- Historial de conversaciones y recopilación de comentarios de usuarios a través de Cosmos DB.
- Autenticación con control de acceso basado en rol a través de Microsoft Entra ID.
- Personalización de la interfaz de usuario, los orígenes de datos y las características mediante variables de entorno (sin código a través de Azure Portal).
- Compatibilidad con la modificación del código fuente de la aplicación web subyacente como repositorio de código abierto.
Puede implementar la aplicación mediante Azure AI Foundry o Azure OpenAI Studio, o a través de una implementación manual a través de Azure Portal o la Azure Developer CLI a través de la máquina local (instrucciones disponibles en el repositorio aquí). En función del canal de implementación, puede cargar previamente un origen de datos con el que chatear a través de la aplicación web, pero esto puede cambiarse después de la implementación.
Para principiantes de Azure OpenAI que buscan chatear con sus datos a través de la aplicación web, Azure AI Foundry es el medio recomendado para la implementación inicial y la configuración del origen de datos.
Consideraciones importantes
- Esta aplicación web y muchas de sus características están en versión preliminar, lo que significa que los errores pueden producirse y que no todas las características pueden completarse. Si encuentra un error o requiere ayuda, genere un problema en el repositorio de GitHub asociado.
- La publicación de una aplicación web crea una instancia de Azure App Service en la suscripción. Puede suponer costes en función del plan de precios que elija. Cuando haya terminado con la aplicación, puede eliminarla y los recursos asociados de Azure Portal.
- Los modelos GPT-4 Turbo con Vision no se admiten actualmente.
- De forma predeterminada, la aplicación se implementa con el proveedor de identidades de Microsoft ya configurado. El proveedor de identidades restringe el acceso a la aplicación a los miembros del inquilino de Azure. Para agregar o modificar la autenticación:
Vaya a Azure Portal y busque el nombre de la aplicación que especificó durante la publicación. Seleccione la aplicación web y, a continuación, seleccione Autenticación en el menú de la izquierda. Seleccione Agregar proveedor de identidades.
Seleccione Microsoft como proveedor de identidades. La configuración predeterminada de esta página restringe la aplicación al inquilino solamente, por lo que no será necesario cambiar nada más aquí. Seleccione Agregar.
Ahora se pedirá a los usuarios que inicien sesión con su cuenta de Microsoft Entra para acceder a la aplicación. Podría seguir un proceso similar para agregar otro proveedor de identidades si lo prefiriese. La aplicación no usa la información de inicio de sesión del usuario de ninguna manera distinta a la comprobación de que el usuario sea miembro del inquilino. Para obtener más información sobre cómo administrar la autenticación, consulte este inicio rápido sobre la autenticación de aplicaciones web en Azure App Service.
Personalización de la aplicación mediante variables de entorno
Puede personalizar la lógica de front-end y back-end de la aplicación. La aplicación proporciona varias variables de entorno para escenarios de personalización comunes, como cambiar el icono de la aplicación.
Estas variables de entorno se pueden modificar a través de Azure Portal después de implementar la aplicación web.
- En Azure Portal, busque y seleccione la página App Services.
- Seleccione la aplicación web que acaba de implementar.
- En el menú izquierdo de la aplicación, seleccione Configuración > Variables de entorno.
- Para modificar una variable de entorno existente, haga clic en su nombre.
- Para agregar una sola variable de entorno nueva, haga clic en Agregar en la barra de menús superior del panel.
- Para usar el editor basado en JSON para administrar variables de entorno, haga clic en Edición avanzada.
Al personalizar la aplicación, se recomienda lo siguiente:
Comunicar claramente cómo afecta cada configuración que usted implementa a la experiencia del usuario.
Actualización de la configuración de la aplicación para cada una de las aplicaciones implementadas para usar nuevas claves de API después de rotar las claves para el recurso de Azure OpenAI o Azure AI Search.
El código fuente de ejemplo para la aplicación web está disponible en GitHub. El código fuente se proporciona "tal cual" y solo como ejemplo. Los clientes son responsables de toda la personalización e implementación de sus aplicaciones web.
Modificación de la interfaz de usuario de la aplicación
Las variables de entorno relevantes para la personalización de la interfaz de usuario son:
UI_CHAT_DESCRIPTION
: este es el texto de párrafo más pequeño que se muestra debajo deUI_CHAT_TITLE
en el centro de la página al cargarse.- Tipo de datos: texto
UI_CHAT_LOGO
: esta es la imagen grande que se muestra en el centro de la página al cargarse.- Tipo de datos: dirección URL a imagen
UI_CHAT_TITLE
: este es el texto grande que se muestra en el centro de la página al cargarse.- Tipo de datos: texto
UI_FAVICON
: este es el favicono que se muestra en la ventana o pestaña del explorador.- Tipo de datos: dirección URL a imagen
UI_LOGO
: este es el logotipo aparece en la parte superior izquierda de la página y a la izquierda del título.- Tipo de datos: dirección URL a imagen
UI_TITLE
: este es el título que se muestra en la ventana o pestaña del explorador. También aparece en la parte superior izquierda de la página por el logotipo.- Tipo de datos: texto
UI_SHOW_SHARE_BUTTON
: este botón aparece en la parte superior derecha de la página y permite a los usuarios compartir una dirección URL vinculada a la aplicación web.- Tipo de datos: booleano, debe escribir VERDERO o FALSO, el valor predeterminado es VERDADERO si se deja en blanco o no especificado.
UI_SHOW_CHAT_HISTORY_BUTTON
: aparece en la parte superior derecha de la página y a la izquierda del UI_SHOW_SHARE_BUTTON.- Tipo de datos: booleano, debe escribir VERDERO o FALSO, el valor predeterminado es VERDADERO si se deja en blanco o no especificado.
Para modificar la interfaz de usuario de la aplicación, siga las instrucciones del paso anterior para abrir la página de variables de entorno de la aplicación web. A continuación, use Edición avanzada para abrir el editor basado en JSON. En la parte superior del código JSON (después del carácter [
), pegue el bloque de código siguiente y personalice los valores en consecuencia:
{
"name": "UI_CHAT_DESCRIPTION",
"value": "This is an example of a UI Chat Description. Chatbots can make mistakes. Check important info and sensitive info.",
"slotSetting": false
},
{
"name": "UI_CHAT_LOGO",
"value": "https://learn-bot.azurewebsites.net/assets/Contoso-ff70ad88.svg",
"slotSetting": false
},
{
"name": "UI_CHAT_TITLE",
"value": "This is an example of a UI Chat Title. Start chatting",
"slotSetting": false
},
{
"name": "UI_FAVICON",
"value": "https://learn-bot.azurewebsites.net/assets/Contoso-ff70ad88.svg",
"slotSetting": false
},
{
"name": "UI_LOGO",
"value": "https://learn-bot.azurewebsites.net/assets/Contoso-ff70ad88.svg",
"slotSetting": false
},
{
"name": "UI_TITLE",
"value": "This is an example of a UI Title",
"slotSetting": false
},
Habilitación del historial de chat mediante Cosmos DB
Puede activar el historial de chat para los usuarios de la aplicación web. Al activar la característica, los usuarios tienen acceso a sus consultas y respuestas anteriores individuales.
Para activar el historial de chats, implemente o vuelva a implementar el modelo como una aplicación web mediante Azure OpenAI Studio o Azure AI Foundry y seleccione Habilitar el historial de chat y los comentarios de los usuarios en la aplicación web.
Importante
Al activar el historial de chat se crea una instancia de Azure Cosmos DB en el grupo de recursos y se incurre en cargos adicionales para el almacenamiento que use más allá de los niveles gratuitos.
Después de activar el historial de chats, los usuarios pueden mostrarlo y ocultarlo en la esquina superior derecha de la aplicación. Cuando los usuarios muestran el historial de chat, pueden cambiar el nombre o eliminar conversaciones. Puede modificar si los usuarios pueden acceder a esta función mediante la variable de entorno UI_SHOW_CHAT_HISTORY_BUTTON
tal y como se especificó en la sección anterior. Dado que los usuarios han iniciado sesión en la aplicación, las conversaciones se ordenan automáticamente de la más reciente a la más antigua. Las conversaciones se denominan en función de la primera consulta de la conversación.
Nota:
Las regiones populares de Azure, como Este de EE. UU., pueden experimentar períodos de alta demanda en los que es posible que no sea posible implementar una nueva instancia de Cosmos DB. En ese caso, opte por implementar en una región alternativa, como Este de EE. UU. 2 o vuelva a intentar la implementación hasta que se realice correctamente. Si se produce un error en la implementación de Cosmos DB, la aplicación estará disponible en su dirección URL especificada, pero el historial de chat no estará disponible. La habilitación del historial de conversaciones también habilitará el botón Ver historial de conversaciones en la parte superior derecha.
La implementación con la opción historial de chat seleccionada rellenará automáticamente las siguientes variables de entorno, por lo que no es necesario modificarlas a menos que desee cambiar las instancias de Cosmos DB. Son las siguientes:
AZURE_COSMOSDB_ACCOUNT
: este es el nombre de la cuenta de Cosmos DB que se implementa junto con la aplicación web.- Tipo de datos: texto
AZURE_COSMOSDB_ACCOUNT_KEY
: se trata de una variable de entorno alternativa que solo se usa cuando los permisos no se conceden a través de Microsoft Entra ID y la autenticación basada en claves se usan en su lugar.- Tipo de datos: texto. Normalmente no está presente o rellenado.
AZURE_COSMOSDB_DATABASE
: este es el nombre del objeto de base de datos dentro de Cosmos DB que se implementa junto con la aplicación web.- Tipo de datos: texto, debe ser
db_conversation_history
- Tipo de datos: texto, debe ser
AZURE_COSMOSDB_CONTAINER
: este es el nombre del objeto contenedor de base de datos dentro de Cosmos DB que se implementa junto con la aplicación web.- Tipo de datos: texto, debe ser
conversations
- Tipo de datos: texto, debe ser
AZURE_COSMOSDB_ACCOUNT
: este es el nombre de la cuenta de Cosmos DB que se implementa junto con la aplicación web.- Tipo de datos: texto
Recopilación de comentarios de usuario
Para recopilar comentarios de los usuarios, puede habilitar un conjunto de iconos "pulgares hacia arriba" y "pulgares hacia abajo" que aparecen en cada una de las respuestas del bot de chat. Esto permitirá a los usuarios evaluar la calidad de una respuesta e indicar dónde se producen los errores mediante una ventana modal "proporcionar comentarios negativos".
Para habilitar esta característica, establezca la siguiente variable de entorno en VERDADERO:
AZURE_COSMOSDB_ENABLE_FEEDBACK
: este es el nombre de la cuenta de Cosmos DB que se implementa junto con la aplicación web.- Tipo de datos: Tipo de datos: Boolean, debe escribir VERDADERO o FALSO
Esto se puede lograr mediante las opciones Edición avanzada o Edición simple, como se explicó anteriormente. El JSON que se va a pegar en el editor JSON de edición avanzada es:
{
"name": "AZURE_COSMOSDB_ENABLE_FEEDBACK",
"value": "True",
"slotSetting": false
},
Conectando a Búsqueda de Azure AI y archivos cargados como origen de datos
Uso de Azure AI Foundry
Siga este tutorial sobre la integración de la Búsqueda de Azure AI con AI Foundry y vuelva a implementar la aplicación.
Uso de Azure OpenAI Studio
Siga este tutorial sobre la integración de la Búsqueda de Azure AI con OpenAI Studio y vuelva a implementar la aplicación.
Uso de variables de entorno
Para conectarse a la Búsqueda de Azure AI sin volver a implementar la aplicación, puede modificar las siguientes variables de entorno obligatorias mediante cualquiera de las opciones de edición que se describen anteriormente.
DATASOURCE_TYPE
: esto determina qué origen de datos se va a usar al responder a las consultas de un usuario.- Tipo de datos: texto. Debe establecerse en
AzureCognitiveSearch
(nombre anterior de la Búsqueda de Azure AI)
- Tipo de datos: texto. Debe establecerse en
AZURE_SEARCH_SERVICE
: este es el nombre de la instancia de la Búsqueda de Azure AI.- Tipo de datos: texto
AZURE_SEARCH_INDEX
: este es el nombre del nombre del índice de la instancia de la Búsqueda de Azure AI.- Tipo de datos: texto
AZURE_SEARCH_KEY
: esta es la clave de autenticación de la instancia de la Búsqueda de Azure AI. Opcional si usa Microsoft Entra ID para la autenticación.- Tipo de datos: texto
Escenarios de personalización adicionales mediante variables de entorno
AZURE_SEARCH_USE_SEMANTIC_SEARCH
: indica si se debe usar la búsqueda semántica en la Búsqueda de Azure AI.- Tipo de datos: booleano, debe establecerse en
False
si no se usa la búsqueda semántica.
- Tipo de datos: booleano, debe establecerse en
AZURE_SEARCH_SEMANTIC_SEARCH_CONFIG
: especifica el nombre de la configuración de búsqueda semántica que se usará si está habilitada la búsqueda semántica.- Tipo de datos: texto, el valor predeterminado es
azureml-default
.
- Tipo de datos: texto, el valor predeterminado es
AZURE_SEARCH_INDEX_TOP_K
: define el número de documentos principales que se van a recuperar de la Búsqueda de Azure AI.- Tipo de datos: entero, debe establecerse en
5
.
- Tipo de datos: entero, debe establecerse en
AZURE_SEARCH_ENABLE_IN_DOMAIN
: limita las respuestas a las consultas relacionadas solo con los datos.- Tipo de datos: booleano, debe establecerse en
True
.
- Tipo de datos: booleano, debe establecerse en
AZURE_SEARCH_CONTENT_COLUMNS
: especifica la lista de campos del índice de la Búsqueda de Azure AI que contiene el contenido de texto de los documentos, que se usa al simular una respuesta del bot.- Tipo de datos: texto, el valor predeterminado es
content
si se implementa desde Azure AI Foundry o Azure OpenAI Studio,
- Tipo de datos: texto, el valor predeterminado es
AZURE_SEARCH_FILENAME_COLUMN
: especifica el campo del índice de la Búsqueda de Azure AI que proporciona un identificador único de los datos de origen que se van a mostrar en la interfaz de usuario.- Tipo de datos: texto, el valor predeterminado es
filepath
si se implementa desde Azure AI Foundry o Azure OpenAI Studio,
- Tipo de datos: texto, el valor predeterminado es
AZURE_SEARCH_TITLE_COLUMN
: especifica el campo del índice de la Búsqueda de Azure AI que proporciona un título o encabezado pertinentes para que el contenido de los datos se muestre en la interfaz de usuario.- Tipo de datos: texto, el valor predeterminado es
title
si se implementa desde Azure AI Foundry o Azure OpenAI Studio,
- Tipo de datos: texto, el valor predeterminado es
AZURE_SEARCH_URL_COLUMN
: especifica el campo del índice de la Búsqueda de Azure AI que contiene una dirección URL para el documento.- Tipo de datos: texto, el valor predeterminado es
url
si se implementa desde Azure AI Foundry o Azure OpenAI Studio,
- Tipo de datos: texto, el valor predeterminado es
AZURE_SEARCH_VECTOR_COLUMNS
: especifica la lista de campos del índice de la Búsqueda de Azure AI que contienen incrustaciones vectoriales de los documentos, que se usan al simular una respuesta del bot.- Tipo de datos: texto, el valor predeterminado es
contentVector
si se implementa desde Azure AI Foundry o Azure OpenAI Studio,
- Tipo de datos: texto, el valor predeterminado es
AZURE_SEARCH_QUERY_TYPE
: especifica el tipo de consulta que se va a usar:simple
,semantic
,vector
,vectorSimpleHybrid
ovectorSemanticHybrid
. Esta configuración tiene prioridad sobreAZURE_SEARCH_USE_SEMANTIC_SEARCH
.- Tipo de datos: texto, se recomienda probar con
vectorSemanticHybrid
.
- Tipo de datos: texto, se recomienda probar con
AZURE_SEARCH_PERMITTED_GROUPS_COLUMN
: especifica el campo del índice de la Búsqueda de Azure AI que contiene identificadores de grupo de Microsoft Entra, lo que determina el control de acceso de nivel de documento.- Tipo de datos: texto
AZURE_SEARCH_STRICTNESS
: especifica el nivel de estricto para el modelo que limita las respuestas a los datos.- Tipo de datos: entero, debe establecerse entre
1
y5
, con3
recomendado.
- Tipo de datos: entero, debe establecerse entre
AZURE_OPENAI_EMBEDDING_NAME
: especifica el nombre de la implementación del modelo de inserción si se usa el vector de búsqueda.- Tipo de datos: texto
El JSON que se va a pegar en el editor JSON de edición avanzada es:
{
"name": "AZURE_SEARCH_CONTENT_COLUMNS",
"value": "",
"slotSetting": false
},
{
"name": "AZURE_SEARCH_ENABLE_IN_DOMAIN",
"value": "true",
"slotSetting": false
},
{
"name": "AZURE_SEARCH_FILENAME_COLUMN",
"value": "",
"slotSetting": false
},
{
"name": "AZURE_SEARCH_INDEX",
"value": "",
"slotSetting": false
},
{
"name": "AZURE_SEARCH_KEY",
"value": "",
"slotSetting": false
},
{
"name": "AZURE_SEARCH_PERMITTED_GROUPS_COLUMN",
"value": "",
"slotSetting": false
},
{
"name": "AZURE_SEARCH_QUERY_TYPE",
"value": "vectorSemanticHybrid",
"slotSetting": false
},
{
"name": "AZURE_SEARCH_SEMANTIC_SEARCH_CONFIG",
"value": "azureml-default",
"slotSetting": false
},
{
"name": "AZURE_SEARCH_SERVICE",
"value": "",
"slotSetting": false
},
{
"name": "AZURE_SEARCH_STRICTNESS",
"value": "3",
"slotSetting": false
},
{
"name": "AZURE_SEARCH_TITLE_COLUMN",
"value": "",
"slotSetting": false
},
{
"name": "AZURE_SEARCH_TOP_K",
"value": "5",
"slotSetting": false
},
{
"name": "AZURE_SEARCH_URL_COLUMN",
"value": "",
"slotSetting": false
},
{
"name": "AZURE_SEARCH_USE_SEMANTIC_SEARCH",
"value": "true",
"slotSetting": false
},
{
"name": "AZURE_SEARCH_VECTOR_COLUMNS",
"value": "contentVector",
"slotSetting": false
},
Conexión al Flujo de avisos como origen de datos
Los flujos de avisos permiten definir una lógica de procesamiento y RAG altamente personalizable en las consultas de un usuario.
Creación e implementación del flujo de avisos en el portal de Azure AI Foundry
Siga este tutorial para crear, probar e implementar un punto de conexión de inferencia para el flujo de avisos en el portal de Azure AI Foundry.
Habilitación de citas subyacentes desde el flujo de avisos
Al configurar el flujo de avisos para mostrar citas cuando se integra esta aplicación web, debe devolver dos salidas clave: una llamada documents
(las citas) y otra llamada reply
(la respuesta del lenguaje natural).
documents
es un objeto JSON, que debe contener los siguientes elementos.citations
es una lista que puede contener varios elementos después del mismo esquema. el objetodocuments
debe generarse y rellenarse en función del patrón RAG seleccionado.
{
"citations": [
{
"content": "string",
"id": 12345,
"title": "string",
"filepath": "string",
"url": "string",
"metadata": "string",
"chunk_id": None,
"reindex_id": None,
"part_index": None
}
],
"intent": "Your_string_here"
}
reply
consta de una cadena devuelta que representa el lenguaje natural final a una consulta de usuario determinada.reply
debe contener referencias a cada uno de los documentos (orígenes) en el formato siguiente:[doc1], [doc2]
y mucho más. La aplicación web analizaráreply
y procesará las referencias, reemplazando todas las instancias de[doc1]
por pequeños indicadores numéricos superíndices que se vinculan directamente aldocuments
ordenado que se devuelven. Por lo tanto, debe solicitar al LLM que genere el lenguaje natural final para incluir estas referencias, que también se deben pasar en la llamada LLM para asegurarse de que se alinean correctamente. Por ejemplo:
system:
You are a helpful chat assistant that answers a user's question based on the information retrieved from a data source.
YOU MUST ALWAYS USE CITATIONS FOR ALL FACTUAL RESPONSES. YOU MUST INCLUDE CITATIONS IN YOUR ANSWER IN THE FORMAT [doc1], [doc2], ... AND SO FORTH WHEN YOU ARE USING INFORMATION RELATING TO SAID SOURCE. THIS MUST BE RETURNED IN YOUR ANSWER.
Provide sort and concise answers with details directly related to the query.
## Conversation history for context
{% for item in chat_history %}
user:
{{item.inputs.query}}
assistant:
{{item.outputs.reply}}
{% endfor %}
## Current question
user:
### HERE ARE SOME CITED SOURCE INFORMATION FROM A MOCKED API TO ASSIST WITH ANSWERING THE QUESTION BELOW. ANSWER ONLY BASED ON THE TRUTHS PRESENTED HERE.
{{your_input_name_for_documents}}
FOR EACH OF THE CITATIONS ABOVE, YOU MUST INCLUDE IN YOUR ANSWER [doc1], [doc2], ... AND SO FORTH WHEN YOU ARE USING INFORMATION RELATING TO SAID SOURCE. THIS MUST BE RETURNED IN YOUR ANSWER.
### HERE IS THE QUESTION TO ANSWER.
{{question}}
Configuración de variables de entorno para integrar el flujo de avisos
Las variables de entorno que se van a modificar son:
AZURE_OPENAI_STREAM
: determina si la respuesta se carga en un formato de streaming (carga incremental). Esto no se admite para el flujo de avisos y, por tanto, debe establecerse enFalse
para usar esta característica.- Tipo de datos: booleano, se establece en
True
si no se usa el flujo de avisos,False
si se usa el flujo de avisos
- Tipo de datos: booleano, se establece en
USE_PROMPTFLOW
: indica si se debe usar un punto de conexión implementado por el flujo de avisos existente. Si se establece enTrue
, debe establecerse tantoPROMPTFLOW_ENDPOINT
comoPROMPTFLOW_API_KEY
.- Tipo de datos: booleano, debe establecerse en
False
si no se usa el flujo de avisos.
- Tipo de datos: booleano, debe establecerse en
PROMPTFLOW_ENDPOINT
: especifica la dirección URL del punto de conexión del flujo de avisos del sistema implementado.- Tipo de datos: texto, por ejemplo
https://pf-deployment-name.region.inference.ml.azure.com/score
- Tipo de datos: texto, por ejemplo
PROMPTFLOW_API_KEY
: clave de autenticación para el punto de conexión de flujo de avisos del sistema implementado. Nota: solo se admite la autenticación basada en claves.- Tipo de datos: texto
PROMPTFLOW_RESPONSE_TIMEOUT
: define el valor de tiempo de espera en segundos para que responda el punto de conexión del flujo de avisos.- Tipo de datos: entero, debe establecerse en
120
.
- Tipo de datos: entero, debe establecerse en
PROMPTFLOW_REQUEST_FIELD_NAME
: el nombre de campo predeterminado para construir la solicitud de flujo de avisos del sistema. Nota:chat_history
se construye automáticamente en función de la interacción. Si la API espera otros campos obligatorios, deberá cambiar los parámetros de solicitud en la funciónpromptflow_request
.- Tipo de datos: texto, debe establecerse en
query
.
- Tipo de datos: texto, debe establecerse en
PROMPTFLOW_RESPONSE_FIELD_NAME
: el nombre de campo predeterminado para procesar la respuesta de la solicitud de flujo de avisos.- Tipo de datos: texto, debe establecerse en
reply
.
- Tipo de datos: texto, debe establecerse en
PROMPTFLOW_CITATIONS_FIELD_NAME
: el nombre de campo predeterminado para procesar la salida de las citas de la solicitud de flujo de avisos.- Tipo de datos: texto, debe establecerse en
documents
.
- Tipo de datos: texto, debe establecerse en
Conectarse a otros orígenes de datos
Se admiten otros orígenes de datos, entre los que se incluyen:
- Azure Cosmos DB
- Elasticsearch
- Azure SQL Server
- Pinecone
- Índice de Azure Machine Learning
Para obtener más instrucciones sobre cómo habilitar estos orígenes de datos, consulte el repositorio de GitHub.
Actualizando la aplicación web para incluir los cambios más recientes
Nota:
Después del 1 de febrero de 2024, la aplicación web requiere que el comando de inicio de la aplicación se establezca en python3 -m gunicorn app:app
. Al actualizar una aplicación publicada antes del 1 de febrero de 2024, debe agregar manualmente el comando de inicio desde la página Configuración de App Service.
Se recomienda extraer los cambios de la rama main
del código fuente de la aplicación web con frecuencia para asegurarse de que tiene las últimas correcciones de errores, versiones de la API y mejoras. Además, la aplicación web debe sincronizarse cada vez que se retira la versión de API que se usa. Considere la posibilidad de hacer clic en los botones de reloj o estrella en el repositorio de GitHub de la aplicación web para recibir notificaciones sobre los cambios y las actualizaciones del código fuente.
Si no ha personalizado la aplicación web, puede seguir estos pasos para sincronizarla:
Vaya a la aplicación web en Azure Portal.
En el menú de la izquierda, en Implementación, seleccione Centro de implementación.
Seleccione Sincronización en la parte superior del panel y confirme que la aplicación se volverá a implementar.
Si personalizó o cambió el código fuente de la aplicación, debe actualizar manualmente el código fuente de la aplicación y volver a implementarlo:
- Si la aplicación se hospeda en GitHub, inserte los cambios de código en el repositorio y, a continuación, use los pasos de sincronización anteriores.
- Si va a implementar la aplicación manualmente (por ejemplo, mediante la CLI de Azure), siga los pasos de la estrategia de implementación.
Eliminación de la instancia de Cosmos DB
Eliminar su aplicación web no elimina su instancia de Cosmos DB automáticamente. Para eliminar la instancia de Cosmos DB junto con todos los chats almacenados, debe ir al recurso asociado en Azure Portal y eliminarlo. Si elimina el recurso de Cosmos DB pero mantiene seleccionada la opción del historial de chat en las actualizaciones posteriores desde Azure OpenAI Studio, la aplicación notifica al usuario un error de conexión. Sin embargo, el usuario puede seguir usando la aplicación web sin acceso al historial de chat.
Habilitación de la autenticación de Microsoft Entra ID entre servicios
Para habilitar Microsoft Entra ID para la autenticación dentro del servicio de su aplicación web, siga estos pasos.
Habilitar la identidad administrada en su recurso de Azure OpenAI y Azure App Service
Puede habilitar la identidad administrada para el recurso de Azure OpenAI y Azure App Service navegando hasta "Identidad" y activando la identidad administrada asignada por el sistema en Azure Portal para cada recurso.
Nota:
Si está utilizando un modelo de inserción implementado en el mismo recurso utilizado para la inferencia, solo tendrá que habilitar la identidad administrada en un recurso de Azure OpenAI. Si usa un modelo de inserción implementado en un recurso distinto del utilizado para la inferencia, también deberá habilitar la identidad administrada en el recurso de Azure OpenAI utilizado para implementar su modelo de inserción.
Habilitar el control de acceso basado en roles (RBAC) en su recurso de Azure Search (opcional)
Si está usando On Your Data con Azure Search, deberá seguir este paso.
Para permitir que su recurso de Azure OpenAI acceda a su recurso de Azure Search, debe habilitar el control de acceso basado en roles en su recurso de Azure Search. Obtenga más información sobre cómo habilitar los roles de RBAC para sus recursos.
Asignación de roles de RBAC para habilitar la comunicación entre servicios
La siguiente tabla resume las asignaciones de rol de RBAC necesarias para todos los recursos de Azure asociados a su aplicación.
Role | Persona asignada | Resource |
---|---|---|
Search Index Data Reader |
Azure OpenAI (inferencia) | Azure AI Search |
Search Service Contributor |
Azure OpenAI (inferencia) | Azure AI Search |
Cognitive Services OpenAI User |
Aplicación web | Azure OpenAI (inferencia) |
Cognitive Services OpenAI User |
Azure OpenAI (inferencia) | Azure OpenAI (inserciones) |
Para asignar estos roles, siga estas instrucciones para crear las asignaciones de roles necesarias.
Cambios en la configuración de la aplicación
En la configuración de la aplicación webapp, vaya a "Variables de entorno" y realice los siguientes cambios:
- Quite la variable de entorno
AZURE_OPENAI_KEY
, ya que no es necesaria. - Si usa On Your Data con Azure Search y está usando la autenticación de Microsoft Entra ID entre Azure OpenAI y Azure Search, también debería eliminar las variables de entorno
AZURE_SEARCH_KEY
para las claves de acceso al origen de datos.
Si utiliza un modelo de inserción implementado en el mismo recurso que su modelo utilizado para la inferencia, no es necesario realizar ningún otro cambio en la configuración.
Sin embargo, si está usando un modelo de inserción implementado en un recurso diferente, realice los siguientes cambios adicionales en las variables de entorno de su aplicación:
- Establezca la variable
AZURE_OPENAI_EMBEDDING_ENDPOINT
en la ruta de acceso completa de la API de inserción del recurso que esté usando para la inserción, por ejemplo,https://<your Azure OpenAI Service resource name>.openai.azure.com/openai/deployments/<your embedding deployment name>/embeddings
- Elimine la variable
AZURE_OPENAI_EMBEDDING_KEY
para usar la autenticación de Microsoft Entra ID.
Una vez finalizados todos los cambios en las variables de entorno, reinicie la aplicación web para comenzar a usar la autenticación de Microsoft Entra ID entre los servicios de la aplicación web. Transcurrirán unos minutos tras el reinicio para que los cambios en la configuración surtan efecto.