基于 Azure AI Projects SDK 构建容器化托管 Agent:agentic-awesome-skills agents-v2-py 实战指南
AI 技能AI 插件【免费下载链接】agentic-awesome-skillsAAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and planning, backed by 2,115 agentic skills. Includes CLI, local MCP, catalog, plugins, and Workbench.项目地址https://gitcode.com/gh_mirrors/an/agentic-awesome-skills点击查看免费下载在 agentic-awesome-skillsAAS技能仓库中agents-v2-py是一份面向 Python 开发者的 Azure AI Foundry 容器化托管 Agent 实战指南核心是使用azure-ai-projectsSDK 的ImageBasedHostedAgentDefinition完成托管 Agent 的创建、版本管理、资源分配与工具装配。读完本文你将掌握从镜像推送、权限授予到版本化 Agent 全生命周期的完整编码流程并能在自己的 Azure AI Foundry 项目中直接落地一套可运行、可维护的托管 Agent 方案。技能定位与兼容性说明agents-v2-py是hosted-agents-v2-py的兼容别名compatibility alias。从仓库结构看两者在 agentic-awesome-skills/skills/hosted-agents-v2-py/SKILL.md 与 agentic-awesome-skills-claude/skills/agents-v2-py/SKILL.md 中保存了同一份共享流程完整指令与支撑文件保持本地化确保既有安装可以离线继续工作当已有 manifest 或客户端配置引用旧 ID 时应保留可调用 ID 以维持兼容。维护记录显示该技能于 2026-09-05 在 AAS 中修订原始元数据与许可证声明均被保留。该技能在 AAS 中被标记为risk: critical说明它涉及云端写操作创建 Agent、授予角色、删除版本使用时必须严格限定在用户授权范围内。安装与环境变量pip install azure-ai-projects2.0.0b3,3 azure-identity需要注意这些是 SDK v2 预览时期的草图实现。原文档明确提醒在真正开通资源前务必核对已安装的精确版本和 Azure 托管 Agent 最新官方文档宽泛的版本区间并不等价于集成测试。azure-identity用于提供DefaultAzureCredential认证链路。运行前需要配置项目终结点AZURE_AI_PROJECT_ENDPOINThttps://resource.services.ai.azure.com/api/projects/project该终结点指向你的 Azure AI Foundry 项目资源是AIProjectClient初始化时的必填参数。与之配套的还有模型部署名如gpt-4o-mini等环境变量可参考同仓库的 azure-ai-projects-py/SKILL.md 中AZURE_AI_MODEL_DEPLOYMENT_NAME的用法。前置条件创建托管 Agent 前的四项检查在调用任何创建接口之前必须依次确认以下四项基础设施就绪容器镜像将你的 Agent 运行时镜像构建并推送到 Azure Container RegistryACR镜像路径需包含完整 registry/image:tag。ACR 拉取权限为项目的托管标识managed identity授予 ACR 上的AcrPull角色否则容器无法被拉取。Capability Host账户级 capability host 需开启enablePublicHostingEnvironmenttrue这是托管环境的承载前提。SDK 版本确保azure-ai-projects2.0.0b3托管 Agent 的版本化 API 依赖该版本以上特性。认证DefaultAzureCredential 推荐流程托管 Agent 的创建走 Azure 认可的凭据流程。技能以DefaultAzureCredential为例它会按顺序尝试环境变量、托管标识、Azure CLI 等认证源适合本地开发与云端运行两种场景from azure.identity import DefaultAzureCredential from azure.ai.projects import AIProjectClient import os credential DefaultAzureCredential() client AIProjectClient( endpointos.environ[AZURE_AI_PROJECT_ENDPOINT], credentialcredential )从 azure-ai-projects-py/SKILL.md 的认证代码可见同一套AIProjectClient初始化模式是 Foundry SDK 家族的统一入口后续的 Agent CRUD、connections、deployments 等都挂载在client之下。核心工作流托管 Agent 的版本化生命周期与普通create_agent不同容器化托管 Agent 走的是**版本化versioned**接口即通过client.agents.create_version/list_versions/delete_version管理。这正是 azure-ai-projects-py/SKILL.md 中 SDK 对比表所示create_version()是azure-ai-projects相对低层azure-ai-agents的关键差异能力。1. 导入必需模块import os from azure.identity import DefaultAzureCredential from azure.ai.projects import AIProjectClient from azure.ai.projects.models import ( ImageBasedHostedAgentDefinition, ProtocolVersionRecord, AgentProtocol, )2. 创建托管 Agentclient AIProjectClient( endpointos.environ[AZURE_AI_PROJECT_ENDPOINT], credentialDefaultAzureCredential() ) agent client.agents.create_version( agent_namemy-hosted-agent, definitionImageBasedHostedAgentDefinition( container_protocol_versions[ ProtocolVersionRecord(protocolAgentProtocol.RESPONSES, versionv1) ], cpu1, memory2Gi, imagemyregistry.azurecr.io/my-agent:latest, tools[{type: code_interpreter}], environment_variables{ AZURE_AI_PROJECT_ENDPOINT: os.environ[AZURE_AI_PROJECT_ENDPOINT], MODEL_NAME: gpt-4o-mini } ) ) print(fCreated agent: {agent.name} (version: {agent.version}))definition参数是ImageBasedHostedAgentDefinition实例它决定了容器规格、协议、镜像与运行时配置返回值携带name与version字段可用于后续查询与清理。3. 列出 Agent 版本versions client.agents.list_versions(agent_namemy-hosted-agent) for version in versions: print(fVersion: {version.version}, State: {version.state})state字段反映每个版本的健康状态可用于观察部署是否就绪。4. 删除 Agent 版本client.agents.delete_version( agent_namemy-hosted-agent, versionagent.version )删除是按版本粒度的便于灰度升级、回滚与资源回收无需整 Agent 下线。ImageBasedHostedAgentDefinition 参数详解这是整个技能的核心数据结构各字段含义与必填性如下参数类型必填说明container_protocol_versionslist[ProtocolVersionRecord]是Agent 支持的协议版本列表imagestr是完整容器镜像路径registry/image:tagcpustr否CPU 分配量如1、2memorystr否内存分配量如2Gi、4Gitoolslist[dict]否Agent 可用的工具列表environment_variablesdict[str, str]否注入容器的环境变量从参数结构可以推断ImageBasedHostedAgentDefinition的设计意图是镜像决定跑什么协议决定怎么通信cpu/memory 决定跑多大tools 与 environment_variables 决定跑时能干什么。这与 azure-ai-projects-py/SKILL.md 中基于PromptAgentDefinition的提示词型版本化 Agent 形成对照——前者面向自定义运行时容器后者面向托管推理模型。协议版本声明 Agent 的通信协议container_protocol_versions用于声明托管 Agent 支持的交互协议from azure.ai.projects.models import ProtocolVersionRecord, AgentProtocol # RESPONSES protocol - standard agent responses container_protocol_versions[ ProtocolVersionRecord(protocolAgentProtocol.RESPONSES, versionv1) ]当前可用协议协议说明AgentProtocol.RESPONSESAgent 交互的标准响应协议需要特别留意协议与版本的组合必须与平台支持能力严格对齐若传入不支持的协议版本将触发ProtocolVersionNotSupported错误详见下文常见错误。资源配置CPU 与内存的设定策略容器规格通过cpu与memory两个字符串字段声明definitionImageBasedHostedAgentDefinition( container_protocol_versions[...], imagemyregistry.azurecr.io/my-agent:latest, cpu2, # 2 CPU cores memory4Gi # 4 GiB memory )原文档给出的是示意性资源范围并明确提醒开通前务必核对所在区域与 SKU 的实际配额限制资源MinMaxDefaultCPU0.541Memory1Gi8Gi2Gi实践中建议从默认值起步通过监控容器负载逐步上调避免初始配置过大造成成本浪费。工具配置为容器 Agent 装配能力tools以字典列表形式声明每种工具对应一个type字段。Code Interpretertools[{type: code_interpreter}]MCP 工具通过 MCPModel Context Protocol挂接外部服务器需要同时提供server_label与server_urltools[ {type: code_interpreter}, { type: mcp, server_label: my-mcp-server, server_url: https://my-mcp-server.example.com } ]多工具组合tools[ {type: code_interpreter}, {type: file_search}, { type: mcp, server_label: custom-tool, server_url: https://custom-tool.example.com } ]file_search可用于对上传文档做检索增强code_interpreter负责动态执行代码与生成文件MCP 则打通外部工具生态——三者的组合基本覆盖了常见的数据处理 Agent 场景。与 azure-ai-projects-py/SKILL.md 中类对象形式的CodeInterpreterTool、FileSearchTool不同容器托管 Agent 采用纯字典声明这是两者 API 形态上的明显差异。环境变量传递容器配置注入通过environment_variables把运行配置传入容器容器启动后即可读取environment_variables{ AZURE_AI_PROJECT_ENDPOINT: os.environ[AZURE_AI_PROJECT_ENDPOINT], MODEL_NAME: gpt-4o-mini, LOG_LEVEL: INFO, CUSTOM_CONFIG: value }最佳实践绝不在代码中硬编码密钥。敏感信息应通过环境变量注入或接入 Azure Key Vault 管理。特别注意AZURE_AI_PROJECT_ENDPOINT需要透传给容器内部以便 Agent 运行时回连项目资源。完整示例一个可运行的数据处理器 Agent将上述要素整合即可得到一个可执行的端到端脚本import os from azure.identity import DefaultAzureCredential from azure.ai.projects import AIProjectClient from azure.ai.projects.models import ( ImageBasedHostedAgentDefinition, ProtocolVersionRecord, AgentProtocol, ) def create_hosted_agent(): Create a hosted agent with custom container image. client AIProjectClient( endpointos.environ[AZURE_AI_PROJECT_ENDPOINT], credentialDefaultAzureCredential() ) agent client.agents.create_version( agent_namedata-processor-agent, definitionImageBasedHostedAgentDefinition( container_protocol_versions[ ProtocolVersionRecord( protocolAgentProtocol.RESPONSES, versionv1 ) ], imagemyregistry.azurecr.io/data-processor:v1.0, cpu2, memory4Gi, tools[ {type: code_interpreter}, {type: file_search} ], environment_variables{ AZURE_AI_PROJECT_ENDPOINT: os.environ[AZURE_AI_PROJECT_ENDPOINT], MODEL_NAME: gpt-4o-mini, MAX_RETRIES: 3 } ) ) print(fCreated hosted agent: {agent.name}) print(fVersion: {agent.version}) print(fState: {agent.state}) return agent if __name__ __main__: create_hosted_agent()这里使用固定 tagv1.0而非latest符合生产环境的镜像版本化要求MAX_RETRIES演示了业务级配置透传。异步模式async/await 版本对于高并发的服务端场景SDK 提供完整异步客户端位于azure.identity.aio与azure.ai.projects.aioimport os from azure.identity.aio import DefaultAzureCredential from azure.ai.projects.aio import AIProjectClient from azure.ai.projects.models import ( ImageBasedHostedAgentDefinition, ProtocolVersionRecord, AgentProtocol, ) async def create_hosted_agent_async(): Create a hosted agent asynchronously. async with DefaultAzureCredential() as credential: async with AIProjectClient( endpointos.environ[AZURE_AI_PROJECT_ENDPOINT], credentialcredential ) as client: agent await client.agents.create_version( agent_nameasync-agent, definitionImageBasedHostedAgentDefinition( container_protocol_versions[ ProtocolVersionRecord( protocolAgentProtocol.RESPONSES, versionv1 ) ], imagemyregistry.azurecr.io/async-agent:latest, cpu1, memory2Gi ) ) return agent异步模式强制使用async with上下文管理器管理凭据与客户端生命周期这同样是 azure-ai-projects-py/SKILL.md 中强调的最佳实践之一。常见错误排查错误原因解决方案ImagePullBackOffACR 拉取权限被拒为项目托管标识授予AcrPull角色InvalidContainerImage镜像不存在核对镜像路径与 tag 是否真实存在于 ACRCapabilityHostNotFound未配置 capability host创建账户级 capability hostProtocolVersionNotSupported协议版本无效使用AgentProtocol.RESPONSES且 version 为v1其中ImagePullBackOff与InvalidContainerImage均源于前置条件中的镜像与权限环节CapabilityHostNotFound对应前置条件第 3 项ProtocolVersionNotSupported对应协议声明环节——排查时可以按前置条件 → 定义参数的顺序自上而下核对。最佳实践清单镜像版本化生产环境使用具体 tag如v1.0不用latest。最小资源起步从最小 CPU/内存开始按需扩容。配置一律环境变量化任何配置都通过环境变量注入绝不硬编码。异常处理将创建操作包在 try/except 中捕获云端错误。及时清理删除不再使用的 Agent 版本以释放配额与成本。使用边界与授权约束该技能用于审查或创建被明确请求的容器化 Foundry 托管 Agent。使用前必须先确认镜像 digest、订阅/租户、区域、服务可用性、权限与成本范围。创建 Agent、授予角色、删除版本均属云端写操作只能在用户授权范围内执行。审查示例流程给定一个固定的容器镜像与测试项目先核对 SDK 模型字段与 registry 拉取权限再准备创建请求仅在授权后开通并记录返回的确切版本与观察到的健康状态不应把删除无关版本当作例行清理。期望的产出是一份版本级回执receipt而非想当然的部署结果。局限性同样明确仅当任务与上述范围严格匹配时才使用本技能输出不能替代环境特定的验证、测试或专家评审当缺少必要输入、权限、安全边界或成功标准时应停下并向用户询问澄清。延伸阅读围绕 Azure AI Foundry 的 Python 开发仓库内还有与之配套的技能可供对照学习hosted-agents-v2-py/SKILL.md本文的编辑主路径版本两者共享同一流程azure-ai-projects-py/SKILL.mdFoundry SDK 总览覆盖PromptAgentDefinition版本化 Agent、工具类、线程消息流与 SDK 对比是理解ImageBasedHostedAgentDefinition所处 API 生态的必读材料。至此从环境准备、镜像与权限前置、客户端认证到版本化 Agent 的创建、查询、删除、资源与工具装配、异步模式及错误排查你已经掌握了用 Python 在 Azure AI Foundry 中构建容器化托管 Agent 的完整链路。动手之前请务必核对 SDK 精确版本、区域配额与授权边界把版本级回执作为每次开通的验收标准。赞分享AI 技能AI 插件【免费下载链接】agentic-awesome-skillsAAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and planning, backed by 2,115 agentic skills. Includes CLI, local MCP, catalog, plugins, and Workbench.项目地址https://gitcode.com/gh_mirrors/an/agentic-awesome-skills点击查看免费下载相关推荐基于 Vercel AI SDK 构建云 Agentopen-agents 项目 ai-sdk 技能实战指南基于 Vercel AI SDK 构建云 Agentopen agents 项目 ai sdk 技能实战指南 导读 本文围绕 open agents 仓库中人工智能AI Agent代码智能体Agent 工作流Agent 沙箱工具调用后端前端AI SDK 7 实战指南基于 skills/use-ai-sdk 的版本对齐、AI Gateway 接入与 Agent 构建全流程AI SDK 7 实战指南基于 skills/use ai sdk 的版本对齐、AI Gateway 接入与 Agent 构建全流程 本篇指南以仓库内 ski人工智能AI 应用AI Agent工具调用MCP Clients基于 Rube MCP 自动化 Extracta AI 操作awesome-codex-skills 实战指南基于 Rube MCP 自动化 Extracta AI 操作awesome codex skills 实战指南 在 awesome codex skillsAI 技能AI 插件工作流自动化人工智能上一篇phantomjs-prebuilt完全指南从安装到精通的无头WebKit工具下一篇Heed开发实战构建高性能键值存储应用的完整案例创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考