azure-ai-projects-py

Créez des applications IA à l'aide du SDK Python Azure AI Projects (`azure-ai-projects`). À utiliser lorsque vous travaillez avec des clients de projet Foundry, que vous créez des agents versionnés avec `PromptAgentDefinition`, exécutez des évaluations, gérez des connexions/déploiements/datasets/index, ou utilisez des clients compatibles OpenAI. Il s'agit du SDK Foundry de haut niveau — pour les opérations d'agent de bas niveau, utilisez le skill `azure-ai-agents-python`.

npx skills add https://github.com/microsoft/skills --skill azure-ai-projects-py

Azure AI Projects Python SDK (Foundry SDK)

Construisez des applications IA sur Microsoft Foundry en utilisant le SDK azure-ai-projects.

Installation

pip install azure-ai-projects azure-identity

Variables d'environnement

AZURE_AI_PROJECT_ENDPOINT="https://<resource>.services.ai.azure.com/api/projects/<project>"  # Requis pour toutes les méthodes d'authentification
AZURE_AI_MODEL_DEPLOYMENT_NAME="gpt-4o-mini"  # Requis pour toutes les méthodes d'authentification
AZURE_TOKEN_CREDENTIALS=prod # Requis uniquement si DefaultAzureCredential est utilisé en production

Authentification

import os
from azure.identity import DefaultAzureCredential, ManagedIdentityCredential
from azure.ai.projects import AIProjectClient

# Dev local : DefaultAzureCredential. Production : définir AZURE_TOKEN_CREDENTIALS=prod ou AZURE_TOKEN_CREDENTIALS=<specific_credential>
credential = DefaultAzureCredential(require_envvar=True)
# Ou utiliser directement une authentification spécifique en production :
# Voir https://learn.microsoft.com/python/api/overview/azure/identity-readme?view=azure-python#credential-classes
# credential = ManagedIdentityCredential()
client = AIProjectClient(
    endpoint=os.environ["AZURE_AI_PROJECT_ENDPOINT"],
    credential=credential,
)

Vue d'ensemble des opérations client

Opération Accès Objectif
client.agents .agents.* CRUD agent, versions, threads, runs
client.connections .connections.* Lister/récupérer les connexions du projet
client.deployments .deployments.* Lister les déploiements de modèles
client.datasets .datasets.* Gestion des datasets
client.indexes .indexes.* Gestion des index
client.evaluations .evaluations.* Exécuter des évaluations
client.red_teams .red_teams.* Opérations red team

Deux approches client

1. AIProjectClient (Foundry natif)

from azure.ai.projects import AIProjectClient

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

# Utiliser les opérations natives de Foundry
agent = client.agents.create_agent(
    model=os.environ["AZURE_AI_MODEL_DEPLOYMENT_NAME"],
    name="my-agent",
    instructions="You are helpful.",
)

2. Client compatible OpenAI

# Obtenir le client compatible OpenAI à partir du projet
openai_client = client.get_openai_client()

# Utiliser l'API OpenAI standard
response = openai_client.chat.completions.create(
    model=os.environ["AZURE_AI_MODEL_DEPLOYMENT_NAME"],
    messages=[{"role": "user", "content": "Hello!"}],
)

Opérations agent

Créer un agent (basique)

agent = client.agents.create_agent(
    model=os.environ["AZURE_AI_MODEL_DEPLOYMENT_NAME"],
    name="my-agent",
    instructions="You are a helpful assistant.",
)

Créer un agent avec outils

from azure.ai.agents import CodeInterpreterTool, FileSearchTool

agent = client.agents.create_agent(
    model=os.environ["AZURE_AI_MODEL_DEPLOYMENT_NAME"],
    name="tool-agent",
    instructions="You can execute code and search files.",
    tools=[CodeInterpreterTool(), FileSearchTool()],
)

Agents versionnés avec PromptAgentDefinition

from azure.ai.projects.models import PromptAgentDefinition

# Créer un agent versionné
agent_version = client.agents.create_version(
    agent_name="customer-support-agent",
    definition=PromptAgentDefinition(
        model=os.environ["AZURE_AI_MODEL_DEPLOYMENT_NAME"],
        instructions="You are a customer support specialist.",
        tools=[],  # Ajouter des outils selon les besoins
    ),
    version_label="v1.0",
)

Voir references/agents.md pour les patterns agent détaillés.

Vue d'ensemble des outils

Outil Classe Cas d'usage
Code Interpreter CodeInterpreterTool Exécuter Python, générer des fichiers
File Search FileSearchTool RAG sur les documents téléchargés
Bing Grounding BingGroundingTool Recherche web (nécessite une connexion)
Azure AI Search AzureAISearchTool Rechercher vos index
Function Calling FunctionTool Appeler vos fonctions Python
OpenAPI OpenApiTool Appeler des API REST
MCP McpTool Serveurs Model Context Protocol
Memory Search MemorySearchTool Rechercher dans les mémoires d'agent
SharePoint SharepointGroundingTool Rechercher le contenu SharePoint

Voir references/tools.md pour tous les patterns d'outils.

Flux thread et messages

# 1. Créer un thread
thread = client.agents.threads.create()

# 2. Ajouter un message
client.agents.messages.create(
    thread_id=thread.id,
    role="user",
    content="What's the weather like?",
)

# 3. Créer et traiter un run
run = client.agents.runs.create_and_process(
    thread_id=thread.id,
    agent_id=agent.id,
)

# 4. Obtenir la réponse
if run.status == "completed":
    messages = client.agents.messages.list(thread_id=thread.id)
    for msg in messages:
        if msg.role == "assistant":
            print(msg.content[0].text.value)

Connexions

# Lister toutes les connexions
connections = client.connections.list()
for conn in connections:
    print(f"{conn.name}: {conn.connection_type}")

# Obtenir une connexion spécifique
connection = client.connections.get(connection_name="my-search-connection")

Voir references/connections.md pour les patterns de connexion.

Déploiements

# Lister les déploiements de modèles disponibles
deployments = client.deployments.list()
for deployment in deployments:
    print(f"{deployment.name}: {deployment.model}")

Voir references/deployments.md pour les patterns de déploiement.

Datasets et index

# Lister les datasets
datasets = client.datasets.list()

# Lister les index
indexes = client.indexes.list()

Voir references/datasets-indexes.md pour les opérations de données.

Évaluation

# Utiliser le client OpenAI pour les evals
openai_client = client.get_openai_client()

# Créer une évaluation avec des évaluateurs intégrés
eval_run = openai_client.evals.runs.create(
    eval_id="my-eval",
    name="quality-check",
    data_source={
        "type": "custom",
        "item_references": [{"item_id": "test-1"}],
    },
    testing_criteria=[
        {"type": "fluency"},
        {"type": "task_adherence"},
    ],
)

Voir references/evaluation.md pour les patterns d'évaluation.

Client asynchrone

from azure.ai.projects.aio import AIProjectClient

async with AIProjectClient(
    endpoint=os.environ["AZURE_AI_PROJECT_ENDPOINT"],
    credential=DefaultAzureCredential(),
) as client:
    agent = await client.agents.create_agent(...)
    # ... opérations asynchrones

Voir references/async-patterns.md pour les patterns asynchrones.

Mémoires persistantes

# Créer une mémoire persistante pour l'agent
memory_store = client.agents.create_memory_store(
    name="conversation-memory",
)

# Attacher à l'agent pour la mémoire persistante
agent = client.agents.create_agent(
    model=os.environ["AZURE_AI_MODEL_DEPLOYMENT_NAME"],
    name="memory-agent",
    tools=[MemorySearchTool()],
    tool_resources={"memory": {"store_ids": [memory_store.id]}},
)

Bonnes pratiques

  1. Utiliser les gestionnaires de contexte pour le client asynchrone : async with AIProjectClient(...) as client:
  2. Nettoyer les agents quand c'est terminé : client.agents.delete_agent(agent.id)
  3. Utiliser create_and_process pour les runs simples, streaming pour l'UX en temps réel
  4. Utiliser des agents versionnés pour les déploiements en production
  5. Préférer les connexions pour l'intégration de services externes (AI Search, Bing, etc.)

Comparaison SDK

Fonctionnalité azure-ai-projects azure-ai-agents
Niveau Haut niveau (Foundry) Bas niveau (Agents)
Client AIProjectClient AgentsClient
Versioning create_version() Non disponible
Connexions Oui Non
Déploiements Oui Non
Datasets/Index Oui Non
Évaluation Via client OpenAI Non
Quand l'utiliser Intégration Foundry complète Apps agent autonomes

Fichiers de référence

Skills similaires