Communitygithub.com

Agentes Alojados de Azure AI (Python)

Construye agentes Foundry basados en contenedores con el SDK de Azure AI Projects (ImageBasedHostedAgentDefinition). Úsalo al crear agentes alojados con imágenes de contenedor personalizadas en Azure AI Foundry.

¿Qué es Agentes Alojados de Azure AI (Python)?

Esta habilidad permite a los desarrolladores construir y gestionar agentes alojados basados en contenedores en Azure AI Foundry utilizando el SDK de Azure AI Projects. Proporciona una guía completa para crear agentes con `ImageBasedHostedAgentDefinition`, incluyendo la configuración de protocolos, asignación de recursos, configuración de herramientas y gestión de variables de entorno. Es compatible con clientes de Python síncronos y asíncronos, y cubre todo el flujo de trabajo: desde la creación de agentes hasta la eliminación de versiones. La habilidad es útil para desarrolladores que necesitan desplegar agentes de IA personalizados con requisitos específicos de contenedores, como herramientas de intérprete de código, búsqueda de archivos o capacidades MCP, todo ello en el ecosistema de Azure.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/SamuelChien/mega-skills-collection/tree/HEAD/agents-v2-py

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

¿Qué hace Agentes Alojados de Azure AI (Python)?

Construye agentes alojados basados en contenedores usando ImageBasedHostedAgentDefinition del SDK de Azure AI Projects.

Instalación

pip install azure-ai-projects>=2.0.0b3 azure-identity

Versión mínima del SDK: 2.0.0b3 o posterior para soporte de agente alojado.

Variables de Entorno

AZURE_AI_PROJECT_ENDPOINT=https://<resource>.services.ai.azure.com/api/projects/<project>

Prerrequisitos

Antes de crear agentes alojados:

  1. Imagen de Contenedor - Construir y subir a Azure Container Registry (ACR)
  2. Permisos de extracción de ACR - Conceder el rol AcrPull a la identidad gestionada de tu proyecto en el ACR
  3. Capability Host - Host de capacidad a nivel de cuenta con enablePublicHostingEnvironment=true
  4. Versión del SDK - Asegurar azure-ai-projects>=2.0.0b3

Autenticación

Usar siempre DefaultAzureCredential:

from azure.identity import DefaultAzureCredential
from azure.ai.projects import AIProjectClient

credential = DefaultAzureCredential()
client = AIProjectClient(
    endpoint=os.environ["AZURE_AI_PROJECT_ENDPOINT"],
    credential=credential
)

Flujo de Trabajo Principal

1. Importaciones

import os
from azure.identity import DefaultAzureCredential
from azure.ai.projects import AIProjectClient
from azure.ai.projects.models import (
    ImageBasedHostedAgentDefinition,
    ProtocolVersionRecord,
    AgentProtocol,
)

2. Crear Agente Alojado

client = AIProjectClient(
    endpoint=os.environ["AZURE_AI_PROJECT_ENDPOINT"],
    credential=DefaultAzureCredential()
)

agent = client.agents.create_version(
    agent_name="my-hosted-agent",
    definition=ImageBasedHostedAgentDefinition(
        container_protocol_versions=[
            ProtocolVersionRecord(protocol=AgentProtocol.RESPONSES, version="v1")
        ],
        cpu="1",
        memory="2Gi",
        image="myregistry.azurecr.io/my-agent:latest",
        tools=[{"type": "code_interpreter"}],
        environment_variables={
            "AZURE_AI_PROJECT_ENDPOINT": os.environ["AZURE_AI_PROJECT_ENDPOINT"],
            "MODEL_NAME": "gpt-4o-mini"
        }
    )
)

print(f"Agente creado: {agent.name} (versión: {agent.version})")

3. Listar Versiones del Agente

versions = client.agents.list_versions(agent_name="my-hosted-agent")
for version in versions:
    print(f"Versión: {version.version}, Estado: {version.state}")

4. Eliminar Versión del Agente

client.agents.delete_version(
    agent_name="my-hosted-agent",
    version=agent.version
)

Parámetros de ImageBasedHostedAgentDefinition

ParámetroTipoRequeridoDescripción
container_protocol_versionslist[ProtocolVersionRecord]SíVersiones de protocolo que soporta el agente
imagestrSíRuta completa de la imagen del contenedor (registro/imagen:tag)
cpustrNoAsignación de CPU (ej., "1", "2")
memorystrNoAsignación de memoria (ej., "2Gi", "4Gi")
toolslist[dict]NoHerramientas disponibles para el agente
environment_variablesdict[str, str]NoVariables de entorno para el contenedor

Versiones de Protocolo

El parámetro container_protocol_versions especifica qué protocolos soporta tu agente:

from azure.ai.projects.models import ProtocolVersionRecord, AgentProtocol

# Protocolo RESPONSES - respuestas estándar del agente
container_protocol_versions=[
    ProtocolVersionRecord(protocol=AgentProtocol.RESPONSES, version="v1")
]

Protocolos Disponibles:

ProtocoloDescripción
AgentProtocol.RESPONSESProtocolo de respuesta estándar para interacciones del agente

Asignación de Recursos

Especifica CPU y memoria para tu contenedor:

definition=ImageBasedHostedAgentDefinition(
    container_protocol_versions=[...],
    image="myregistry.azurecr.io/my-agent:latest",
    cpu="2",      # 2 núcleos de CPU
    memory="4Gi"  # 4 GiB de memoria
)

Límites de Recursos:

RecursoMínMáxPredeterminado
CPU0.541
Memoria1Gi8Gi2Gi

Configuración de Herramientas

Añade herramientas a tu agente alojado:

Intérprete de Código

tools=[{"type": "code_interpreter"}]

Herramientas MCP

tools=[
    {"type": "code_interpreter"},
    {
        "type": "mcp",
        "server_label": "my-mcp-server",
        "server_url": "https://my-mcp-server.ejemplo.com"
    }
]

Múltiples Herramientas

tools=[
    {"type": "code_interpreter"},
    {"type": "file_search"},
    {
        "type": "mcp",
        "server_label": "custom-tool",
        "server_url": "https://custom-tool.ejemplo.com"
    }
]

Variables de Entorno

Pasa configuración a tu contenedor:

environment_variables={
    "AZURE_AI_PROJECT_ENDPOINT": os.environ["AZURE_AI_PROJECT_ENDPOINT"],
    "MODEL_NAME": "gpt-4o-mini",
    "LOG_LEVEL": "INFO",
    "CUSTOM_CONFIG": "value"
}

Mejores Prácticas: Nunca codificar secretos. Usa variables de entorno o Azure Key Vault.

Ejemplo Completo

import os
from azure.identity import DefaultAzureCredential
from azure.ai.projects import AIProjectClient
from azure.ai.projects.models import (
    ImageBasedHostedAgentDefinition,
    ProtocolVersionRecord,
    AgentProtocol,
)

def create_hosted_agent():
    """Crea un agente alojado con imagen de contenedor personalizada."""
    
    client = AIProjectClient(
        endpoint=os.environ["AZURE_AI_PROJECT_ENDPOINT"],
        credential=DefaultAzureCredential()
    )
    
    agent = client.agents.create_version(
        agent_name="data-processor-agent",
        definition=ImageBasedHostedAgentDefinition(
            container_protocol_versions=[
                ProtocolVersionRecord(
                    protocol=AgentProtocol.RESPONSES,
                    version="v1"
                )
            ],
            image="myregistry.azurecr.io/data-processor:v1.0",
            cpu="2",
            memory="4Gi",
            tools=[
                {"type": "code_interpreter"},
                {"type": "file_search"}
            ],
            environment_variables={
                "AZURE_AI_PROJECT_ENDPOINT": os.environ["AZURE_AI_PROJECT_ENDPOINT"],
                "MODEL_NAME": "gpt-4o-mini",
                "MAX_RETRIES": "3"
            }
        )
    )
    
    print(f"Agente alojado creado: {agent.name}")
    print(f"Versión: {agent.version}")
    print(f"Estado: {agent.state}")
    
    return agent

if __name__ == "__main__":
    create_hosted_agent()

Patrón Asíncrono

import os
from azure.identity.aio import DefaultAzureCredential
from azure.ai.projects.aio import AIProjectClient
from azure.ai.projects.models import (
    ImageBasedHostedAgentDefinition,
    ProtocolVersionRecord,
    AgentProtocol,
)

async def create_hosted_agent_async():
    """Crea un agente alojado de forma asíncrona."""
    
    async with DefaultAzureCredential() as credential:
        async with AIProjectClient(
            endpoint=os.environ["AZURE_AI_PROJECT_ENDPOINT"],
            credential=credential
        ) as client:
            agent = await client.agents.create_version(
                agent_name="async-agent",
                definition=ImageBasedHostedAgentDefinition(
                    container_protocol_versions=[
                        ProtocolVersionRecord(
                            protocol=AgentProtocol.RESPONSES,
                            version="v1"
                        )
                    ],
                    image="myregistry.azurecr.io/async-agent:latest",
                    cpu="1",
                    memory="2Gi"
                )
            )
            return agent

Errores Comunes

ErrorCausaSolución
ImagePullBackOffPermiso de extracción de ACR denegadoConceder rol AcrPull a la identidad gestionada del proyecto
InvalidContainerImageImagen no encontradaVerificar que la ruta y etiqueta de la imagen existan en ACR
CapabilityHostNotFoundNo hay host de capacidad configuradoCrear host de capacidad a nivel de cuenta
ProtocolVersionNotSupportedVersión de protocolo no válidaUsar AgentProtocol.RESPONSES con versión "v1"

Mejores Prácticas

  1. Versiona tus Imágenes - Usa etiquetas específicas, no latest en producción
  2. Recursos Mínimos - Comienza con CPU/memoria mínimos, escala según sea necesario
  3. Variables de Entorno - Usa para toda la configuración, nunca codificar
  4. Manejo de Errores - Envuelve la creación del agente en bloques try/except
  5. Limpieza - Elimina versiones de agentes no utilizadas para liberar recursos

Enlaces de Referencia

Cuándo Usar

Esta habilidad es aplicable para ejecutar el flujo de trabajo o las acciones descritas en la visión general.

Limitaciones

  • Usa esta habilidad solo cuando la tarea coincida claramente con el alcance descrito anteriormente.
  • No trates la salida como un sustituto de la validación específica del entorno, pruebas o revisión de expertos.
  • Detente y pide aclaración si faltan entradas requeridas, permisos, límites de seguridad o criterios de éxito.

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

SamuelChien/mega-skills-collection

Security audit, hardening, threat modeling (STRIDE/PASTA), Red/Blue Team, OWASP checks, code review, incident response, and infrastructure security for any project.

SamuelChien/mega-skills-collection

Arquitecto de Soluciones Principal y Consultor Tecnológico de Andru.ia. Diagnostica y traza la hoja de ruta óptima para proyectos de IA en español.

SamuelChien/mega-skills-collection

Ingeniero de Sistemas de Andru.ia. Diseña, redacta y despliega nuevas habilidades (skills) dentro del repositorio siguiendo el Estándar de Diamante.

SamuelChien/mega-skills-collection

Estratega de Inteligencia de Dominio de Andru.ia. Analiza el nicho específico de un proyecto para inyectar conocimientos, regulaciones y estándares únicos del sector. Actívalo tras definir el nicho.

SamuelChien/mega-skills-collection

2D game development principles. Sprites, tilemaps, physics, camera.

SamuelChien/mega-skills-collection

3D game development principles. Rendering, shaders, physics, cameras.

SamuelChien/mega-skills-collection

Expert in building 3D experiences for the web - Three.js, React Three Fiber, Spline, WebGL, and interactive 3D scenes. Covers product configurators, 3D portfolios, immersive websites, and bringing depth to web experiences.

SamuelChien/mega-skills-collection

Accessibility audit skill for scanning, fixing, and verifying WCAG 2.2 Level A and AA compliance across React, Next.js, Vue, Angular, Svelte, and plain HTML codebases. Use when auditing accessibility, fixing a11y violations, checking color contrast, generating compliance reports, or integrating accessibility checks into CI/CD pipelines.

SamuelChien/mega-skills-collection

Ab Test Analyzer - Auto-activating skill for Data Analytics. Triggers on: ab test analyzer, ab test analyzer Part of the Data Analytics skill category.

SamuelChien/mega-skills-collection

A B Test Config Creator - Auto-activating skill for ML Deployment. Triggers on: a b test config creator, a b test config creator Part of the ML Deployment skill category.

SamuelChien/mega-skills-collection

When the user wants to plan, design, or implement an A/B test or experiment. Also use when the user mentions "A/B test," "split test," "experiment," "test this change," "variant copy," "multivariate test," "hypothesis," "conversion experiment," "statistical significance," or "test this." For tracking implementation, see analytics-tracking.

SamuelChien/mega-skills-collection

Acceptance Criteria Creator - Auto-activating skill for Enterprise Workflows. Triggers on: acceptance criteria creator, acceptance criteria creator Part of the Enterprise Workflows skill category.

SamuelChien/mega-skills-collection

Use when a coding task should be driven end-to-end from issue intake through implementation, review, deployment, and acceptance verification with minimal human re-intervention.

SamuelChien/mega-skills-collection

Accessibility Audit Runner - Auto-activating skill for Frontend Development. Triggers on: accessibility audit runner, accessibility audit runner Part of the Frontend Development skill category.

SamuelChien/mega-skills-collection

You are an accessibility expert specializing in WCAG compliance, inclusive design, and assistive technology compatibility. Conduct audits, identify barriers, and provide remediation guidance.

SamuelChien/mega-skills-collection

Web accessibility patterns for WCAG 2.2 compliance including ARIA, keyboard navigation, screen readers, and testing

SamuelChien/mega-skills-collection

Manage Discord channel access — approve pairings, edit allowlists, set DM/group policy. Use when the user asks to pair, approve someone, check who's allowed, or change policy for the Discord channel.

SamuelChien/mega-skills-collection

Create unified specification packages across Business, Development, and Design teams. Staged elaboration (L0 Vision → L1 Requirements → L2 Team Detail → L3 Acceptance Criteria) to build shared understanding. Does not write code.

SamuelChien/mega-skills-collection

Research a company or person and get actionable sales intel. Works standalone with web search, supercharged when you connect enrichment tools or your CRM. Trigger with "research [company]", "look up [person]", "intel on [prospect]", "who is [name] at [company]", or "tell me about [company]".

SamuelChien/mega-skills-collection

Validate messaging consistency across website, GitHub repos, and local documentation generating read-only discrepancy reports. Use when checking content alignment or finding mixed messaging. Trigger with phrases like "check consistency", "validate documentation", or "audit messaging".

Skills relacionados