Communitygithub.com

Agents Hébergés Azure AI (Python)

Créez des agents Foundary conteneurisés avec le SDK Azure AI Projects (ImageBasedHostedAgentDefinition). Utilisez cette compétence lorsque vous devez créer des agents hébergés avec des images conteneur personnalisées dans Azure AI Foundry.

Qu'est-ce que Agents Hébergés Azure AI (Python) ?

Cette compétence permet aux développeurs de créer, gérer et configurer des agents hébergés conteneurisés dans Azure AI Foundry en utilisant la classe `ImageBasedHostedAgentDefinition` du SDK Azure AI Projects (version 2.0.0b3 ou ultérieure). Elle couvre l'ensemble du cycle de vie : installation du SDK, préréquis (ACR, permissions AcrPull, environnement de capacité), authentification avec `DefaultAzureCredential`, création synchrone et asynchrone, gestion des versions, allocation des ressources (CPU/mémoire), configuration des outils (interpréteur de code, MCP, recherche de fichiers) et passage de variables d'environnement. Elle fournit également des exemples complets, un tableau des erreurs courantes (ImagePullBackOff, InvalidContainerImage) et les meilleures pratiques (version des images, gestion des secrets via Azure Key Vault). Cette compétence est idéale pour automatiser le déploiement d'agents personnalisés dans des conteneurs sur Azure.

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

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Que fait Agents Hébergés Azure AI (Python) ?

Créez des agents hébergés conteneurisés à l'aide de ImageBasedHostedAgentDefinition du SDK Azure AI Projects.

Installation

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

Version minimale du SDK : 2.0.0b3 ou ultérieure requise pour la prise en charge des agents hébergés.

Variables d'Environnement

AZURE_AI_PROJECT_ENDPOINT=https://<ressource>.services.ai.azure.com/api/projects/<projet>

Prérequis

Avant de créer des agents hébergés :

  1. Image conteneur - Construisez et poussez-la vers Azure Container Registry (ACR)
  2. Permissions de tirage ACR - Accordez à l'identité managée de votre projet le rôle AcrPull sur l'ACR
  3. Environnement de capacité - Environnement de capacité au niveau du compte avec enablePublicHostingEnvironment=true
  4. Version du SDK - Assurez-vous que azure-ai-projects>=2.0.0b3

Authentification

Utilisez toujours 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
)

Flux de Travail Principal

1. Imports

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

2. Créer un Agent Hébergé

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

agent = client.agents.create_version(
    agent_name="mon-agent-heberge",
    definition=ImageBasedHostedAgentDefinition(
        container_protocol_versions=[
            ProtocolVersionRecord(protocol=AgentProtocol.RESPONSES, version="v1")
        ],
        cpu="1",
        memory="2Gi",
        image="monregistre.azurecr.io/mon-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"Agent créé : {agent.name} (version : {agent.version})")

3. Lister les Versions de l'Agent

versions = client.agents.list_versions(agent_name="mon-agent-heberge")
for version in versions:
    print(f"Version : {version.version}, État : {version.state}")

4. Supprimer une Version d'Agent

client.agents.delete_version(
    agent_name="mon-agent-heberge",
    version=agent.version
)

Paramètres de ImageBasedHostedAgentDefinition

ParamètreTypeObligatoireDescription
container_protocol_versionslist[ProtocolVersionRecord]OuiVersions de protocole prises en charge par l'agent
imagestrOuiChemin complet de l'image conteneur (registre/image:tag)
cpustrNonAllocation CPU (ex. "1", "2")
memorystrNonAllocation mémoire (ex. "2Gi", "4Gi")
toolslist[dict]NonOutils disponibles pour l'agent
environment_variablesdict[str, str]NonVariables d'environnement pour le conteneur

Versions de Protocole

Le paramètre container_protocol_versions spécifie les protocoles pris en charge par votre agent :

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

# Protocole RESPONSES - réponses standard de l'agent
container_protocol_versions=[
    ProtocolVersionRecord(protocol=AgentProtocol.RESPONSES, version="v1")
]

Protocoles disponibles :

ProtocoleDescription
AgentProtocol.RESPONSESProtocole de réponse standard pour les interactions avec l'agent

Allocation de Ressources

Spécifiez le CPU et la mémoire pour votre conteneur :

definition=ImageBasedHostedAgentDefinition(
    container_protocol_versions=[...],
    image="monregistre.azurecr.io/mon-agent:latest",
    cpu="2",      # 2 cœurs CPU
    memory="4Gi"  # 4 GiB de mémoire
)

Limites de Ressources :

RessourceMinMaxDéfaut
CPU0,541
Mémoire1Gi8Gi2Gi

Configuration des Outils

Ajoutez des outils à votre agent hébergé :

Interpréteur de Code

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

Outils MCP

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

Outils Multiples

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

Variables d'Environnement

Passez la configuration à votre conteneur :

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

Bonne pratique : Ne codez jamais les secrets en dur. Utilisez des variables d'environnement ou Azure Key Vault.

Exemple Complet

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

def creer_agent_heberge():
    """Crée un agent hébergé avec une image conteneur personnalisée."""
    
    client = AIProjectClient(
        endpoint=os.environ["AZURE_AI_PROJECT_ENDPOINT"],
        credential=DefaultAzureCredential()
    )
    
    agent = client.agents.create_version(
        agent_name="agent-traitement-donnees",
        definition=ImageBasedHostedAgentDefinition(
            container_protocol_versions=[
                ProtocolVersionRecord(
                    protocol=AgentProtocol.RESPONSES,
                    version="v1"
                )
            ],
            image="monregistre.azurecr.io/traitement-donnees: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"Agent hébergé créé : {agent.name}")
    print(f"Version : {agent.version}")
    print(f"État : {agent.state}")
    
    return agent

if __name__ == "__main__":
    creer_agent_heberge()

Modèle Asynchrone

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 creer_agent_heberge_async():
    """Crée un agent hébergé de manière asynchrone."""
    
    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="agent-async",
                definition=ImageBasedHostedAgentDefinition(
                    container_protocol_versions=[
                        ProtocolVersionRecord(
                            protocol=AgentProtocol.RESPONSES,
                            version="v1"
                        )
                    ],
                    image="monregistre.azurecr.io/agent-async:latest",
                    cpu="1",
                    memory="2Gi"
                )
            )
            return agent

Erreurs Courantes

ErreurCauseSolution
ImagePullBackOffPermission de tirage ACR refuséeAccordez le rôle AcrPull à l'identité managée du projet
InvalidContainerImageImage introuvableVérifiez que le chemin et le tag de l'image existent dans l'ACR
CapabilityHostNotFoundAucun environnement de capacité configuréCréez un environnement de capacité au niveau du compte
ProtocolVersionNotSupportedVersion de protocole invalideUtilisez AgentProtocol.RESPONSES avec la version "v1"

Bonnes Pratiques

  1. Versionnez vos images - Utilisez des tags spécifiques, pas latest en production
  2. Ressources minimales - Commencez avec un CPU/mémoire minimum, montez en charge si nécessaire
  3. Variables d'environnement - Utilisez-les pour toute configuration, ne codez jamais en dur
  4. Gestion des erreurs - Encadrez la création de l'agent dans des blocs try/except
  5. Nettoyage - Supprimez les versions d'agent inutilisées pour libérer des ressources

Liens de Référence

Quand Utiliser

Cette compétence doit être utilisée pour exécuter le flux de travail ou les actions décrits dans l'aperçu.

Limitations

  • Utilisez cette compétence uniquement lorsque la tâche correspond clairement à la portée décrite ci-dessus.
  • Ne considérez pas la sortie comme un substitut à une validation, un test ou une revue d'expert spécifique à l'environnement.
  • Arrêtez-vous et demandez des clarifications si les entrées, permissions, limites de sécurité ou critères de succès requis sont manquants.

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 associés