Overview
En esta guía, aprenderá los requisitos mínimos para ejecutar un agente en el Motor de Agentes de MongoDB Atlas. Esta guía abarca los archivos que el Motor de Agentes de Atlas necesita para detectar y ejecutar su agente, el esquema agent.yaml y los marcos de trabajo y proveedores LLM compatibles.
Los agentes no implementan su propio punto final HTTP. El motor de agentes de Atlas importa el agente dentro del mismo proceso que el entorno aislado del agente.
Agente mínimo desplegable
Un agente desplegable mínimo consta de dos archivos:
my_agent/main.py: define el objetoAppy el grafo.agent.yaml: apunta al objetoAppdefinido enmy_agent/main.py.
El siguiente ejemplo muestra un archivo main.py mínimo que define un objeto App llamado my-agent y construye un gráfico de agentes:
from agent_engine_sdk_langgraph import App from langgraph.graph import StateGraph, MessagesState from langgraph.prebuilt import ToolNode from langchain_openai import ChatOpenAI app = App(app_name="my-agent") def lookup(query: str) -> str: """Search the knowledge base.""" return f"result for {query}" def build_agent(): llm = app.llm(ChatOpenAI(model="gpt-4o-mini")) tools = app.get_tools() def call_model(state: MessagesState): return {"messages": [llm.invoke(state["messages"])]} graph = StateGraph(MessagesState) graph.add_node("agent", call_model) graph.add_node("tools", ToolNode(tools)) graph.set_entry_point("agent") graph.add_edge("tools", "agent") return graph.compile(checkpointer=app.checkpointer()) app.run()
El siguiente ejemplo muestra un archivo agent.yaml mínimo:
entrypoint: my_agent.main:app
En el archivo main.py, debe ejecutar los siguientes componentes:
Defina un objeto
Appa nivel de módulo, generalmente llamadoapp.Registra un punto de entrada a la aplicación con la función
@app.entrypoint.Registra las herramientas con la función
@app.tool(...).Llama a la función
app.run()que se encuentra al final del módulo.
En el archivo agent.yaml, debe establecer la clave YAML entrypoint al objeto App utilizando el formato <module.path>:<attribute>.
Directrices para agentes
Siga estas directrices para garantizar que su agente funcione correctamente con las funciones de la plataforma, como el registro de auditoría, la aplicación de políticas y la suspensión o reanudación de las ejecuciones del agente:
Enrutar las llamadas a la herramienta y a LLM a través de las funciones
app.tool(...)yapp.llm(...).El motor del agente Atlas utiliza estos contenedores para el registro de auditoría, la aplicación de políticas y la reproducción de herramientas y llamadas LLM al reanudar una ejecución suspendida. Las llamadas realizadas fuera de estos contenedores no son auditadas por el motor del agente Atlas y no se reproducen correctamente tras reanudar la ejecución.
Mantén el estado de tu gráfico serializable en formato JSON/BSON.
Los entornos aislados de agentes son efímeros, por lo que el motor de agentes de Atlas guarda los estados de los puntos de control en MongoDB entre las acciones de suspensión y reanudación. Para que el punto de control se complete correctamente, cada valor del estado del gráfico debe ser serializable a JSON o BSON, como por ejemplo, tipos de datos primitivos, listas, diccionarios,
datetime,Enumy subclases de LangChainBaseMessage. No almacene expresiones lambda, cierres, identificadores de archivos, conexiones a bases de datos ni clases personalizadas en el estado del gráfico sin compatibilidad con la serialización.Llamar al
app.llm(...)Funciona únicamente mientras su punto de entrada se encuentre en la pila de llamadas.Cuando se llama a
app.llm(...)desde el código de nivel superior del módulo, el cuerpo de una herramienta o cualquier otra función que no se invoque en el punto de entrada, el motor del agente de Atlas genera un error que identifica el archivo y la línea con la llamada no válida. Para obtener más información, consulte Ciclo de vida de la ejecución.
Ciclo de vida de ejecución
El motor de agentes de Atlas carga y ejecuta el código de su agente en puntos definidos del ciclo de vida de los siguientes procesos:
Entorno de pruebas para agentes, que ejecuta el código de tu agente y construye tu gráfico.
Tool Sandbox, que ejecuta los cuerpos de las herramientas remotas en un proceso separado del entorno aislado del agente.
Nota
Este ciclo de ejecución es el mismo en los SDK de Python y TypeScript.
Esta sección describe cuándo se ejecutan las distintas partes del código de su agente en cada proceso y utiliza los siguientes términos:
El código de nivel superior del módulo es el código que se encuentra en los archivos fuente de su agente y que se ejecuta en el momento de la importación, fuera del cuerpo de cualquier función.
El punto de entrada es la función que decoras con
@app.entrypoint.Una herramienta local se ejecuta únicamente dentro del proceso del entorno aislado del agente. Por defecto, cualquier herramienta que registre con el decorador
@app.tool()es una herramienta local.Una herramienta remota es una herramienta que se asigna al entorno aislado de herramientas incluyéndola en el campo
sandboxes.tool.toolsdel archivoagent.yaml. El entorno aislado del agente interpreta las herramientas remotas, pero los cuerpos de las herramientas remotas se ejecutan dentro del entorno aislado de herramientas.
Startup
Tanto en el entorno aislado del agente como en el entorno aislado de la herramienta, el motor del agente de Atlas realiza las siguientes acciones al iniciarse:
Carga los archivos fuente de tu agente.
Ejecuta el código de nivel superior de tu módulo.
La plataforma no realiza las siguientes acciones al iniciarse:
Ejecuta tu punto de entrada.
Ejecuta los cuerpos de tus herramientas. El motor del agente Atlas interpreta las definiciones de las herramientas para registrar sus firmas, pero no las ejecuta.
El código de nivel superior del módulo puede acceder a secretos de todo el proceso, como MONGODB_URI y las credenciales OAuth de MCP, ya que estos valores están disponibles durante toda la vida útil del proceso. El motor del agente Atlas también establece los secretos que se declaran para un entorno aislado, incluidas las claves de API de LLM, cuando se inicia dicho entorno. Como resultado, el código de nivel superior del módulo en un entorno aislado puede acceder a los secretos de ese entorno.
Invocación del entorno aislado del agente
En el entorno aislado del agente, el motor del agente Atlas realiza las siguientes acciones durante una invocación:
Ejecuta tu punto de entrada una sola vez.
Ejecuta los cuerpos de las herramientas locales en el propio proceso del entorno aislado del agente.
La plataforma no realiza las siguientes acciones durante la invocación de un entorno aislado de agente:
- Ejecuta los cuerpos de las herramientas remotas. El entorno aislado del agente los interpreta y luego envía la llamada al entorno aislado de la herramienta.
Invocación del entorno aislado de herramientas
En el entorno aislado de la herramienta, el motor del agente Atlas realiza las siguientes acciones durante una invocación:
Carga tu punto de entrada de forma diferida, exactamente una vez durante la vida útil del entorno aislado, activada por la primera llamada a
invoke_llm. Esta carga solo descubre tus registros deapp.llm(...).Interpreta los cuerpos de las herramientas remotas y, a continuación, las ejecuta bajo demanda cuando el motor de orquestación dirige una llamada a la herramienta al entorno aislado.
El motor del agente Atlas no realiza las siguientes acciones durante la invocación de un entorno aislado de herramientas:
Ejecuta tu gráfico.
Ejecutar cuerpos de herramientas locales.
El motor del agente Atlas entrega los secretos que usted declara en el campo sandboxes.tool.secrets como variables de entorno en el entorno aislado de la herramienta. Cada cuerpo de herramienta remota que se ejecuta en el entorno aislado puede leer estas variables de entorno. Para obtener más información sobre cómo los entornos aislados comparten secretos entre herramientas, consulte Limitaciones del motor del agente Atlas de MongoDB.
Resumen del ciclo de vida
La siguiente tabla resume cuándo se ejecuta cada parte de su código en cada proceso y fase de ejecución:
Fase | Proceso | Código de nivel superior | Punto de entrada | Cuerpo de la herramienta remota | Cuerpo de herramientas local |
|---|---|---|---|---|---|
Startup | Agent Sandbox | Ejecutado | No ejecutado | Solo interpretado | Solo interpretado |
Startup | Entorno de pruebas de herramientas | Ejecutado | No ejecutado | Solo interpretado | Solo interpretado |
Por invocación | Agent Sandbox | No ejecutado | Ejecutado una vez | Interpretado, enviado a Tool Sandbox | Ejecutado |
Primera llamada | Entorno de pruebas de herramientas | No ejecutado | Se ejecuta una vez para registrar las llamadas | No ejecutado | No ejecutado |
Llamada por herramienta | Entorno de pruebas de herramientas | No ejecutado | No ejecutado | Ejecutado bajo demanda | No ejecutado |
Esquema YAML del agente
El archivo agent.yaml configura cómo el motor de agentes de Atlas descubre y ejecuta su agente. Admite dos formatos: un manifiesto de agente único para repositorios que contienen un solo agente y un manifiesto de monorepo para repositorios que contienen varios agentes.
Manifiesto de agente único
La siguiente tabla describe los campos disponibles para un archivo agent.yaml de agente único. La columna Required indica si un campo es obligatorio para un archivo agent.yaml mínimo.
Campo | Tipo | Requerido | Descripción y restricciones |
|---|---|---|---|
| string | Sí | Ruta del módulo y atributo en formato |
| string | no | Nombre del agente. Debe contener únicamente caracteres alfanuméricos en minúscula y guiones. No se permiten guiones al principio ni al final. |
| string | no | Descripción del agente. Hasta 500 caracteres. |
| string | no | Resumen del propósito del agente. Se muestra en la interfaz de usuario. |
| list[string] | no | Etiquetas que describen las funciones del agente. Se muestran en la interfaz de usuario. |
| bool | no | Cuando |
| bool | no | Cuando |
| bool | no | Cuando |
| bool | no | Cuando |
| bool | no | Cuando |
| string | cuando | Protocolo de transporte para una conexión remota a un servidor MCP. Valor aceptado: |
| string | cuando | URL del punto final del servidor MCP remoto. |
| mapa[cadena, cadena] | no | Encabezados HTTP estáticos enviados con cada solicitud al servidor MCP. |
| string | Sí | Tipo de autenticación. Los valores aceptados son |
| string | cuando | Nombre de la variable de entorno que contiene el token de portador. La variable debe estar configurada en su archivo |
| string | cuando | Ámbitos OAuth separados por espacios que se solicitarán durante el flujo de autorización. |
| string | no | Nombre legible para el cliente OAuth que se muestra en la pantalla de consentimiento. |
| list[string] | no | Lista de herramientas MCP remotas permitidas para el agente. Al configurarla, la plataforma registra solo las herramientas indicadas e ignora las demás que devuelve el servidor. Si se omite, la plataforma muestra todas las herramientas que devuelve el servidor. Utilice este campo para limitar la superficie de herramientas a las que su agente requiere. |
| Int | no | Tiempo de espera de solicitud en segundos para cada llamada a la herramienta MCP. El valor predeterminado es |
| Int | no | Recuento estático de pods para el despliegue. El motor de agentes de Atlas aplica este valor por separado al entorno aislado del agente y al entorno aislado de la herramienta. Cada sesión reserva un entorno aislado del agente y, si está configurado, un entorno aislado de la herramienta; por lo tanto, este valor representa el número de sesiones concurrentes que puede atender el despliegue. Admite un valor entre 1 y 512. Si se omite, se utiliza 4 por defecto. |
| Int | no | Indica cuánto tiempo, en segundos, conserva una sesión inactiva su espacio de trabajo reservado antes de que el motor de agentes de Atlas lo recupere para otras sesiones. Admite valores entre 1 y 86400. Si se omite, el valor predeterminado es 600. |
| Int | no | Indica cuánto tiempo, en segundos, una sesión inactiva conserva su espacio reservado para herramientas antes de que el motor del agente Atlas lo recupere. Acepta un valor entre 1 y 86400. El valor predeterminado es |
| mapeo | Sí | Configura los entornos aislados (sandboxes) con nombre que ejecutan tu agente y sus herramientas. El motor del agente Atlas admite dos entornos aislados con nombre: |
| mapeo | Sí | Configuración del entorno aislado del agente, el entorno aislado por hardware que ejecuta el código de su agente. |
| list[string] | no | Lista de nombres secretos, o patrones glob que coinciden con los nombres secretos, disponibles para el entorno aislado del agente. Puede usar |
| list[string] | no | Lista de nombres de herramientas, o patrones glob que coincidan con los nombres de las herramientas, para ejecutar en el entorno aislado del agente. Puede usar |
| mapeo | no | Política de red, incluidas las reglas de salida, para el entorno aislado del agente. Para obtener más información, consulte Administrar políticas de salida de red. |
| mapeo | no | Configuración del entorno aislado de herramientas, el entorno aislado de hardware que ejecuta los cuerpos de las herramientas remotas. |
| list[string] | no | Lista de nombres secretos, o patrones glob que coinciden con los nombres secretos, disponibles en el entorno aislado de la herramienta. Puede usar |
| list[string] | no | Lista de nombres de herramientas, o patrones glob que coincidan con los nombres de las herramientas, para ejecutar en el entorno aislado de la herramienta. Puede usar |
| lista[mapeo] | no | Declara registros de paquetes privados para compilaciones gestionadas. Cada entrada asigna un nombre de índice de registro a un secreto de Atlas Agent Engine que contiene su credencial. Atlas Agent Engine inyecta la credencial solo durante la compilación y no la expone a los pods en ejecución. Las URL de los registros se encuentran en las herramientas de su proyecto ( |
| string | Sí | Identificador único para la entrada. Para las entradas de PyPI, debe coincidir con un nombre |
| string | Sí | Tipo de repositorio. Los valores aceptados son |
| string | Sí | Nombre del secreto de Atlas Agent Engine que contiene la credencial. Debe coincidir con |
| string | no | Ámbito secreto. Los valores aceptados son |
| string | no | Método de autenticación. Los valores aceptados son |
| string | no | Nombre de usuario para la autenticación del registro. Obligatorio cuando |
| string | no | Ámbito de npm que se asigna a este registro, como |
artifact_repositories Las credenciales se resuelven únicamente durante la compilación. Para obtener información sobre cómo funcionan los repositorios de artefactos privados en las compilaciones en la nube y el desarrollo local, consulte la sección "Crear la imagen del agente" y "Ejecutar agentes localmente".
Cada sesión reserva sus propios entornos aislados de agente y herramientas durante su vida útil, y el motor de agentes de Atlas restablece un entorno aislado antes de asignarlo a una nueva sesión. Como resultado, los artefactos que una sesión escribe en un entorno aislado no son visibles para las sesiones posteriores.
Atlas Agent Engine guarda instantáneas de los valores de scaling durante la compilación, por lo que los cambios surten efecto en la siguiente compilación e implementación. Un cambio en la configuración predeterminada de la plataforma no modifica el tamaño de un espacio de trabajo ya implementado. El espacio de trabajo conserva el número de entornos aislados por hardware de su compilación más reciente hasta que se vuelva a compilar e implementar. Los valores de tiempo de vida (TTL) en estado inactivo se aplican a todo el proyecto. Cuando varios agentes de un mismo proyecto establecen valores diferentes, el proyecto aplica los valores del agente implementado más recientemente.
Nota
Debes configurar los ajustes de desarrollo local en un archivo dev.yaml independiente, ubicado en el mismo directorio que el archivo agent.yaml, no en el archivo agent.yaml. Para obtener más información, consulta Configurar los ajustes de desarrollo local.
El siguiente ejemplo muestra un archivo agent.yaml con anulaciones de puertos de servicio, indicadores de características, restricciones de acceso secretas y un repositorio de artefactos privado:
name: my-agent entrypoint: my_agent.main:app features: guardrails: true scaling: replicas: 4 agent_idle_ttl_seconds: 900 tool_idle_ttl_seconds: 300 sandboxes: agent: secrets: ["*"] tools: [] tool: secrets: - SEARCH_API_KEY - ANTHROPIC_API_KEY tools: - my_search_tool - invoke_llm artifact_repositories: - name: corps-pypi type: pypi secret: ARTIFACT_REPO_CORPS_PYPI_TOKEN username: aws scope: project
Manifiesto de monorepo
Si su repositorio contiene varios agentes, defínalos en un único archivo agent.yaml utilizando una lista agents: de nivel superior. El motor de agentes de Atlas detecta esta lista y trata el archivo como un manifiesto de monorepo en lugar de una configuración de agente único. El siguiente archivo agent.yaml es un ejemplo de un manifiesto de monorepo con varios agentes:
agents: - name: chat path: agents/chat - name: research path: agents/research
Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
| string | Sí | Nombre del agente. Debe contener únicamente caracteres alfanuméricos en minúscula y guiones. No se permiten guiones al principio ni al final. Debe ser único en la lista. |
| string | Sí | Ruta al subdirectorio del agente, relativa a la raíz del repositorio. La ruta no puede hacer referencia a ubicaciones fuera del repositorio. |
Cada subdirectorio de agente debe contener su propio archivo agent.yaml de agente único.
Requisitos de .env
Debe configurar la variable de entorno MONGODB_URI en su archivo .env para implementar su agente correctamente, si services.mongodb.local está configurado como false en su archivo dev.yaml.
Su agente también requiere una clave API de LLM en el archivo .env para procesar las solicitudes en tiempo de ejecución. La plataforma no valida ni requiere credenciales LLM específicas, pero el agente fallará en tiempo de ejecución sin ellas. Utilice la sintaxis <PROVIDER>_API_KEY para configurar la variable de entorno de su proveedor LLM.
Marcos de referencia y proveedores de LLM
Esta sección describe los marcos de trabajo y los proveedores LLM que puede utilizar con Atlas Agent Engine.
Frameworks
El motor de agentes Atlas admite LangGraph y LangChain a través del paquete agent-engine-sdk-langgraph. El adaptador del marco de trabajo gestiona los siguientes puntos de integración:
interrupt()para pausar la ejecución del agente para su revisión humana antes de que continúeMongoDBSaverpara guardar el estado del gráfico del agente en MongoDB para que pueda restaurarse cuando se reanude una ejecución suspendida.LangChainInstrumentorpara registrar las llamadas a LLM y a las herramientas durante la ejecución para depuración y monitorización.
Proveedores de LLM
Puedes usar cualquier proveedor LLM con tu agente. Para usar un modelo, crea una LangChain BaseChatModel para el proveedor y pásala al método app.llm(). El motor del agente Atlas enruta esa llamada a través del motor de orquestación.
La siguiente tabla muestra ejemplos comunes de proveedores con su clave de entorno y clase LangChain:
Proveedor | Clave del entorno | Clase LangChain |
|---|---|---|
OpenAI |
|
|
Anthropic |
|
|
Gemini |
|
|
Cerebras |
|
|
Los siguientes ejemplos de código muestran cómo configurar cada proveedor para el método app.llm():
# OpenAI from langchain_openai import ChatOpenAI llm = app.llm(ChatOpenAI(model="gpt-4o-mini")) # Anthropic from langchain_anthropic import ChatAnthropic llm = app.llm(ChatAnthropic(model="claude-sonnet-4-5")) # Gemini from langchain_google_genai import ChatGoogleGenerativeAI llm = app.llm(ChatGoogleGenerativeAI(model="gemini-2.5-flash-lite")) # Cerebras from langchain_cerebras import ChatCerebras llm = app.llm(ChatCerebras(model="qwen-3-235b-a22b-instruct-2507"))
Próximos pasos
Para aprender a autenticar e invocar un agente desplegado, consulte la guía "Invocar un agente".