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.
En este tutorial se muestra cómo agregar funcionalidad de agente a una aplicación CRUD de FastAPI controlada por datos existente. Para ello, se usan dos enfoques diferentes: LangGraph y Foundry Agent Service.
Si la aplicación web ya tiene características útiles, como compras, reservas de hoteles o administración de datos, es relativamente sencillo agregar funcionalidad de agente a la aplicación web ajustando esas funcionalidades en un complemento (para LangGraph) o como punto de conexión de OpenAPI (para el servicio de agente de Foundry). En este tutorial, empezará con una sencilla aplicación de lista de tareas pendientes. Al final, podrá crear, actualizar y administrar tareas con un agente en una aplicación de App Service.
LangGraph y Foundry Agent Service le permiten crear aplicaciones web agente con funcionalidades controladas por IA. LangGraph es similar a Microsoft Agent Framework y es un SDK. En la tabla siguiente se muestran algunas de las consideraciones y desventajas:
| Consideración | LangGraph o Microsoft Agent Framework | Servicio de agente de fundición |
|---|---|---|
| Performance | Rápido (se ejecuta localmente) | Más lento (administrado, servicio remoto) |
| Desarrollo | Código completo, control máximo | Poco código, integración rápida |
| Testing | Pruebas manuales o unitarias en el código | Área de juegos integrada para pruebas rápidas |
| Escalabilidad | Administrado por aplicaciones | Administrado por Azure, escalado automático |
| Barreras de protección de seguridad | Implementación personalizada necesaria | Seguridad y moderación de contenido integrada |
| identidad | Implementación personalizada necesaria | ID de agente integrado y autenticación |
| Enterprise | Integración personalizada necesaria | Implementación integrada de Microsoft 365/Teams y llamadas a herramientas integradas de Microsoft 365. |
En este tutorial, aprenderá a:
- Convierta la funcionalidad de la aplicación existente en un complemento para LangGraph.
- Agregue el complemento a un agente de LangGraph y úselo en una aplicación web.
- Convierta la funcionalidad de la aplicación existente en un punto de conexión de OpenAPI para foundry Agent Service.
- Contacte con un agente de Foundry en una aplicación web.
- Asigne los permisos necesarios para la conectividad de identidad administrada.
Prerrequisitos
- Una cuenta de Azure con una suscripción activa: cree una cuenta de forma gratuita.
- Cuenta de GitHub para usar GitHub Codespaces: obtenga más información sobre GitHub Codespaces.
Apertura del ejemplo con Codespaces
La manera más fácil de empezar es mediante GitHub Codespaces, que proporciona un entorno de desarrollo completo con todas las herramientas necesarias preinstaladas.
Vaya al repositorio de GitHub en https://github.com/Azure-Samples/app-service-agentic-langgraph-foundry-python.
Seleccione el botón Código, seleccione la pestaña Codespaces y seleccione Crear Codespaces en main.
Espere unos instantes a que se inicialice Codespace. Cuando esté listo, verá un entorno de desarrollo totalmente configurado en el explorador.
Ejecución de la aplicación de forma local:
python3 -m venv venv source venv/bin/activate pip install -r requirements.txt uvicorn src.app:app --host 0.0.0.0 --port 3000Cuando vea La aplicación que se ejecuta en el puerto 3000 está disponible, seleccione Abrir en el explorador y agregue algunas tareas.
Los agentes no están completamente configurados, por lo que aún no funcionan. Los configurará más adelante.
Revisión del código del agente
Ambos enfoques usan el mismo patrón de implementación, donde el agente se inicializa al iniciar la aplicación y responde a los mensajes de usuario mediante solicitudes POST.
LangGraphTaskAgent se inicializa en el constructor en src/agents/langgraph_task_agent.py. El código de inicialización hace lo siguiente:
- Configura el cliente AzureChatOpenAI mediante variables de entorno.
- Crea el agente ReAct precompilado con memoria y un conjunto de herramientas CRUD para la administración de tareas (consulte inicio rápido de LangGraph).
- Selecciona un hilo de conversación gestionado por el servidor para la muestra autenticada.
self.memory = InMemorySaver()
# App Service authentication protects this sample, which intentionally
# keeps one server-managed conversation thread per worker process.
self.thread_id = "authenticated-conversation"
try:
endpoint = os.getenv("AZURE_OPENAI_ENDPOINT")
deployment_name = os.getenv("AZURE_OPENAI_DEPLOYMENT_NAME")
if not endpoint or not deployment_name:
print("Azure OpenAI configuration missing for LangGraph agent")
return
# Initialize Azure OpenAI client
credential = DefaultAzureCredential()
azure_ad_token_provider = get_bearer_token_provider(
credential, "https://cognitiveservices.azure.com/.default"
)
self.llm = AzureChatOpenAI(
azure_endpoint=endpoint,
azure_deployment=deployment_name,
azure_ad_token_provider=azure_ad_token_provider,
api_version="2024-10-21"
)
# Define tools
tools = [
self._create_task_tool(),
self._get_tasks_tool(),
self._get_task_tool(),
self._update_task_tool(),
self._delete_task_tool()
]
# Create the agent
self.agent = create_react_agent(self.llm, tools, checkpointer=self.memory)
Al procesar mensajes de usuario, el agente invoca ainvoke() con el ID del hilo gestionado por el servidor:
config = {"configurable": {"thread_id": self.thread_id}}
# Process the message
result = await self.agent.ainvoke(
{"messages": [("user", message)]},
config=config
)
La solicitud del navegador contiene solo el mensaje. No puede seleccionar otro hilo proporcionando un identificador de sesión o conversación.
Implementación de la aplicación de ejemplo
El repositorio de ejemplo contiene una plantilla de CLI de Azure Developer (AZD), que crea una aplicación de Servicio de Aplicaciones y despliega tu aplicación de ejemplo. La identidad gestionada asignada por el sistema de App Service se conserva para las llamadas salientes a Azure AI. Una identidad administrada asignada por el usuario independiente y una credencial de identidad federada permiten a la autenticación de App Service actuar como la aplicación de Microsoft Entra generada sin un secreto de cliente.
En el terminal, inicia sesión en Azure usando la CLI de Azure Developer:
azd auth loginSiga las instrucciones para completar el proceso de autenticación.
Despliega la aplicación de Azure App Service usando la plantilla AZD:
azd upCuando se le solicite, proporcione las siguientes respuestas:
Pregunta Respuesta Escribir un nuevo nombre de entorno: Escriba un nombre único. Seleccione una suscripción de Azure para usar: Seleccione la suscripción. Elija un grupo de recursos para usar: Seleccione Crear un grupo de recursos nuevo. Seleccione una ubicación para crear el grupo de recursos en: Seleccione Centro de Suecia. Escriba un nombre para el nuevo grupo de recursos: Escriba Entrar. En la salida de AZD, busque la dirección URL de la aplicación y vaya a ella en el explorador. También copia el valor de audiencia de identidad gestionada de Foundry OpenAPI para usarlo más adelante. El resultado tiene este aspecto:
Deploying services (azd deploy) (✓) Done: Deploying service web - Endpoint: <URL> Foundry OpenAPI managed identity audience: api://<generated-client-id>Cuando Microsoft te lo pida, inicia sesión usando una cuenta en el tenant de despliegue y verifica que la lista de tareas se carga.
En el mismo navegador autenticado, añade
/openapi.jsonal endpoint de App Service. Copia o guarda el esquema OpenAPI generado para más adelante.Nota:
La autenticación por App Service devuelve una redirección HTTP 302 para solicitudes de navegador no autenticadas. Este ejemplo contiene tanto una interfaz de navegador como APIs, por lo que la redirección proporciona una experiencia de inicio de sesión utilizable. Las aplicaciones solo API suelen usar HTTP 401 en su lugar.
Creación y configuración del recurso de Microsoft Foundry
En el portal de Foundry, crea un proyecto.
Implemente un modelo de su elección (consulte Inicio rápido de Microsoft Foundry: Creación de recursos).
En la parte superior del área de juegos de modelos, copie el nombre del modelo.
En la página principal, copia el punto de conexión de Azure OpenAI para usarlo más tarde.
Asignar los permisos necesarios
En el portal de Foundry, selecciona Gestionar en el menú superior.
En Detalles del proyecto, selecciona el recurso primario de tu proyecto y luego selecciona Abrir en Azure Portal.
Desde el portal de Azure, puedes asignar acceso basado en roles para el recurso.
Agrega el siguiente rol para la identidad administrada de la aplicación de App Service y para el usuario que uses con
az login:Recurso de destino Rol necesario Necesario para Fundición Usuario de OpenAI de Cognitive Services El servicio de finalización del chat en Microsoft Agent Framework. Para obtener instrucciones, consulte Asignación de roles de Azure mediante Azure Portal.
Configuración de variables de conexión en la aplicación de ejemplo
Abra .env. Con los valores que copió anteriormente desde el portal de Foundry, configure las siguientes variables:
Variable Description AZURE_OPENAI_ENDPOINTAzure OpenAI endpoint (copiado de la página principal del portal Foundry). AZURE_OPENAI_DEPLOYMENT_NAMENombre del modelo en la implementación (copiado del entorno de pruebas de modelos en el nuevo portal de Foundry). Nota:
Para simplificar el tutorial, usará estas variables en .env en lugar de sobrescribirlas con la configuración de la aplicación en App Service.
Nota:
Para simplificar el tutorial, usará estas variables en .env en lugar de sobrescribirlas con la configuración de la aplicación en App Service.
Los valores en .env configuran la conexión saliente de la app a Foundry.
AZURE_AI_FOUNDRY_ACCOUNT_CLIENT_IDconfigura la conexión separada de entrada Foundry-to-App-Service OpenAPI y se almacena en el entorno AZD.Inicie sesión en Azure con la CLI de Azure:
az loginEsto permite que la biblioteca cliente de Identidad de Azure en el código de ejemplo reciba un token de autenticación para el usuario que ha iniciado sesión. Recuerde que ha agregado el rol necesario para este usuario anteriormente.
Ejecución de la aplicación de forma local:
source venv/bin/activate uvicorn src.app:app --host 0.0.0.0 --port 3000Cuando vea que la aplicación que se ejecuta en el puerto 3000 está disponible, seleccione Abrir en el explorador.
Valida ambos pivotes por separado:
- LangGraph:Selecciona LangGraph Agent y pídele al agente que cree una tarea. LangGraph invoca la herramienta de tareas en proceso.
-
Servicio Foundry Agent: Selecciona Foundry Agent y pídele al agente que cree una tarea. El agente remoto de Foundry invoca el punto de conexión
/api/tasksimplementado y protegido con identidad gestionada.
La tarea que crea el agente de Foundry aparece en la instancia de App Service desplegada, no en la base de datos local de SQLite. La herramienta OpenAPI de Foundry siempre utiliza la URL del servidor incrustada en el esquema OpenAPI.
De nuevo en el codespace de GitHub, implemente los cambios de la aplicación.
azd upVuelve a ir a la aplicación desplegada y prueba ambos agentes de chat. El navegador solo envía mensajes de texto; no envía un ID de sesión ni de conversación para ninguno de los dos agentes.
Preguntas más frecuentes
¿Cómo puedo añadir generación aumentada por recuperación (RAG) al agente de Foundry?
Esta guía se aplica a la ruta Foundry Agent Service de este tutorial. No cambia las implementaciones de LangGraph, Kernel semántico o Microsoft Agent Framework que se muestran en la otra pestaña.
Crea o selecciona una base de conocimientos de Foundry IQ y luego conecta esa base con el agente de Foundry Agent Service. La conexión se expone al agente como una herramienta de conocimiento gestionado de MCP.
El código del Servicio de Aplicaciones sigue invocando al mismo agente por nombre a través de su cliente existente de Foundry y agent_reference. La aplicación web no necesita una integración directa con Búsqueda de Azure AI ni un cliente MCP propio. Si la interfaz muestra las fuentes, procesa las anotaciones de citas devueltas por el agente.
Limpieza de recursos
Cuando haya terminado con la aplicación, puede eliminar los recursos de App Service para evitar incurrir en costos adicionales:
azd down --purge
El gancho AZD postdown también elimina la aplicación Microsoft Entra a nivel de inquilino creada para la autenticación de servicios de aplicaciones.
Luego, elimina el recurso de Foundry si lo creaste por separado.