{"id":"546a0c2f-bfc1-40e4-b194-fba5bbbc7b27","shortId":"7Xy5Jg","kind":"skill","title":"azure-ai-projects-py","tagline":"Build AI applications on Microsoft Foundry using the azure-ai-projects SDK.","description":"# Azure AI Projects Python SDK (Foundry SDK)\n\nBuild AI applications on Microsoft Foundry using the `azure-ai-projects` SDK.\n\n## Installation\n\n```bash\npip install azure-ai-projects azure-identity\n```\n\n## Environment Variables\n\n```bash\nAZURE_AI_PROJECT_ENDPOINT=\"https://<resource>.services.ai.azure.com/api/projects/<project>\"\nAZURE_AI_MODEL_DEPLOYMENT_NAME=\"gpt-4o-mini\"\n```\n\n## Authentication\n\n```python\nimport os\nfrom azure.identity import DefaultAzureCredential\nfrom azure.ai.projects import AIProjectClient\n\ncredential = DefaultAzureCredential()\nclient = AIProjectClient(\n    endpoint=os.environ[\"AZURE_AI_PROJECT_ENDPOINT\"],\n    credential=credential,\n)\n```\n\n## Client Operations Overview\n\n| Operation | Access | Purpose |\n|-----------|--------|---------|\n| `client.agents` | `.agents.*` | Agent CRUD, versions, threads, runs |\n| `client.connections` | `.connections.*` | List/get project connections |\n| `client.deployments` | `.deployments.*` | List model deployments |\n| `client.datasets` | `.datasets.*` | Dataset management |\n| `client.indexes` | `.indexes.*` | Index management |\n| `client.evaluations` | `.evaluations.*` | Run evaluations |\n| `client.red_teams` | `.red_teams.*` | Red team operations |\n\n## Two Client Approaches\n\n### 1. AIProjectClient (Native Foundry)\n\n```python\nfrom azure.ai.projects import AIProjectClient\n\nclient = AIProjectClient(\n    endpoint=os.environ[\"AZURE_AI_PROJECT_ENDPOINT\"],\n    credential=DefaultAzureCredential(),\n)\n\n# Use Foundry-native operations\nagent = client.agents.create_agent(\n    model=os.environ[\"AZURE_AI_MODEL_DEPLOYMENT_NAME\"],\n    name=\"my-agent\",\n    instructions=\"You are helpful.\",\n)\n```\n\n### 2. OpenAI-Compatible Client\n\n```python\n# Get OpenAI-compatible client from project\nopenai_client = client.get_openai_client()\n\n# Use standard OpenAI API\nresponse = openai_client.chat.completions.create(\n    model=os.environ[\"AZURE_AI_MODEL_DEPLOYMENT_NAME\"],\n    messages=[{\"role\": \"user\", \"content\": \"Hello!\"}],\n)\n```\n\n## Agent Operations\n\n### Create Agent (Basic)\n\n```python\nagent = client.agents.create_agent(\n    model=os.environ[\"AZURE_AI_MODEL_DEPLOYMENT_NAME\"],\n    name=\"my-agent\",\n    instructions=\"You are a helpful assistant.\",\n)\n```\n\n### Create Agent with Tools\n\n```python\nfrom azure.ai.agents import CodeInterpreterTool, FileSearchTool\n\nagent = client.agents.create_agent(\n    model=os.environ[\"AZURE_AI_MODEL_DEPLOYMENT_NAME\"],\n    name=\"tool-agent\",\n    instructions=\"You can execute code and search files.\",\n    tools=[CodeInterpreterTool(), FileSearchTool()],\n)\n```\n\n### Versioned Agents with PromptAgentDefinition\n\n```python\nfrom azure.ai.projects.models import PromptAgentDefinition\n\n# Create a versioned agent\nagent_version = client.agents.create_version(\n    agent_name=\"customer-support-agent\",\n    definition=PromptAgentDefinition(\n        model=os.environ[\"AZURE_AI_MODEL_DEPLOYMENT_NAME\"],\n        instructions=\"You are a customer support specialist.\",\n        tools=[],  # Add tools as needed\n    ),\n    version_label=\"v1.0\",\n)\n```\n\nSee references/agents.md for detailed agent patterns.\n\n## Tools Overview\n\n| Tool | Class | Use Case |\n|------|-------|----------|\n| Code Interpreter | `CodeInterpreterTool` | Execute Python, generate files |\n| File Search | `FileSearchTool` | RAG over uploaded documents |\n| Bing Grounding | `BingGroundingTool` | Web search (requires connection) |\n| Azure AI Search | `AzureAISearchTool` | Search your indexes |\n| Function Calling | `FunctionTool` | Call your Python functions |\n| OpenAPI | `OpenApiTool` | Call REST APIs |\n| MCP | `McpTool` | Model Context Protocol servers |\n| Memory Search | `MemorySearchTool` | Search agent memory stores |\n| SharePoint | `SharepointGroundingTool` | Search SharePoint content |\n\nSee references/tools.md for all tool patterns.\n\n## Thread and Message Flow\n\n```python\n# 1. Create thread\nthread = client.agents.threads.create()\n\n# 2. Add message\nclient.agents.messages.create(\n    thread_id=thread.id,\n    role=\"user\",\n    content=\"What's the weather like?\",\n)\n\n# 3. Create and process run\nrun = client.agents.runs.create_and_process(\n    thread_id=thread.id,\n    agent_id=agent.id,\n)\n\n# 4. Get response\nif run.status == \"completed\":\n    messages = client.agents.messages.list(thread_id=thread.id)\n    for msg in messages:\n        if msg.role == \"assistant\":\n            print(msg.content[0].text.value)\n```\n\n## Connections\n\n```python\n# List all connections\nconnections = client.connections.list()\nfor conn in connections:\n    print(f\"{conn.name}: {conn.connection_type}\")\n\n# Get specific connection\nconnection = client.connections.get(connection_name=\"my-search-connection\")\n```\n\nSee references/connections.md for connection patterns.\n\n## Deployments\n\n```python\n# List available model deployments\ndeployments = client.deployments.list()\nfor deployment in deployments:\n    print(f\"{deployment.name}: {deployment.model}\")\n```\n\nSee references/deployments.md for deployment patterns.\n\n## Datasets and Indexes\n\n```python\n# List datasets\ndatasets = client.datasets.list()\n\n# List indexes\nindexes = client.indexes.list()\n```\n\nSee references/datasets-indexes.md for data operations.\n\n## Evaluation\n\n```python\n# Using OpenAI client for evals\nopenai_client = client.get_openai_client()\n\n# Create evaluation with built-in evaluators\neval_run = openai_client.evals.runs.create(\n    eval_id=\"my-eval\",\n    name=\"quality-check\",\n    data_source={\n        \"type\": \"custom\",\n        \"item_references\": [{\"item_id\": \"test-1\"}],\n    },\n    testing_criteria=[\n        {\"type\": \"fluency\"},\n        {\"type\": \"task_adherence\"},\n    ],\n)\n```\n\nSee references/evaluation.md for evaluation patterns.\n\n## Async Client\n\n```python\nfrom azure.ai.projects.aio import AIProjectClient\n\nasync with AIProjectClient(\n    endpoint=os.environ[\"AZURE_AI_PROJECT_ENDPOINT\"],\n    credential=DefaultAzureCredential(),\n) as client:\n    agent = await client.agents.create_agent(...)\n    # ... async operations\n```\n\nSee references/async-patterns.md for async patterns.\n\n## Memory Stores\n\n```python\n# Create memory store for agent\nmemory_store = client.agents.create_memory_store(\n    name=\"conversation-memory\",\n)\n\n# Attach to agent for persistent memory\nagent = client.agents.create_agent(\n    model=os.environ[\"AZURE_AI_MODEL_DEPLOYMENT_NAME\"],\n    name=\"memory-agent\",\n    tools=[MemorySearchTool()],\n    tool_resources={\"memory\": {\"store_ids\": [memory_store.id]}},\n)\n```\n\n## Best Practices\n\n1. **Use context managers** for async client: `async with AIProjectClient(...) as client:`\n2. **Clean up agents** when done: `client.agents.delete_agent(agent.id)`\n3. **Use `create_and_process`** for simple runs, **streaming** for real-time UX\n4. **Use versioned agents** for production deployments\n5. **Prefer connections** for external service integration (AI Search, Bing, etc.)\n\n## SDK Comparison\n\n| Feature | `azure-ai-projects` | `azure-ai-agents` |\n|---------|---------------------|-------------------|\n| Level | High-level (Foundry) | Low-level (Agents) |\n| Client | `AIProjectClient` | `AgentsClient` |\n| Versioning | `create_version()` | Not available |\n| Connections | Yes | No |\n| Deployments | Yes | No |\n| Datasets/Indexes | Yes | No |\n| Evaluation | Via OpenAI client | No |\n| When to use | Full Foundry integration | Standalone agent apps |\n\n## Reference Files\n\n- references/agents.md: Agent operations with PromptAgentDefinition\n- references/tools.md: All agent tools with examples\n- references/evaluation.md: Evaluation operations overview\n- references/built-in-evaluators.md: Complete built-in evaluator reference\n- references/custom-evaluators.md: Code and prompt-based evaluator patterns\n- references/connections.md: Connection operations\n- references/deployments.md: Deployment enumeration\n- references/datasets-indexes.md: Dataset and index operations\n- references/async-patterns.md: Async client usage\n- references/api-reference.md: Complete API reference for all 373 SDK exports (v2.0.0b4)\n- scripts/run_batch_evaluation.py: CLI tool for batch evaluations\n\n## When to Use\nThis skill is applicable to execute the workflow or actions described in the overview.\n\n## Limitations\n- Use this skill only when the task clearly matches the scope described above.\n- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.\n- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.","tags":["azure","projects","antigravity","awesome","skills","sickn33","agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding","ai-workflows"],"capabilities":["skill","source-sickn33","skill-azure-ai-projects-py","topic-agent-skills","topic-agentic-skills","topic-ai-agent-skills","topic-ai-agents","topic-ai-coding","topic-ai-workflows","topic-antigravity","topic-antigravity-skills","topic-claude-code","topic-claude-code-skills","topic-codex-cli","topic-codex-skills"],"categories":["antigravity-awesome-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/sickn33/antigravity-awesome-skills/azure-ai-projects-py","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add sickn33/antigravity-awesome-skills","source_repo":"https://github.com/sickn33/antigravity-awesome-skills","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 34964 github stars · SKILL.md body (8,404 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-25T00:50:31.412Z","embedding":null,"createdAt":"2026-04-18T21:31:59.414Z","updatedAt":"2026-04-25T00:50:31.412Z","lastSeenAt":"2026-04-25T00:50:31.412Z","tsv":"'-1':572 '/api/projects/':59 '0':460 '1':138,405,663 '2':180,410,675 '3':425,684 '373':820 '4':440,698 '4o':67 '5':705 'access':97 'action':842 'add':317,411 'adher':579 'agent':100,101,162,164,175,216,219,222,224,235,243,252,254,265,278,289,290,294,299,328,386,437,605,608,623,635,639,641,652,678,682,701,726,735,765,770,776 'agent.id':439,683 'agentscli':738 'ai':3,7,16,20,27,36,45,54,61,88,152,168,207,228,258,305,358,598,645,712,721,725 'aiprojectcli':80,84,139,146,148,591,594,672,737 'api':201,375,816 'app':766 'applic':8,28,836 'approach':137 'ask':880 'assist':241,457 'async':585,592,609,614,668,670,811 'attach':633 'authent':69 'avail':497,743 'await':606 'azur':2,15,19,35,44,48,53,60,87,151,167,206,227,257,304,357,597,644,720,724 'azure-ai-ag':723 'azure-ai-project':14,34,43,719 'azure-ai-projects-pi':1 'azure-ident':47 'azure.ai.agents':248 'azure.ai.projects':78,144 'azure.ai.projects.aio':589 'azure.ai.projects.models':283 'azure.identity':74 'azureaisearchtool':360 'base':796 'bash':40,52 'basic':220 'batch':828 'best':661 'bing':350,714 'binggroundingtool':352 'boundari':888 'build':6,26 'built':548,787 'built-in':547,786 'call':365,367,373 'case':335 'check':562 'clarif':882 'class':333 'clean':676 'clear':855 'cli':825 'client':83,93,136,147,184,190,194,197,536,540,543,586,604,669,674,736,756,812 'client.agents':99 'client.agents.create':163,223,253,292,607,626,640 'client.agents.delete':681 'client.agents.messages.create':413 'client.agents.messages.list':447 'client.agents.runs.create':431 'client.agents.threads.create':409 'client.connections':106 'client.connections.get':482 'client.connections.list':468 'client.datasets':116 'client.datasets.list':522 'client.deployments':111 'client.deployments.list':501 'client.evaluations':124 'client.get':195,541 'client.indexes':120 'client.indexes.list':526 'client.red':128 'code':270,336,792 'codeinterpretertool':250,275,338 'comparison':717 'compat':183,189 'complet':445,785,815 'conn':470 'conn.connection':476 'conn.name':475 'connect':107,110,356,462,466,467,472,480,481,483,488,492,707,744,800 'content':214,393,419 'context':379,665 'convers':631 'conversation-memori':630 'creat':218,242,286,406,426,544,619,686,740 'credenti':81,91,92,155,601 'criteria':574,891 'crud':102 'custom':297,313,566 'customer-support-ag':296 'data':530,563 'dataset':117,118,515,520,521,806 'datasets/indexes':750 'defaultazurecredenti':76,82,156,602 'definit':300 'deploy':63,112,115,170,209,230,260,307,494,499,500,503,505,513,647,704,747,803 'deployment.model':509 'deployment.name':508 'describ':843,859 'detail':327 'document':349 'done':680 'endpoint':56,85,90,149,154,595,600 'enumer':804 'environ':50,871 'environment-specif':870 'etc':715 'eval':538,551,554,558 'evalu':125,127,532,545,550,583,753,781,789,797,829 'exampl':779 'execut':269,339,838 'expert':876 'export':822 'extern':709 'f':474,507 'featur':718 'file':273,342,343,768 'filesearchtool':251,276,345 'flow':403 'fluenci':576 'foundri':11,24,31,141,159,731,762 'foundry-n':158 'full':761 'function':364,370 'functiontool':366 'generat':341 'get':186,441,478 'gpt':66 'gpt-4o-mini':65 'ground':351 'hello':215 'help':179,240 'high':729 'high-level':728 'id':415,435,438,449,555,570,659 'ident':49 'import':71,75,79,145,249,284,590 'index':121,122,363,517,524,525,808 'input':885 'instal':39,42 'instruct':176,236,266,309 'integr':711,763 'interpret':337 'item':567,569 'label':322 'level':727,730,734 'like':424 'limit':847 'list':113,464,496,519,523 'list/get':108 'low':733 'low-level':732 'manag':119,123,666 'match':856 'mcp':376 'mcptool':377 'memori':382,387,616,620,624,627,632,638,651,657 'memory-ag':650 'memory_store.id':660 'memorysearchtool':384,654 'messag':211,402,412,446,454 'microsoft':10,30 'mini':68 'miss':893 'model':62,114,165,169,204,208,225,229,255,259,302,306,378,498,642,646 'msg':452 'msg.content':459 'msg.role':456 'my-ag':173,233 'my-ev':556 'my-search-connect':485 'name':64,171,172,210,231,232,261,262,295,308,484,559,629,648,649 'nativ':140,160 'need':320 'openai':182,188,193,196,200,535,539,542,755 'openai-compat':181,187 'openai_client.chat.completions.create':203 'openai_client.evals.runs.create':553 'openapi':371 'openapitool':372 'oper':94,96,134,161,217,531,610,771,782,801,809 'os':72 'os.environ':86,150,166,205,226,256,303,596,643 'output':865 'overview':95,331,783,846 'pattern':329,399,493,514,584,615,798 'permiss':886 'persist':637 'pip':41 'practic':662 'prefer':706 'print':458,473,506 'process':428,433,688 'product':703 'project':4,17,21,37,46,55,89,109,153,192,599,722 'prompt':795 'prompt-bas':794 'promptagentdefinit':280,285,301,773 'protocol':380 'purpos':98 'py':5 'python':22,70,142,185,221,246,281,340,369,404,463,495,518,533,587,618 'qualiti':561 'quality-check':560 'rag':346 'real':695 'real-tim':694 'red':130,132 'refer':568,767,790,817 'references/agents.md':325,769 'references/api-reference.md':814 'references/async-patterns.md':612,810 'references/built-in-evaluators.md':784 'references/connections.md':490,799 'references/custom-evaluators.md':791 'references/datasets-indexes.md':528,805 'references/deployments.md':511,802 'references/evaluation.md':581,780 'references/tools.md':395,774 'requir':355,884 'resourc':656 'respons':202,442 'rest':374 'review':877 'role':212,417 'run':105,126,429,430,552,691 'run.status':444 'safeti':887 'scope':858 'scripts/run_batch_evaluation.py':824 'sdk':18,23,25,38,716,821 'search':272,344,354,359,361,383,385,391,487,713 'see':324,394,489,510,527,580,611 'server':381 'servic':710 'services.ai.azure.com':58 'services.ai.azure.com/api/projects/':57 'sharepoint':389,392 'sharepointgroundingtool':390 'simpl':690 'skill':834,850 'skill-azure-ai-projects-py' 'sourc':564 'source-sickn33' 'specialist':315 'specif':479,872 'standalon':764 'standard':199 'stop':878 'store':388,617,621,625,628,658 'stream':692 'substitut':868 'success':890 'support':298,314 'task':578,854 'team':129,131,133 'test':571,573,874 'text.value':461 'thread':104,400,407,408,414,434,448 'thread.id':416,436,450 'time':696 'tool':245,264,274,316,318,330,332,398,653,655,777,826 'tool-ag':263 'topic-agent-skills' 'topic-agentic-skills' 'topic-ai-agent-skills' 'topic-ai-agents' 'topic-ai-coding' 'topic-ai-workflows' 'topic-antigravity' 'topic-antigravity-skills' 'topic-claude-code' 'topic-claude-code-skills' 'topic-codex-cli' 'topic-codex-skills' 'treat':863 'two':135 'type':477,565,575,577 'upload':348 'usag':813 'use':12,32,157,198,334,534,664,685,699,760,832,848 'user':213,418 'ux':697 'v1.0':323 'v2.0.0b4':823 'valid':873 'variabl':51 'version':103,277,288,291,293,321,700,739,741 'via':754 'weather':423 'web':353 'workflow':840 'yes':745,748,751","prices":[{"id":"da27b0bf-ec66-4dca-a4bb-9433d61f99b4","listingId":"546a0c2f-bfc1-40e4-b194-fba5bbbc7b27","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"sickn33","category":"antigravity-awesome-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T21:31:59.414Z"}],"sources":[{"listingId":"546a0c2f-bfc1-40e4-b194-fba5bbbc7b27","source":"github","sourceId":"sickn33/antigravity-awesome-skills/azure-ai-projects-py","sourceUrl":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/azure-ai-projects-py","isPrimary":false,"firstSeenAt":"2026-04-18T21:31:59.414Z","lastSeenAt":"2026-04-25T00:50:31.412Z"}],"details":{"listingId":"546a0c2f-bfc1-40e4-b194-fba5bbbc7b27","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"sickn33","slug":"azure-ai-projects-py","github":{"repo":"sickn33/antigravity-awesome-skills","stars":34964,"topics":["agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding","ai-workflows","antigravity","antigravity-skills","claude-code","claude-code-skills","codex-cli","codex-skills","cursor","cursor-skills","developer-tools","gemini-cli","gemini-skills","kiro","mcp","skill-library"],"license":"mit","html_url":"https://github.com/sickn33/antigravity-awesome-skills","pushed_at":"2026-04-24T06:41:17Z","description":"Installable GitHub library of 1,400+ agentic skills for Claude Code, Cursor, Codex CLI, Gemini CLI, Antigravity, and more. Includes installer CLI, bundles, workflows, and official/community skill collections.","skill_md_sha":"0ed3aa6f84954122deb49e4176319570fa41bd43","skill_md_path":"skills/azure-ai-projects-py/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/azure-ai-projects-py"},"layout":"multi","source":"github","category":"antigravity-awesome-skills","frontmatter":{"name":"azure-ai-projects-py","description":"Build AI applications on Microsoft Foundry using the azure-ai-projects SDK."},"skills_sh_url":"https://skills.sh/sickn33/antigravity-awesome-skills/azure-ai-projects-py"},"updatedAt":"2026-04-25T00:50:31.412Z"}}