{
  "schemaVersion": "1.0",
  "item": {
    "slug": "azure-ai-projects-py",
    "name": "Azure Ai Projects - Microsoft Foundry SDKs",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/thegovind/azure-ai-projects-py",
    "canonicalUrl": "https://clawhub.ai/thegovind/azure-ai-projects-py",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/azure-ai-projects-py",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=azure-ai-projects-py",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "references/acceptance-criteria.md",
      "references/agents.md",
      "references/async-patterns.md",
      "references/connections.md",
      "references/datasets-indexes.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/azure-ai-projects-py"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/azure-ai-projects-py",
    "agentPageUrl": "https://openagent3.xyz/skills/azure-ai-projects-py/agent",
    "manifestUrl": "https://openagent3.xyz/skills/azure-ai-projects-py/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/azure-ai-projects-py/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Azure AI Projects Python SDK (Foundry SDK)",
        "body": "Build AI applications on Azure AI Foundry using the azure-ai-projects SDK."
      },
      {
        "title": "Installation",
        "body": "pip install azure-ai-projects azure-identity"
      },
      {
        "title": "Environment Variables",
        "body": "AZURE_AI_PROJECT_ENDPOINT=\"https://<resource>.services.ai.azure.com/api/projects/<project>\"\nAZURE_AI_MODEL_DEPLOYMENT_NAME=\"gpt-4o-mini\""
      },
      {
        "title": "Authentication",
        "body": "import 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)"
      },
      {
        "title": "Client Operations Overview",
        "body": "OperationAccessPurposeclient.agents.agents.*Agent CRUD, versions, threads, runsclient.connections.connections.*List/get project connectionsclient.deployments.deployments.*List model deploymentsclient.datasets.datasets.*Dataset managementclient.indexes.indexes.*Index managementclient.evaluations.evaluations.*Run evaluationsclient.red_teams.red_teams.*Red team operations"
      },
      {
        "title": "1. AIProjectClient (Native Foundry)",
        "body": "from 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)"
      },
      {
        "title": "2. OpenAI-Compatible Client",
        "body": "# 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)"
      },
      {
        "title": "Create Agent (Basic)",
        "body": "agent = 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)"
      },
      {
        "title": "Create Agent with Tools",
        "body": "from 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)"
      },
      {
        "title": "Versioned Agents with PromptAgentDefinition",
        "body": "from 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\nSee references/agents.md for detailed agent patterns."
      },
      {
        "title": "Tools Overview",
        "body": "ToolClassUse CaseCode InterpreterCodeInterpreterToolExecute Python, generate filesFile SearchFileSearchToolRAG over uploaded documentsBing GroundingBingGroundingToolWeb search (requires connection)Azure AI SearchAzureAISearchToolSearch your indexesFunction CallingFunctionToolCall your Python functionsOpenAPIOpenApiToolCall REST APIsMCPMcpToolModel Context Protocol serversMemory SearchMemorySearchToolSearch agent memory storesSharePointSharepointGroundingToolSearch SharePoint content\n\nSee references/tools.md for all tool patterns."
      },
      {
        "title": "Thread and Message Flow",
        "body": "# 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)"
      },
      {
        "title": "Connections",
        "body": "# 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\nSee references/connections.md for connection patterns."
      },
      {
        "title": "Deployments",
        "body": "# List available model deployments\ndeployments = client.deployments.list()\nfor deployment in deployments:\n    print(f\"{deployment.name}: {deployment.model}\")\n\nSee references/deployments.md for deployment patterns."
      },
      {
        "title": "Datasets and Indexes",
        "body": "# List datasets\ndatasets = client.datasets.list()\n\n# List indexes\nindexes = client.indexes.list()\n\nSee references/datasets-indexes.md for data operations."
      },
      {
        "title": "Evaluation",
        "body": "# 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\nSee references/evaluation.md for evaluation patterns."
      },
      {
        "title": "Async Client",
        "body": "from 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\nSee references/async-patterns.md for async patterns."
      },
      {
        "title": "Memory Stores",
        "body": "# 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)"
      },
      {
        "title": "Best Practices",
        "body": "Use context managers for async client: async with AIProjectClient(...) as client:\nClean up agents when done: client.agents.delete_agent(agent.id)\nUse create_and_process for simple runs, streaming for real-time UX\nUse versioned agents for production deployments\nPrefer connections for external service integration (AI Search, Bing, etc.)"
      },
      {
        "title": "SDK Comparison",
        "body": "Featureazure-ai-projectsazure-ai-agentsLevelHigh-level (Foundry)Low-level (Agents)ClientAIProjectClientAgentsClientVersioningcreate_version()Not availableConnectionsYesNoDeploymentsYesNoDatasets/IndexesYesNoEvaluationVia OpenAI clientNoWhen to useFull Foundry integrationStandalone agent apps"
      },
      {
        "title": "Reference Files",
        "body": "references/agents.md: Agent operations with PromptAgentDefinition\nreferences/tools.md: All agent tools with examples\nreferences/evaluation.md: Evaluation operations and built-in evaluators\nreferences/connections.md: Connection operations\nreferences/deployments.md: Deployment enumeration\nreferences/datasets-indexes.md: Dataset and index operations\nreferences/async-patterns.md: Async client usage"
      }
    ],
    "body": "Azure AI Projects Python SDK (Foundry SDK)\n\nBuild AI applications on Azure AI Foundry using the azure-ai-projects SDK.\n\nInstallation\npip install azure-ai-projects azure-identity\n\nEnvironment Variables\nAZURE_AI_PROJECT_ENDPOINT=\"https://<resource>.services.ai.azure.com/api/projects/<project>\"\nAZURE_AI_MODEL_DEPLOYMENT_NAME=\"gpt-4o-mini\"\n\nAuthentication\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\nClient Operations Overview\nOperation\tAccess\tPurpose\nclient.agents\t.agents.*\tAgent CRUD, versions, threads, runs\nclient.connections\t.connections.*\tList/get project connections\nclient.deployments\t.deployments.*\tList model deployments\nclient.datasets\t.datasets.*\tDataset management\nclient.indexes\t.indexes.*\tIndex management\nclient.evaluations\t.evaluations.*\tRun evaluations\nclient.red_teams\t.red_teams.*\tRed team operations\nTwo Client Approaches\n1. AIProjectClient (Native Foundry)\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\n2. OpenAI-Compatible Client\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\nAgent Operations\nCreate Agent (Basic)\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\nCreate Agent with Tools\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\nVersioned Agents with PromptAgentDefinition\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\nTools Overview\nTool\tClass\tUse Case\nCode Interpreter\tCodeInterpreterTool\tExecute Python, generate files\nFile Search\tFileSearchTool\tRAG over uploaded documents\nBing Grounding\tBingGroundingTool\tWeb search (requires connection)\nAzure AI Search\tAzureAISearchTool\tSearch your indexes\nFunction Calling\tFunctionTool\tCall your Python functions\nOpenAPI\tOpenApiTool\tCall REST APIs\nMCP\tMcpTool\tModel Context Protocol servers\nMemory Search\tMemorySearchTool\tSearch agent memory stores\nSharePoint\tSharepointGroundingTool\tSearch SharePoint content\n\nSee references/tools.md for all tool patterns.\n\nThread and Message Flow\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\nConnections\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\nDeployments\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\nDatasets and Indexes\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\nEvaluation\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\nAsync Client\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\nMemory Stores\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\nBest Practices\nUse context managers for async client: async with AIProjectClient(...) as client:\nClean up agents when done: client.agents.delete_agent(agent.id)\nUse create_and_process for simple runs, streaming for real-time UX\nUse versioned agents for production deployments\nPrefer connections for external service integration (AI Search, Bing, etc.)\nSDK Comparison\nFeature\tazure-ai-projects\tazure-ai-agents\nLevel\tHigh-level (Foundry)\tLow-level (Agents)\nClient\tAIProjectClient\tAgentsClient\nVersioning\tcreate_version()\tNot available\nConnections\tYes\tNo\nDeployments\tYes\tNo\nDatasets/Indexes\tYes\tNo\nEvaluation\tVia OpenAI client\tNo\nWhen to use\tFull Foundry integration\tStandalone agent apps\nReference Files\nreferences/agents.md: Agent operations with PromptAgentDefinition\nreferences/tools.md: All agent tools with examples\nreferences/evaluation.md: Evaluation operations and built-in evaluators\nreferences/connections.md: Connection operations\nreferences/deployments.md: Deployment enumeration\nreferences/datasets-indexes.md: Dataset and index operations\nreferences/async-patterns.md: Async client usage"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/thegovind/azure-ai-projects-py",
    "publisherUrl": "https://clawhub.ai/thegovind/azure-ai-projects-py",
    "owner": "thegovind",
    "version": "0.1.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/azure-ai-projects-py",
    "downloadUrl": "https://openagent3.xyz/downloads/azure-ai-projects-py",
    "agentUrl": "https://openagent3.xyz/skills/azure-ai-projects-py/agent",
    "manifestUrl": "https://openagent3.xyz/skills/azure-ai-projects-py/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/azure-ai-projects-py/agent.md"
  }
}