Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Клиентская библиотека AI Projects обеспечивает простой доступ к ресурсам в проекте Azure AI Foundry. Он используется для следующих задач:
-
Создайте и запустите агенты с помощью
.agentsсвойства на клиенте. -
Получите клиент AzureOpenAI с помощью этого метода
.inference.azureOpenAI. -
Перечислите модели ИИ , развернутые в проекте Foundry,
.deploymentsс помощью операций. -
Перечислите подключенные ресурсы Azure в проекте Foundry с помощью
.connectionsопераций. -
Загрузите документы и создайте наборы данных , чтобы ссылаться на них с помощью
.datasetsопераций. -
Создание и перечисление индексов поиска с помощью
.indexesопераций. -
Включите трассировку OpenTelemetry с помощью
enable_telemetryэтой функции.
Документация по продукту | Образцы | Упаковка (npm) | Справочная документация | по APIИсходный код SDK
Оглавление
Начало работы
Предпосылка
Авторизация
-
Entra ID необходим для аутентификации клиента. Приложению требуется объект, реализующий интерфейс TokenCredential. Примеры кода здесь используют DefaultAzureCredential. Чтобы получить эту работу, вам потребуется:
- Роль
Contributor. На портале Azure можно назначить роль с помощью вкладки "Управление доступом (IAM)" ресурса проекта Azure AI. Подробнее о назначении ролей можно узнать здесь. - установленной Azure CLI.
- Вы вошли в учетную запись Azure, выполнив
az login. - Обратите внимание, что если у вас несколько подписок Azure, подписка, содержащая ресурс Проекта Azure AI, должна быть вашей подпиской по умолчанию. Запустите
az account list --output table, чтобы вывести список всех подписок и увидеть, какой из них используется по умолчанию. Запуститеaz account set --subscription "Your Subscription ID or Name", чтобы изменить подписку по умолчанию.
- Роль
Установите пакет
npm install @azure/ai-projects @azure/identity
Основные понятия
Создание и проверка подлинности клиента
Чтобы создать , AIProjectsClientможно endpoint получить из конечной точки. Ниже мы предположим, что переменная AZURE_AI_PROJECT_ENDPOINT_STRING окружения была определена для хранения этого значения:
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());
Клиент использует версию v1API, обратитесь к документации API , чтобы узнать больше о поддерживаемых функциях.
Примеры
Выполнение операций с Агентом
Свойство .agents на the AIProjectClient предоставляет вам доступ к аутентификации AgentsClient из пакета azure-ai-agents . Ниже мы покажем, как создать агента и удалить его. Чтобы узнать, что можно сделать с созданным пакетом agent , ознакомьтесь с множеством примеров , связанных с пакетом 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}`);
Получение аутентифицированного клиента AzureOpenAI
В проекте Azure AI Foundry может быть развернута одна или несколько моделей OpenAI, поддерживающих завершение чата. Используйте приведенный ниже код, чтобы получить аутентифицированный AzureOpenAI из пакета openai и выполнить вызов завершения чата.
Выполните приведенный ниже код. Здесь мы предполагаем, что deploymentName (str) определено. Это имя развертывания модели ИИ в проекте Foundry. Как показано во вкладке "Модели + конечные точки", в столбце "Название".
Обновите значение на значение, найденное api_version в строке "Плоскость данных - вывод" в этой таблице.
У вас также есть возможность (не показана) явно указать имя подключения Azure OpenAI в проекте AI Foundry, которое метод inference.azureOpenAI будет использовать для получения конечной точки вывода и учетных данных для проверки подлинности. Если он отсутствует, будет использоваться подключение Azure OpenAI по умолчанию.
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));
Дополнительные примеры см. в папке "inference" в примерах пакета .
Операции по развертыванию
В приведенном ниже коде показаны некоторые операции развертывания, которые позволяют перечислить модели ИИ, развернутые в проектах AI Foundry. Эти модели можно увидеть на вкладке «Модели + конечные точки» в вашем проекте AI Foundry. Полные примеры можно найти в папке "deployment" в образцах пакета.
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)}`);
}
Операции с подключениями
В приведенном ниже коде показаны некоторые операции подключения, которые позволяют перечислить ресурсы Azure, подключенные к проектам AI Foundry. Эти подключения можно увидеть в «Центре управления», во вкладке «Подключенные ресурсы» в вашем проекте AI Foundry. Полные примеры можно найти в папке connections в примерах пакетов.
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)}`);
Операции с набором данных
В приведенном ниже коде показаны некоторые операции с набором данных. Полные примеры можно найти в папке "datasets" в образцах пакета.
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.");
Операции с индексами
В приведенном ниже коде показаны некоторые операции с индексами. Полные образцы можно найти в папке "indexes" в образцах пакета.
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);
Устранение неполадок
Исключения
Клиентские методы, которые вызывают службы, вызывают RestError для ответа кода состояния HTTP без успешного выполнения из службы.
code исключения будет содержать код состояния HTTP-ответа.
error.message исключения содержит подробное сообщение, которое может оказаться полезным при диагностике проблемы:
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);
}
}
Например, если указать неправильные учетные данные:
Status code: 401 (Unauthorized)
Operation returned an invalid status 'Unauthorized'
Создание отчетов о проблемах
Чтобы сообщить о проблемах с клиентской библиотекой или запросить дополнительные функции, откройте проблему GitHub здесь
Дальнейшие шаги
Просмотрите папку примеров пакетов , содержащую полностью запущенный код.
Вклад
Этот проект приветствует взносы и предложения. Большинство вкладов требуют, чтобы вы согласились с соглашением о лицензии участника (CLA), заявив, что у вас есть право, и на самом деле, предоставьте нам права на использование вашего вклада. Для получения подробных сведений посетите веб-страницу https://cla.microsoft.com.
При отправке запроса на вытягивание бот CLA автоматически определяет, нужно ли предоставить соглашение об уровне обслуживания и украсить pr соответствующим образом (например, метка, комментарий). Просто следуйте инструкциям, предоставленным ботом. Это необходимо сделать только один раз во всех репозиториях с помощью нашего CLA.
В рамках этого проекта действуют правила поведения в отношении продуктов с открытым исходным кодом Майкрософт. Дополнительные сведения см. в разделе "Часто задаваемые вопросы о поведении" или [email protected] с дополнительными вопросами или комментариями.
Azure SDK for JavaScript