Communitygithub.com

Azure AI Hosted Agents (Python)

Crie agentes Foundry baseados em contêiner com o SDK Azure AI Projects (ImageBasedHostedAgentDefinition). Use ao criar agentes hospedados com imagens de contêiner personalizadas no Azure AI Foundry.

O que é Azure AI Hosted Agents (Python)?

Esta habilidade fornece um guia completo para construir e gerenciar agentes hospedados em contêiner no Azure AI Foundry usando `ImageBasedHostedAgentDefinition` do SDK Azure AI Projects (versão 2.0.0b3 ou superior). Ela abrange todo o fluxo de trabalho: instalação, configuração de variáveis de ambiente, autenticação com `DefaultAzureCredential`, criação de agentes com parâmetros como protocolos, CPU, memória, ferramentas (code_interpreter, MCP, file_search) e variáveis de ambiente. Também inclui listagem e exclusão de versões, um padrão assíncrono, tratamento de erros comuns (ImagePullBackOff, InvalidContainerImage) e práticas recomendadas. É útil para desenvolvedores que precisam implantar agentes de IA personalizados em contêineres no Azure, garantindo configuração correta de permissões ACR e recursos de hospedagem.

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

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

O que Azure AI Hosted Agents (Python) faz?

Construa agentes hospedados baseados em contêiner usando ImageBasedHostedAgentDefinition do SDK Azure AI Projects.

Instalação

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

Versão mínima do SDK: 2.0.0b3 ou posterior necessária para suporte a agente hospedado.

Variáveis de Ambiente

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

Pré-requisitos

Antes de criar agentes hospedados:

  1. Imagem do Contêiner - Construa e envie para o Azure Container Registry (ACR)
  2. Permissões de Pull no ACR - Conceda à identidade gerenciada do seu projeto a função AcrPull no ACR
  3. Host de Capacidade - Host de capacidade em nível de conta com enablePublicHostingEnvironment=true
  4. Versão do SDK - Garanta azure-ai-projects>=2.0.0b3

Autenticação

Sempre use 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
)

Fluxo de Trabalho Principal

1. Importações

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

2. Criar Agente Hospedado

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 criado: {agent.name} (versão: {agent.version})")

3. Listar Versões do Agente

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

4. Excluir Versão do Agente

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

Parâmetros do ImageBasedHostedAgentDefinition

ParâmetroTipoObrigatórioDescrição
container_protocol_versionslist[ProtocolVersionRecord]SimVersões de protocolo que o agente suporta
imagestrSimCaminho completo da imagem do contêiner (registry/imagem:tag)
cpustrNãoAlocação de CPU (ex.: "1", "2")
memorystrNãoAlocação de memória (ex.: "2Gi", "4Gi")
toolslist[dict]NãoFerramentas disponíveis para o agente
environment_variablesdict[str, str]NãoVariáveis de ambiente para o contêiner

Versões de Protocolo

O parâmetro container_protocol_versions especifica quais protocolos seu agente suporta:

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

# Protocolo RESPONSES - respostas padrão do agente
container_protocol_versions=[
    ProtocolVersionRecord(protocol=AgentProtocol.RESPONSES, version="v1")
]

Protocolos Disponíveis:

ProtocoloDescrição
AgentProtocol.RESPONSESProtocolo de resposta padrão para interações com o agente

Alocação de Recursos

Especifique CPU e memória para seu contêiner:

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

Limites de Recursos:

RecursoMínimoMáximoPadrão
CPU0.541
Memória1Gi8Gi2Gi

Configuração de Ferramentas

Adicione ferramentas ao seu agente hospedado:

Interpretador de Código

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

Ferramentas MCP

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

Múltiplas Ferramentas

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

Variáveis de Ambiente

Passe configuração para seu contêiner:

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

Melhor Prática: Nunca codifique segredos. Use variáveis de ambiente ou Azure Key Vault.

Exemplo 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():
    """Criar um agente hospedado com imagem de contêiner 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 hospedado criado: {agent.name}")
    print(f"Versão: {agent.version}")
    print(f"Estado: {agent.state}")
    
    return agent

if __name__ == "__main__":
    create_hosted_agent()

Padrão Assí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():
    """Criar um agente hospedado de forma assí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

Erros Comuns

ErroCausaSolução
ImagePullBackOffPermissão de pull no ACR negadaConceda a função AcrPull à identidade gerenciada do projeto
InvalidContainerImageImagem não encontradaVerifique se o caminho e a tag da imagem existem no ACR
CapabilityHostNotFoundNenhum host de capacidade configuradoCrie um host de capacidade em nível de conta
ProtocolVersionNotSupportedVersão de protocolo inválidaUse AgentProtocol.RESPONSES com versão "v1"

Melhores Práticas

  1. Versionar Suas Imagens - Use tags específicas, não latest em produção
  2. Recursos Mínimos - Comece com CPU/memória mínimos, aumente conforme necessário
  3. Variáveis de Ambiente - Use para toda configuração, nunca codifique
  4. Tratamento de Erros - Envolva a criação do agente em blocos try/except
  5. Limpeza - Exclua versões não utilizadas do agente para liberar recursos

Links de Referência

Quando Usar

Esta habilidade é aplicável para executar o fluxo de trabalho ou ações descritas na visão geral.

Limitações

  • Use esta habilidade apenas quando a tarefa corresponder claramente ao escopo descrito acima.
  • Não trate a saída como substituta para validação específica do ambiente, teste ou revisão de especialistas.
  • Pare e peça esclarecimentos se as entradas necessárias, permissões, limites de segurança ou critérios de sucesso estiverem ausentes.

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".

Habilidades Relacionadas