Installs into .claude/skills of the current project.
Are you the author of Azure Ai Projects Py?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/huytran1120-azure-ai-projects-py)
---
name: azure-ai-projects-py
description: "Build AI applications on Microsoft Foundry using the azure-ai-projects SDK."
risk: critical
source: community
date_added: "2026-02-27"
---
# Azure AI Projects Python SDK
## When to Use
Use for Microsoft Foundry project connections, model deployments, versioned agents, evaluation datasets and cloud evaluation workflows. Identify the installed SDK generation first; do not apply classic thread/run recipes to a v2 project client.
## Setup and version boundary
Use an isolated environment and the application’s locked, reviewed compatible `azure-ai-projects`, `azure-identity` and `openai` versions. Historical support files came from Microsoft’s pinned repository; see [UPSTREAM-NOTICE.md](UPSTREAM-NOTICE.md) and [UPSTREAM-LICENSE.txt](UPSTREAM-LICENSE.txt). Local corrections are documented there.
Set `AZURE_AI_PROJECT_ENDPOINT` to the exact authorized HTTPS project URL and `AZURE_AI_MODEL_DEPLOYMENT_NAME` to an actual deployment name, not an assumed model alias. Use the intended tenant/identity with least privilege; inspect the credential chain without printing credentials. Do not fetch connection secrets for a listing task.
The checked 2.0.0b4 source snapshot uses versioned agents, OpenAI conversations/responses, and `beta` namespaces for evaluators/memory/schedules. Classic agents belong to `azure-ai-agents`. Later versions can differ; consult the installed SDK and [Microsoft migration guide](https://learn.microsoft.com/en-us/azure/ai-foundry/agents/how-to/migrate).
## Example: create one explicitly requested versioned agent
```python
import os
from azure.identity import DefaultAzureCredential
from azure.ai.projects import AIProjectClient
from azure.ai.projects.models import PromptAgentDefinition
with DefaultAzureCredential() as credential:
with AIProjectClient(endpoint=os.environ["AZURE_AI_PROJECT_ENDPOINT"], credential=credential) as project:
agent = project.agents.create_version(
agent_name="requested-agent",
definition=PromptAgentDefinition(
model=os.environ["AZURE_AI_MODEL_DEPLOYMENT_NAME"],
instructions="Answer the user’s question using authorized information.",
),
)
with project.get_openai_client(timeout=60, max_retries=0) as openai:
response = openai.responses.create(
input="Hello",
extra_body={"agent_reference": {"type": "agent_reference", "name": agent.name, "version": agent.version}},
)
# Inspect authorized output; do not log private traces or credentials.
```
## Safe workflow
1. Establish the exact tenant/project, installed versions, requested resources and data classification.
2. Read deployment/connection metadata before selecting a model; do not auto-select the first vaguely matching deployment.
3. Enable only needed tools. Model tool calls are proposals: validate arguments, authorization, destinations and effects before execution. Remote MCP endpoints must be reachable from the cloud; localhost is not the user’s machine.
4. Upload only the selected approved files. Folder extension filters do not exclude secrets or enforce access rights. Persistent memory needs scoped tenant/user isolation, retention and deletion rules.
5. Bound request timeouts, polling, concurrency, rows and spend. If resource creation times out, reconcile its outcome before retrying. Delete only task-created resources specifically intended for cleanup.
## Batch evaluation helper
`scripts/run_batch_evaluation.py` uploads the complete selected JSONL file, creates an evaluation and a run, and may incur cloud/model charges. `--allow-paid` is an execution opt-in after the user has authorized this exact file, endpoint, evaluators, deployment and budget. It is not an estimate or spend enforcement mechanism.
```bash
python scripts/run_batch_evaluation.py --data approved.jsonl --evaluators coherence --deployment approved-deployment --max-rows 100 --max-bytes 1048576 --timeout-seconds 600 --allow-paid --output new-private-results.json
```
Input rows must have consistent schemas; agent mode uses sample outputs without mutating source records. Unknown evaluators or missing mapped fields fail before upload. Poll timeout does not cancel remote execution: inspect the printed evaluation/run IDs and cancel through the installed service’s documented API if needed. Local output is new-only and mode 0600. Evaluator names/schemas remain service-version dependent; inspect the registry before a live run.
## References
- [Agent operations](references/agents.md) and [tool boundaries](references/tools.md)
- [Evaluation](references/evaluation.md), [built-ins](references/built-in-evaluators.md), [custom evaluators](references/custom-evaluators.md)
- [Connections](references/connections.md), [deployments](references/deployments.md), [datasets/indexes](references/datasets-indexes.md)
- [Async patterns](references/async-patterns.md), [checked API snapshot](references/api-reference.md)
## Limitations
No local check proves live Azure availability, model quality, legal compliance or safe autonomous tool use. Evaluation scores are sampled, version-specific judgments; report failures, missing scores, sample count and judge configuration. Keyword checks are format checks, not compliance certification. JSON output must be parsed and schema-validated. Do not run cloud evaluation during documentation review.