azure-ai-projects-ts — скилл для Claude Code: Azure AI Foundry
Подсказывает агенту, как работать с Azure AI Projects SDK для JavaScript: агенты, подключения, деплойменты, датасеты, индексы и оценки.
npx skills add microsoft/skills --skill azure-ai-projects-ts -a claude-codeЧто делает azure-ai-projects-ts
Скилл от Microsoft описывает работу с пакетом @azure/ai-projects — высокоуровневым SDK для проектов Azure AI Foundry. Внутри — готовые примеры кода: создание клиента AIProjectClient, аутентификация через DefaultAzureCredential или ManagedIdentityCredential, обращение к группам операций client.agents, client.connections, client.deployments, client.datasets, client.indexes, client.evaluators и client.memoryStores.
Отдельный блок — про агентов с инструментами: Code Interpreter, File Search, Web Search, Azure AI Search, функции и MCP-серверы. Показано, как запустить агента через OpenAI-клиент, полученный методом getOpenAIClient(), и как потом удалить разговор и версию агента. Ещё есть загрузка датасетов файлом или папкой, создание поисковых индексов и список деплойментов с фильтром по издателю.
Для работы нужны переменные окружения: AZURE_AI_PROJECT_ENDPOINT с адресом проекта и MODEL_DEPLOYMENT_NAME. Если DefaultAzureCredential используется в продакшене, понадобится ещё AZURE_TOKEN_CREDENTIALS=prod. Пакеты ставятся через npm install @azure/ai-projects @azure/identity, для трассировки отдельно — @azure/monitor-opentelemetry и @opentelemetry/api. Без endpoint и рабочей учётной записи Azure примеры из скилла не запустятся, так что сначала проверьте доступ к проекту Foundry.
Какие задачи решает
- создать агента в Azure AI Foundry из кода на TypeScript
- подключить к агенту поиск по файлам или Azure AI Search
- загрузить датасет файлом или целой папкой
- получить OpenAI-клиент для проекта Foundry
- вывести список деплойментов модели с фильтром по издателю
Примеры запросов агенту
- покажи, как создать агента через @azure/ai-projects с инструментом code_interpreter
- настрой аутентификацию AIProjectClient через DefaultAzureCredential
- загрузи ./data/training.jsonl как датасет my-dataset версии 1.0
Как установить azure-ai-projects-ts
1Через Skills CLI (Vercel)
npx skills add microsoft/skills --skill azure-ai-projects-ts -a claude-code2Вручную: положить файлы
~/.claude/skills/azure-ai-projects-ts/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/azure-ai-projects-ts/
Вручную: положить файлы
.agents/skills/azure-ai-projects-ts/SKILL.mdДля всех проектов — ~/.agents/skills/
Вручную: положить файлы
.cursor/skills/azure-ai-projects-ts/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install microsoft/skills azure-ai-projects-ts2Вручную: положить файлы
.github/skills/azure-ai-projects-ts/SKILL.mdКомандой платформы
gemini skills install https://github.com/microsoft/skills --path .github/plugins/azure-sdk-typescript/skills/azure-ai-projects-tsВручную: положить файлы
.devin/skills/azure-ai-projects-ts/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Claude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Из того же набора64
Весь набор →Похожие
Рядом в теме «ИИ и ML»
Всё по теме «ИИ и ML» →Вопросы о azure-ai-projects-ts
Как установить azure-ai-projects-ts в Claude?
Выполните npx skills add microsoft/skills --skill azure-ai-projects-ts -a claude-code. Скилл появится по пути ~/.claude/skills/azure-ai-projects-ts/SKILL.md.
Что делает azure-ai-projects-ts?
Даёт агенту справочник по Azure AI Projects SDK для JavaScript: создание агентов, работа с подключениями, деплойментами, датасетами, индексами и оценками.
Что нужно для работы скилла?
Переменная AZURE_AI_PROJECT_ENDPOINT с адресом проекта Foundry и MODEL_DEPLOYMENT_NAME. Пакеты @azure/ai-projects и @azure/identity ставятся через npm.
Исходный текст
SKILL.md · MIT
---
name: azure-ai-projects-ts
description: Build AI applications using Azure AI Projects SDK for JavaScript (@azure/ai-projects). Use when working with Foundry project clients, agents, connections, deployments, datasets, indexes, evaluations, or getting OpenAI clients.
license: MIT
metadata:
author: Microsoft
version: "1.0.0"
package: '@azure/ai-projects'
---
# Azure AI Projects SDK for TypeScript
High-level SDK for Azure AI Foundry projects with agents, connections, deployments, and evaluations.
## Installation
```bash
npm install @azure/ai-projects @azure/identity
```
For tracing:
```bash
npm install @azure/monitor-opentelemetry @opentelemetry/api
```
## Environment Variables
```bash
AZURE_AI_PROJECT_ENDPOINT=https://<resource>.services.ai.azure.com/api/projects/<project>
MODEL_DEPLOYMENT_NAME=gpt-4o
AZURE_TOKEN_CREDENTIALS=prod # Required only if DefaultAzureCredential is used in production
```
## Authentication
```typescript
import { AIProjectClient } from "@azure/ai-projects";
import { DefaultAzureCredential, ManagedIdentityCredential } from "@azure/identity";
// Local dev: DefaultAzureCredential. Production: set AZURE_TOKEN_CREDENTIALS=prod or AZURE_TOKEN_CREDENTIALS=<specific_credential>
const credential = new DefaultAzureCredential({requiredEnvVars: ["AZURE_TOKEN_CREDENTIALS"]});
// Or use a specific credential directly in production:
// See 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
);
```
## Operation Groups
| Group | Purpose |
|-------|---------|
| `client.agents` | Create and manage AI agents |
| `client.connections` | List connected Azure resources |
| `client.deployments` | List model deployments |
| `client.datasets` | Upload and manage datasets |
| `client.indexes` | Create and manage search indexes |
| `client.evaluators` | Manage evaluation metrics |
| `client.memoryStores` | Manage agent memory |
## Getting OpenAI Client
```typescript
const openAIClient = await client.getOpenAIClient();
// Use for responses
const response = await openAIClient.responses.create({
model: "gpt-4o",
input: "What is the capital of France?"
});
// Use for conversations
const conversation = await openAIClient.conversations.create({
items: [{ type: "message", role: "user", content: "Hello!" }]
});
```
## Agents
### Create Agent
```typescript
const agent = await client.agents.createVersion("my-agent", {
kind: "prompt",
model: "gpt-4o",
instructions: "You are a helpful assistant."
});
```
### Agent with Tools
```typescript
// 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"
}]
});
```
### Run Agent
```typescript
const openAIClient = await client.getOpenAIClient();
// Create conversation
const conversation = await openAIClient.conversations.create({
items: [{ type: "message", role: "user", content: "Hello!" }]
});
// Generate response using agent
const response = await openAIClient.responses.create(
{ conversation: conversation.id },
{ body: { agent: { name: agent.name, type: "agent_reference" } } }
);
// Cleanup
await openAIClient.conversations.delete(conversation.id);
await client.agents.deleteVersion(agent.name, agent.version);
```
## Connections
```typescript
// List all connections
for await (const conn of client.connections.list()) {
console.log(conn.name, conn.type);
}
// Get connection by name
const conn = await client.connections.get("my-connection");
// Get connection with credentials
const connWithCreds = await client.connections.getWithCredentials("my-connection");
// Get default connection by type
const defaultAzureOpenAI = await client.connections.getDefault("AzureOpenAI", true);
```
## Deployments
```typescript
// List all deployments
for await (const deployment of client.deployments.list()) {
if (deployment.type === "ModelDeployment") {
console.log(deployment.name, deployment.modelName);
}
}
// Filter by publisher
for await (const d of client.deployments.list({ modelPublisher: "OpenAI" })) {
console.log(d.name);
}
// Get specific deployment
const deployment = await client.deployments.get("gpt-4o");
```
## Datasets
```typescript
// Upload single file
const dataset = await client.datasets.uploadFile(
"my-dataset",
"1.0",
"./data/training.jsonl"
);
// Upload folder
const dataset = await client.datasets.uploadFolder(
"my-dataset",
"2.0",
"./data/documents/"
);
// Get dataset
const ds = await client.datasets.get("my-dataset", "1.0");
// List versions
for await (const version of client.datasets.listVersions("my-dataset")) {
console.log(version);
}
// Delete
await client.datasets.delete("my-dataset", "1.0");
```
## Indexes
```typescript
import { AzureAISearchIndex } from "@azure/ai-projects";
const indexConfig: AzureAISearchIndex = {
name: "my-index",
type: "AzureSearch",
version: "1",
indexName: "my-index",
connectionName: "search-connection"
};
// Create index
const index = await client.indexes.createOrUpdate("my-index", "1", indexConfig);
// List indexes
for await (const idx of client.indexes.list()) {
console.log(idx.name);
}
// Delete
await client.indexes.delete("my-index", "1");
```
## Key Types
```typescript
import {
AIProjectClient,
AIProjectClientOptionalParams,
Connection,
ModelDeployment,
DatasetVersionUnion,
AzureAISearchIndex
} from "@azure/ai-projects";
```
## Best Practices
1. **Use getOpenAIClient()** - For responses, conversations, files, and vector stores
2. **Version your agents** - Use `createVersion` for reproducible agent definitions
3. **Clean up resources** - Delete agents, conversations when done
4. **Use connections** - Get credentials from project connections, don't hardcode
5. **Filter deployments** - Use `modelPublisher` filter to find specific models
© Microsoft · MIT · microsoft/skills