Megosztás a következőn keresztül:


Azure AI Projects JavaScripthez készült ügyféloldali kódtár – 1.0.1-es verzió

Az AI Projects ügyféloldali kódtár egyszerű hozzáférést biztosít az Azure AI Foundry-projekt erőforrásaihoz. A következőkre lehet használni:

  • Ügynökök létrehozása és futtatása az ügyfél tulajdonságával .agents .
  • Szerezzen be egy AzureOpenAI-ügyfelet a .inference.azureOpenAI metódussal.
  • Sorolja fel az öntödei projektben üzembe helyezett AI-modelleket a .deployments műveletek használatával.
  • Sorolja fel a csatlakoztatott Azure-erőforrásokat a Foundry-projektben a .connections műveletek használatával.
  • Dokumentumok feltöltése és adatkészletek létrehozása a műveletek használatával .datasets való hivatkozáshoz.
  • Keresési indexek létrehozása és számbavétele a műveletekkel .indexes .
  • Engedélyezze az OpenTelemetry nyomkövetést a enable_telemetry függvény használatával.

Termékdokumentáció | Minták | Csomag (npm) | API referenciadokumentáció | SDK forráskód

Tartalomjegyzék

Kezdő lépések

Előfeltétel

Engedélyezés

  • Az ügyfél hitelesítéséhez Entra azonosítóra van szükség. Az alkalmazásnak szüksége van egy objektumra, amely implementálja a TokenCredential felületet. Az itt található kódminták DefaultAzureCredentialhasználnak. Ahhoz, hogy ez működjön, a következőkre lesz szüksége:
    • A Contributor szerepkör. A szerepkör-hozzárendelés az Azure PortalOn az Azure AI Project-erőforrás "Hozzáférés-vezérlés (IAM)" lapján végezhető el. A szerepkör-hozzárendelésekről itt olvashat bővebben.
    • Telepített Azure CLI-.
    • A rendszer a az loginfuttatásával jelentkezik be az Azure-fiókjába.
    • Vegye figyelembe, hogy ha több Azure-előfizetéssel rendelkezik, az Azure AI Project-erőforrást tartalmazó előfizetésnek kell lennie az alapértelmezett előfizetésnek. A az account list --output table futtatásával listázhatja az összes előfizetését, és megtekintheti, hogy melyik az alapértelmezett. Az alapértelmezett előfizetés módosításához futtassa a az account set --subscription "Your Subscription ID or Name".

A csomag telepítése

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

Főbb fogalmak

Az ügyfél létrehozása és hitelesítése

AIProjectsClientEgy , a endpointvégpontról lehet lekérni. Az alábbiakban feltételezzük, hogy a környezeti változó AZURE_AI_PROJECT_ENDPOINT_STRING úgy lett definiálva, hogy ezt az értéket tartsa:

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

const endpoint = process.env["AZURE_AI_PROJECT_ENDPOINT_STRING"] || "<project endpoint string>";
const client = new AIProjectClient(endpoint, new DefaultAzureCredential());

Az ügyfél API-verziót v1használ, a támogatott funkciókkal kapcsolatos további információkért tekintse meg az API dokumentációját .

Példák

Ügynöki műveletek végrehajtása

A .agents tulajdonság AIProjectClient hozzáférést biztosít a AgentsClient csomagból hitelesített azure-ai-agents szolgáltatáshoz. Az alábbiakban bemutatjuk, hogyan hozhat létre ügynököt és törölheti azt. Ha meg szeretné tekinteni, hogy mit tehet a létrehozott termékekkelagent, tekintse meg a csomaghoz társított azure-ai-agents.

const agent = await project.agents.createAgent("gpt-4o", {
  name: "my-agent",
  instructions: "You are a helpful agent",
});
console.log(`Created agent, agent ID : ${agent.id}`);

// Do something with your Agent!
// See samples here https://github.com/Azure/azure-sdk-for-js/tree/@azure/ai-projects_1.0.1/sdk/ai/ai-agents/samples
await project.agents.deleteAgent(agent.id);
console.log(`Deleted agent, agent ID: ${agent.id}`);

Hitelesített AzureOpenAI-ügyfél beszerzése

Előfordulhat, hogy az Azure AI Foundry-projektben egy vagy több OpenAI-modell van üzembe helyezve, amelyek támogatják a csevegés befejezését. Az alábbi kóddal lekérhet egy hitelesített AzureOpenAI-t az openai-csomagból , és végrehajthat egy csevegési befejezési hívást.

Futtassa az alábbi kódot. Itt feltételezzük, hogy deploymentName az (str) definiált. Ez egy AI-modell üzembe helyezési neve az öntödei projektben. Amint az a "Modellek + végpontok" lapon, a "Név" oszlopban látható.

Frissítse az api_version értéket a táblázat "Adatsík – következtetés" sorában található értékkel.

Lehetősége van arra is (hogy nem jelenik meg), hogy explicit módon megadja az Azure OpenAI-kapcsolat nevét az AI Foundry projektben, amelyet a inference.azureOpenAI metódus a következtetési végpont és a hitelesítési hitelesítő adatok lekérésére fog használni. Ha nincs jelen, a rendszer az alapértelmezett Azure OpenAI-kapcsolatot használja.

const client = await project.inference.azureOpenAI({
  // The API version should match the version of the Azure OpenAI resource.
  apiVersion: "2024-10-21",
});
const response = await client.chat.completions.create({
  model: deploymentName,
  messages: [{ role: "user", content: "How many feet are in a mile?" }],
});
console.log("response = ", JSON.stringify(response, null, 2));

További mintákért tekintse meg a csomagminták "következtetési" mappáját.

Központi telepítési műveletek

Az alábbi kód néhány üzembe helyezési műveletet mutat be, amelyek lehetővé teszik az AI-öntödei projektekben üzembe helyezett AI-modellek számbavételét. Ezek a modellek az AI Foundry Project "Modellek + végpontok" lapján láthatók. A teljes minták a csomagminták "deployment" mappájában találhatók.

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

const modelPublisher = process.env["MODEL_PUBLISHER"] || "<model publisher>";
console.log("List all deployments:");
const deployments: ModelDeployment[] = [];
const properties: Array<Record<string, string>> = [];

for await (const deployment of project.deployments.list()) {
  // Check if this is a ModelDeployment (has the required properties)
  if (
    deployment.type === "ModelDeployment" &&
    "modelName" in deployment &&
    "modelPublisher" in deployment &&
    "modelVersion" in deployment
  ) {
    deployments.push(deployment);
    properties.push({
      name: deployment.name,
      modelPublisher: deployment.modelPublisher,
      modelName: deployment.modelName,
    });
  }
}
console.log(`Retrieved deployments: ${JSON.stringify(properties, null, 2)}`);

// List all deployments by a specific model publisher (assuming we have one from the list)
console.log(`List all deployments by the model publisher '${modelPublisher}':`);
const filteredDeployments: ModelDeployment[] = [];
for await (const deployment of project.deployments.list({
  modelPublisher,
})) {
  // Check if this is a ModelDeployment
  if (
    deployment.type === "ModelDeployment" &&
    "modelName" in deployment &&
    "modelPublisher" in deployment &&
    "modelVersion" in deployment
  ) {
    filteredDeployments.push(deployment);
  }
}
console.log(
  `Retrieved ${filteredDeployments.length} deployments from model publisher '${modelPublisher}'`,
);

// Get a single deployment by name
if (deployments.length > 0) {
  const deploymentName = deployments[0].name;
  console.log(`Get a single deployment named '${deploymentName}':`);
  const singleDeployment = await project.deployments.get(deploymentName);
  console.log(`Retrieved deployment: ${JSON.stringify(singleDeployment, null, 2)}`);
}

Kapcsolatok műveletei

Az alábbi kód néhány kapcsolati műveletet mutat be, amelyek lehetővé teszik az AI-öntöjző projektekhez csatlakoztatott Azure-erőforrások számbavételét. Ezek a kapcsolatok a "Felügyeleti központban", az AI Foundry Project "Csatlakoztatott erőforrások" lapján láthatók. A teljes minták a csomagminták"kapcsolatok" mappájában találhatók.

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

// List the details of all the connections
const connections: Connection[] = [];
const connectionNames: string[] = [];
for await (const connection of project.connections.list()) {
  connections.push(connection);
  connectionNames.push(connection.name);
}
console.log(`Retrieved connections: ${connectionNames}`);

// Get the details of a connection, without credentials
const connectionName = connections[0].name;
const connection = await project.connections.get(connectionName);
console.log(`Retrieved connection ${JSON.stringify(connection, null, 2)}`);

const connectionWithCredentials = await project.connections.getWithCredentials(connectionName);
console.log(
  `Retrieved connection with credentials ${JSON.stringify(connectionWithCredentials, null, 2)}`,
);

// List all connections of a specific type
const azureAIConnections: Connection[] = [];
for await (const azureOpenAIConnection of project.connections.list({
  connectionType: "AzureOpenAI",
  defaultConnection: true,
})) {
  azureAIConnections.push(azureOpenAIConnection);
}
console.log(`Retrieved ${azureAIConnections.length} Azure OpenAI connections`);

// Get the details of a default connection
const defaultConnection = await project.connections.getDefault("AzureOpenAI", true);
console.log(`Retrieved default connection ${JSON.stringify(defaultConnection, null, 2)}`);

Adathalmaz-műveletek

Az alábbi kód néhány adathalmaz-műveletet mutat be. A teljes minták a csomagminták "datasets" mappájában találhatók.

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

const VERSION1 = "1.0";
const VERSION2 = "2.0";
const VERSION3 = "3.0";

// sample files to use in the demonstration
const sampleFolder = "sample_folder";
// Create a unique dataset name for this sample run
const datasetName = `sample-dataset-basic`;
console.log("Upload a single file and create a new Dataset to reference the file.");
console.log("Here we explicitly specify the dataset version.");

const dataset1 = await project.datasets.uploadFile(
  datasetName,
  VERSION1,
  path.join(__dirname, sampleFolder, "sample_file1.txt"),
);
console.log("Dataset1 created:", JSON.stringify(dataset1, null, 2));

const credential = project.datasets.getCredentials(dataset1.name, dataset1.version, {});
console.log("Credential for the dataset:", credential);
console.log(
  "Upload all files in a folder (including subfolders) to the existing Dataset to reference the folder.",
);
console.log("Here again we explicitly specify a new dataset version");
const dataset2 = await project.datasets.uploadFolder(
  datasetName,
  VERSION2,
  path.join(__dirname, sampleFolder),
);
console.log("Dataset2 created:", JSON.stringify(dataset2, null, 2));
console.log(
  "Upload a single file to the existing dataset, while letting the service increment the version",
);
const dataset3 = await project.datasets.uploadFile(
  datasetName,
  VERSION3,
  path.join(__dirname, sampleFolder, "sample_file2.txt"),
);
console.log("Dataset3 created:", JSON.stringify(dataset3, null, 2));

console.log("Get an existing Dataset version `1`:");
const datasetVersion1 = await project.datasets.get(datasetName, VERSION1);
console.log("Dataset version 1:", JSON.stringify(datasetVersion1, null, 2));
console.log(`Listing all versions of the Dataset named '${datasetName}':`);
const datasetVersions = await project.datasets.listVersions(datasetName);
for await (const version of datasetVersions) {
  console.log("List versions:", version);
}
console.log("List latest versions of all Datasets:");
const latestDatasets = project.datasets.list();
for await (const dataset of latestDatasets) {
  console.log("List datasets:", dataset);
}
// List the details of all the datasets
const datasets = project.datasets.listVersions(datasetName);
const allDatasets: DatasetVersionUnion[] = [];
for await (const dataset of datasets) {
  allDatasets.push(dataset);
}
console.log(`Retrieved ${allDatasets.length} datasets`);
console.log("Delete all Datasets created above:");
await project.datasets.delete(datasetName, VERSION1);
await project.datasets.delete(datasetName, VERSION2);
await project.datasets.delete(datasetName, dataset3.version);
console.log("All specified Datasets have been deleted.");

Indexelési műveletek

Az alábbi kód néhány indexelési műveletet mutat be. A teljes minták a csomagminták "indexek" mappájában találhatók.

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

const indexName = "sample-index";
const version = "1";
const azureAIConnectionConfig: AzureAISearchIndex = {
  name: indexName,
  type: "AzureSearch",
  version,
  indexName,
  connectionName: "sample-connection",
};

// Create a new Index
const newIndex = await project.indexes.createOrUpdate(indexName, version, azureAIConnectionConfig);
console.log("Created a new Index:", newIndex);
console.log(`Get an existing Index version '${version}':`);
const index = await project.indexes.get(indexName, version);
console.log(index);
console.log(`Listing all versions of the Index named '${indexName}':`);
const indexVersions = project.indexes.listVersions(indexName);
for await (const indexVersion of indexVersions) {
  console.log(indexVersion);
}
console.log("List all Indexes:");
const allIndexes = project.indexes.list();
for await (const i of allIndexes) {
  console.log("Index:", i);
}
console.log("Delete the Index versions created above:");
await project.indexes.delete(indexName, version);

Hibaelhárítás

Kivételek

A szolgáltatáshívásokat kezdeményező ügyfélmódszerek RestError a szolgáltatás nem sikeres HTTP-állapotkód-válaszához. A kivétel code a HTTP-válasz állapotkódját fogja tárolni. A kivétel error.message részletes üzenetet tartalmaz, amely hasznos lehet a probléma diagnosztizálásában:

import { isRestError } from "@azure/core-rest-pipeline";

try {
  const result = await project.connections.list();
} catch (e) {
  if (isRestError(e)) {
    console.log(`Status code: ${e.code}`);
    console.log(e.message);
  } else {
    console.error(e);
  }
}

Ha például helytelen hitelesítő adatokat ad meg:

Status code: 401 (Unauthorized)
Operation returned an invalid status 'Unauthorized'

Jelentéskészítési problémák

Az ügyfélkódtár problémáinak jelentéséhez vagy további funkciók kéréséhez nyisson meg egy GitHub-problémát, itt

Következő lépések

Tekintse meg a csomagmintákat mappát, amely teljes mértékben futtatható kódot tartalmaz.

Közreműködés

Ez a projekt üdvözli a hozzájárulásokat és javaslatokat. A legtöbb hozzájárulás megköveteli, hogy elfogadja a közreműködői licencszerződést (CLA), amely kimondja, hogy önnek joga van a hozzájárulás használatára, és valóban meg kell adnia nekünk a jogosultságokat a hozzájárulás használatára. A részletekért látogasson el ide https://cla.microsoft.com.

A lekéréses kérelem elküldésekor a CLA-robot automatikusan meghatározza, hogy meg kell-e adnia egy CLA-t, és megfelelően kell-e díszítenie a lekéréses kérelmet (például címkét, megjegyzést). Egyszerűen kövesse a robot utasításait. Ezt csak egyszer kell elvégeznie az összes adattárban a CLA használatával.

Ez a projekt a Microsoft nyílt forráskóddal kapcsolatos viselkedési szabályzata alapján működik. További információkért tekintse meg a magatartási kódex gyakori kérdéseit, vagy forduljon opencode@microsoft.com további kérdésekhez vagy megjegyzésekhez.