azure-ai-projects-ts

Créez des applications IA avec le SDK Azure AI Projects pour JavaScript (`@azure/ai-projects`). À utiliser pour travailler avec des clients de projet Foundry, des agents, des connexions, des déploiements, des datasets, des indexes, des évaluations ou pour obtenir des clients OpenAI.

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

SDK Azure AI Projects pour TypeScript

SDK haut niveau pour les projets Azure AI Foundry avec agents, connexions, déploiements et évaluations.

Installation

npm install @azure/ai-projects @azure/identity

Pour le tracing :

npm install @azure/monitor-opentelemetry @opentelemetry/api

Variables d'environnement

AZURE_AI_PROJECT_ENDPOINT=https://<resource>.services.ai.azure.com/api/projects/<project>
MODEL_DEPLOYMENT_NAME=gpt-4o
AZURE_TOKEN_CREDENTIALS=prod # Requis uniquement si DefaultAzureCredential est utilisé en production

Authentification

import { AIProjectClient } from "@azure/ai-projects";
import { DefaultAzureCredential, ManagedIdentityCredential } from "@azure/identity";

// Dev local : DefaultAzureCredential. Production : définir AZURE_TOKEN_CREDENTIALS=prod ou AZURE_TOKEN_CREDENTIALS=<specific_credential>
const credential = new DefaultAzureCredential({requiredEnvVars: ["AZURE_TOKEN_CREDENTIALS"]});
// Ou utiliser des identifiants spécifiques directement en production :
// Voir https://learn.microsoft.com/javascript/api/overview/azure/identity-readme?view=azure-node-latest#credential-classes
// const credential = new ManagedIdentityCredential();

const client = new AIProjectClient(
  process.env.AZURE_AI_PROJECT_ENDPOINT!,
  credential
);

Groupes d'opérations

Groupe Objectif
client.agents Créer et gérer des agents IA
client.connections Lister les ressources Azure connectées
client.deployments Lister les déploiements de modèles
client.datasets Télécharger et gérer les datasets
client.indexes Créer et gérer les indexes de recherche
client.evaluators Gérer les métriques d'évaluation
client.memoryStores Gérer la mémoire de l'agent

Obtenir le client OpenAI

const openAIClient = await client.getOpenAIClient();

// Utiliser pour les réponses
const response = await openAIClient.responses.create({
  model: "gpt-4o",
  input: "What is the capital of France?"
});

// Utiliser pour les conversations
const conversation = await openAIClient.conversations.create({
  items: [{ type: "message", role: "user", content: "Hello!" }]
});

Agents

Créer un agent

const agent = await client.agents.createVersion("my-agent", {
  kind: "prompt",
  model: "gpt-4o",
  instructions: "You are a helpful assistant."
});

Agent avec outils

// Code Interpreter
const agent = await client.agents.createVersion("code-agent", {
  kind: "prompt",
  model: "gpt-4o",
  instructions: "You can execute code.",
  tools: [{ type: "code_interpreter", container: { type: "auto" } }]
});

// File Search
const agent = await client.agents.createVersion("search-agent", {
  kind: "prompt",
  model: "gpt-4o",
  tools: [{ type: "file_search", vector_store_ids: [vectorStoreId] }]
});

// Web Search
const agent = await client.agents.createVersion("web-agent", {
  kind: "prompt",
  model: "gpt-4o",
  tools: [{
    type: "web_search_preview",
    user_location: { type: "approximate", country: "US", city: "Seattle" }
  }]
});

// Azure AI Search
const agent = await client.agents.createVersion("aisearch-agent", {
  kind: "prompt",
  model: "gpt-4o",
  tools: [{
    type: "azure_ai_search",
    azure_ai_search: {
      indexes: [{
        project_connection_id: connectionId,
        index_name: "my-index",
        query_type: "simple"
      }]
    }
  }]
});

// Function Tool
const agent = await client.agents.createVersion("func-agent", {
  kind: "prompt",
  model: "gpt-4o",
  tools: [{
    type: "function",
    function: {
      name: "get_weather",
      description: "Get weather for a location",
      strict: true,
      parameters: {
        type: "object",
        properties: { location: { type: "string" } },
        required: ["location"]
      }
    }
  }]
});

// MCP Tool
const agent = await client.agents.createVersion("mcp-agent", {
  kind: "prompt",
  model: "gpt-4o",
  tools: [{
    type: "mcp",
    server_label: "my-mcp",
    server_url: "https://mcp-server.example.com",
    require_approval: "always"
  }]
});

Exécuter un agent

const openAIClient = await client.getOpenAIClient();

// Créer une conversation
const conversation = await openAIClient.conversations.create({
  items: [{ type: "message", role: "user", content: "Hello!" }]
});

// Générer une réponse avec l'agent
const response = await openAIClient.responses.create(
  { conversation: conversation.id },
  { body: { agent: { name: agent.name, type: "agent_reference" } } }
);

// Nettoyage
await openAIClient.conversations.delete(conversation.id);
await client.agents.deleteVersion(agent.name, agent.version);

Connexions

// Lister toutes les connexions
for await (const conn of client.connections.list()) {
  console.log(conn.name, conn.type);
}

// Obtenir une connexion par nom
const conn = await client.connections.get("my-connection");

// Obtenir une connexion avec identifiants
const connWithCreds = await client.connections.getWithCredentials("my-connection");

// Obtenir la connexion par défaut par type
const defaultAzureOpenAI = await client.connections.getDefault("AzureOpenAI", true);

Déploiements

// Lister tous les déploiements
for await (const deployment of client.deployments.list()) {
  if (deployment.type === "ModelDeployment") {
    console.log(deployment.name, deployment.modelName);
  }
}

// Filtrer par éditeur
for await (const d of client.deployments.list({ modelPublisher: "OpenAI" })) {
  console.log(d.name);
}

// Obtenir un déploiement spécifique
const deployment = await client.deployments.get("gpt-4o");

Datasets

// Télécharger un fichier unique
const dataset = await client.datasets.uploadFile(
  "my-dataset",
  "1.0",
  "./data/training.jsonl"
);

// Télécharger un dossier
const dataset = await client.datasets.uploadFolder(
  "my-dataset",
  "2.0",
  "./data/documents/"
);

// Obtenir un dataset
const ds = await client.datasets.get("my-dataset", "1.0");

// Lister les versions
for await (const version of client.datasets.listVersions("my-dataset")) {
  console.log(version);
}

// Supprimer
await client.datasets.delete("my-dataset", "1.0");

Indexes

import { AzureAISearchIndex } from "@azure/ai-projects";

const indexConfig: AzureAISearchIndex = {
  name: "my-index",
  type: "AzureSearch",
  version: "1",
  indexName: "my-index",
  connectionName: "search-connection"
};

// Créer un index
const index = await client.indexes.createOrUpdate("my-index", "1", indexConfig);

// Lister les indexes
for await (const idx of client.indexes.list()) {
  console.log(idx.name);
}

// Supprimer
await client.indexes.delete("my-index", "1");

Types clés

import {
  AIProjectClient,
  AIProjectClientOptionalParams,
  Connection,
  ModelDeployment,
  DatasetVersionUnion,
  AzureAISearchIndex
} from "@azure/ai-projects";

Bonnes pratiques

  1. Utiliser getOpenAIClient() - Pour les réponses, conversations, fichiers et vector stores
  2. Versionner vos agents - Utiliser createVersion pour des définitions d'agent reproductibles
  3. Nettoyer les ressources - Supprimer les agents et conversations quand vous avez terminé
  4. Utiliser les connexions - Obtenir les identifiants à partir des connexions du projet, ne pas les coder en dur
  5. Filtrer les déploiements - Utiliser le filtre modelPublisher pour trouver des modèles spécifiques

Skills similaires