基于 AAS 技能库掌握 Azure AI Projects Java SDK:Azure AI Foundry 项目级资源管理实战指南【免费下载链接】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,600+ agentic skills. Includes CLI, local MCP, catalog, plugins, and Workbench.项目地址: https://gitcode.com/GitHub_Trending/an/agentic-awesome-skills本指南以 AAS(Agentic Awesome Skills)开源仓库中的azure-ai-projects-java技能文档为骨架,系统讲解如何使用 Java 版azure-ai-projectsSDK 连接并管理 Azure AI Foundry(Azure AI Studio 演进形态)项目中的连接(Connections)、数据集(Datasets)、索引(Indexes)与评估(Evaluations)。读完本文,你将掌握从 Maven 依赖引入、环境变量与身份认证配置,到子客户端分层调用与异常处理的一整套可落地 Java 编码方案。技能背景:它在 AAS 仓库中的定位azure-ai-projects-java是 AAS 仓库中收录的一枚社区技能(source: community),完整内容位于 SKILL.md。技能文件通过 YAML frontmatter 声明元数据:--- name: azure-ai-projects-java description: Azure AI Projects SDK for Java. High-level SDK for Azure AI Foundry project management including connections, datasets, indexes, and evaluations. risk: critical source: community date_added: '2026-02-27' ---其中risk: critical表示该技能涉及关键业务操作,Agent 或开发者在触发时应谨慎核对输入与权限边界。仓库的 目录索引 将其归类为cloud类别,标注了azure、ai、java等标签与检索触发词(triggers);技能索引 中也登记了同名条目,与 Python、TypeScript、.NET 三个同族技能并列存在(见 azure-ai-projects-py、azure-ai-projects-ts、azure-ai-projects-dotnet),方便按语言栈选择对等实现。该 SDK 是 Azure AI Foundry 项目管理的高层封装客户端,屏蔽了底层 REST 协议细节,统一提供对连接、数据集、部署、索引、评估、评估器与调度等资源的访问入口,适合 Java 服务端应用、Agent 工具链与自动化流水线集成。依赖引入与版本说明项目当前推荐引入的 Maven 坐标如下:<dependency> <groupId>com.azure</groupId> <artifactId>azure-ai-projects</artifactId> <version>1.0.0-beta.1</version> </dependency>要点:版本状态:1.0.0-beta.1属于 beta 阶段,公共 API 存在变更可能。生产环境应固定该精确版本号(或升级到经评估的更新版本),避免传递依赖浮动导致编译/运行不一致。配套依赖:认证部分依赖com.azure:azure-identity(提供DefaultAzureCredential),请一并加入pom.xml;使用 Gradle 时可写为implementation 'com.azure:azure-ai-projects:1.0.0-beta.1'。Java 版本前提:作为 Azure SDK for Java 家族成员,通常要求 JDK 8+(具体以该版本 pom 声明的目标版本为准),实际构建前请核对本机java -version。环境变量配置SDK 客户端通过环境变量注入项目终结点,技能文档给出的核心变量为:PROJECT_ENDPOINT=https://<resource>.services.ai.azure.com/api/projects/<project>PROJECT_ENDPOINT:Azure AI Foundry 项目的唯一终结点,格式为https://<资源名>.services.ai.azure.com/api/projects/<项目名>,可在 Azure 门户对应 AI Foundry 项目的“概览 / 连接字符串”区域获取。在创建/更新索引等操作中,技能还使用了另外两个变量:AI_SEARCH_CONNECTION_NAME(Azure AI Search 连接名称)与AI_SEARCH_INDEX_NAME(目标搜索索引名),它们将被读入createOrUpdate调用(见下文核心操作)。建议将终结点与凭据类信息统一放入环境变量或密钥管理服务(如 Azure Key Vault),避免硬编码进源码。身份认证:DefaultAzureCredential 链路技能文档推荐的认证方式是 Azure Identity 的DefaultAzureCredential:import com.azure.ai.projects.AIProjectClientBuilder; import com.azure.identity.DefaultAzureCredentialBuilder; AIProjectClientBuilder builder = new AIProjectClientBuilder() .endpoint(System.getenv("PROJECT_ENDPOINT")) .credential(new DefaultAzureCredentialBuilder().build());DefaultAzureCredential会按预定义顺序尝试多种凭据源,直到成功为止,典型链路包括:环境变量凭据(AZURE_CLIENT_ID/AZURE_CLIENT_SECRET/AZURE_TENANT_ID);工作负载标识(Workload Identity,常见于 AKS / GitHub Actions);托管标识(Managed Identity,适用于 Azure VM、App Service 等资源);Azure CLI 已登录账号;IntelliJ / Visual Studio Code 等 IDE 登录态。正因如此,同一套代码在本地开发(走 Azure CLI 登录)、CI/CD(走工作负载身份或环境变量)与云端运行时(走托管标识)之间无需改动即可切换,这正是技能将其列为生产环境首选认证方式的原因。若需要显式限制凭据来源,可使用DefaultAzureCredentialBuilder().excludeXxxCredential()系列方法裁剪链路。客户端层级架构:一个 Builder 派生七类子客户端AIProjectClientBuilder是唯一入口,同一 builder 实例可派生出多个职责单一的子客户端,技能文档中的对应关系如下:子客户端用途ConnectionsClient枚举已连接的 Azure 资源DatasetsClient上传文档、管理数据集DeploymentsClient枚举 AI 模型部署IndexesClient创建与管理搜索索引EvaluationsClient运行 AI 模型评估EvaluatorsClient管理评估器配置SchedulesClient管理定时调度操作// Build sub-clients from builder ConnectionsClient connectionsClient = builder.buildConnectionsClient(); DatasetsClient datasetsClient = builder.buildDatasetsClient(); DeploymentsClient deploymentsClient = builder.buildDeploymentsClient(); IndexesClient indexesClient = builder.buildIndexesClient(); EvaluationsClient evaluationsClient = builder.buildEvaluationsClient();架构收益:客户端按资源域拆分,避免单一巨型客户端;builder 复用一个终结点与凭据配置,派生出的子客户端共享相同的认证上下文与 HTTP 管道(重试、日志、代理等统一由 Azure Core 管理)。核心操作实战1. 枚举项目连接(List Connections)连接表示项目内已绑定的外部 Azure 资源(如 Azure AI Search、Azure Storage、Azure OpenAI 等)。技能给出的列举代码:import com.azure.ai.projects.models.Connection; import com.azure.core.http.rest.PagedIterable; PagedIterable<Connection> connections = connectionsClient.listConnections(); for (Connection connection : connections) { System.out.println("Name: " + connection.getName()); System.out.println("Type: " + connection.getType()); System.out.println("Credential Type: " + connection.getCredentials().getType()); }说明:返回类型为PagedIterable<Connection>,支持按页惰性拉取,无需手动处理分页游标(见最佳实践第 3 条)。Connection暴露getName()、getType()与凭据对象getCredentials();凭据类型(如 API Key、托管标识等)决定后续以何种方式访问底层资源,读取前应做类型判断(见最佳实践第 5 条)。2. 列举搜索索引(List Indexes)indexesClient.listLatest().forEach(index -> { System.out.println("Index name: " + index.getName()); System.out.println("Version: " + index.getVersion()); System.out.println("Description: " + index.getDescription()); });listLatest()返回各索引的最新版本列表,Index对象携带名称、版本号与描述字段,适合用于检索现有索引资产、辅助索引生命周期管理。3. 创建或更新索引(Create or Update Index)技能文档给出通过 Azure AI Search 后端创建/更新索引的完整示例:import com.azure.ai.projects.models.AzureAISearchIndex; import com.azure.ai.projects.models.Index; String indexName = "my-index"; String indexVersion = "1.0"; String searchConnectionName = System.getenv("AI_SEARCH_CONNECTION_NAME"); String searchIndexName = System.getenv("AI_SEARCH_INDEX_NAME"); Index index = indexesClient.createOrUpdate( indexName, indexVersion, new AzureAISearchIndex() .setConnectionName(searchConnectionName) .setIndexName(searchIndexName) ); System.out.println("Created index: " + index.getName());要点:createOrUpdate语义为幂等:索引存在则更新,不存在则创建。AzureAISearchIndex是后端类型的具体实现(本技能场景下后端为 Azure AI Search),通过setConnectionName/setIndexName绑定到项目中已有的搜索连接及其中的目标索引。连接名与索引名均从环境变量读取,避免在代码中硬编码资源标识。4. 访问 OpenAI 官方评估 APISDK 直接暴露 OpenAI 官方 SDK 的评估入口,技能文档示例:import com.openai.services.EvalService; EvalService evalService = evaluationsClient.getOpenAIClient(); // Use OpenAI evaluation APIs directly通过evaluationsClient.getOpenAIClient()获得EvalService后,即可使用 OpenAI 官方评估 API 定义评估任务、运行评估并获取结果,无需单独初始化第二套认证客户端——身份上下文由EvaluationsClient统一承接。错误处理技能文档给出的异常处理范式:import com.azure.core.exception.HttpResponseException; import com.azure.core.exception.ResourceNotFoundException; try { Index index = indexesClient.get(indexName, version); } catch (ResourceNotFoundException e) { System.err.println("Index not found: " + indexName); } catch (HttpResponseException e) { System.err.println("Error: " + e.getResponse().getStatusCode()); }ResourceNotFoundException:目标资源(索引、连接等)不存在,可针对性地提示或触发创建流程。HttpResponseException:HTTP 层通用错误基类,e.getResponse().getStatusCode()可获取 4xx/5xx 状态码,用于日志分级与告警;实际项目中建议进一步细分(如ClientAuthenticationException处理 401 凭据失效,HttpResponseException兜底其他错误)。技能同时提醒:不要将输出视为环境特定验证、测试或专家评审的替代品,缺少必要输入、权限或成功标准时应停下来向用户确认。最佳实践总结技能文档提炼的五条工程经验,逐条展开:生产环境优先使用DefaultAzureCredential——一次配置、多环境无缝切换,避免在各环境中维护不同的凭据代码分支。复用 client builder 派生多个子客户端——避免为每个资源域重复构建终结点与凭据配置,降低出错面并统一 HTTP 管道行为。使用PagedIterable处理分页——枚举连接、索引等可能返回大量数据的资源时,交给 Azure Core 的分页机制惰性拉取,防止内存峰值与截断。用环境变量承载连接名与配置——AI_SEARCH_CONNECTION_NAME、AI_SEARCH_INDEX_NAME等资源标识与运行环境强相关,注入环境变量便于不同环境复用同一份代码。访问凭据前先校验连接类型——不同连接携带的凭据类型不同(API Key、托管标识等),先判断getCredentials().getType()再决定访问策略,避免类型假设导致运行时异常。使用边界与限制该技能有其明确的适用前提,文档在结尾给出了三条限制,Agent 与开发者应遵守:仅在任务与上文描述范围(Azure AI Foundry 项目级资源管理)明确匹配时使用;不得将技能输出视为环境特定验证、测试或专家评审的替代品;若缺少所需输入、权限、安全边界或成功标准,应停止并请求澄清,而不是盲目执行。如何在仓库中继续深入如需在 AAS 仓库内继续探索,可以从以下路径入手:技能原文:SKILL.md目录与检索元数据:catalog.json、skills_index.json同族多语言实现:azure-ai-projects-py、azure-ai-projects-ts、azure-ai-projects-dotnet技能中提到的产品文档、REST API 参考、SDK 源码与官方示例等外部资源,可通过微软官方文档渠道与 Azure SDK for Java 官方仓库获取,本文不再重复罗列外链。【免费下载链接】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,600+ agentic skills. Includes CLI, local MCP, catalog, plugins, and Workbench.项目地址: https://gitcode.com/GitHub_Trending/an/agentic-awesome-skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
基于 AAS 技能库掌握 Azure AI Projects Java SDK:Azure AI Foundry 项目级资源管理实战指南【免费下载链接】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,600+ agentic skills. Includes CLI, local MCP, catalog, plugins, and Workbench.项目地址: https://gitcode.com/GitHub_Trending/an/agentic-awesome-skills本指南以 AAS(Agentic Awesome Skills)开源仓库中的azure-ai-projects-java技能文档为骨架,系统讲解如何使用 Java 版azure-ai-projectsSDK 连接并管理 Azure AI Foundry(Azure AI Studio 演进形态)项目中的连接(Connections)、数据集(Datasets)、索引(Indexes)与评估(Evaluations)。读完本文,你将掌握从 Maven 依赖引入、环境变量与身份认证配置,到子客户端分层调用与异常处理的一整套可落地 Java 编码方案。技能背景:它在 AAS 仓库中的定位azure-ai-projects-java是 AAS 仓库中收录的一枚社区技能(source: community),完整内容位于 SKILL.md。技能文件通过 YAML frontmatter 声明元数据:--- name: azure-ai-projects-java description: Azure AI Projects SDK for Java. High-level SDK for Azure AI Foundry project management including connections, datasets, indexes, and evaluations. risk: critical source: community date_added: '2026-02-27' ---其中risk: critical表示该技能涉及关键业务操作,Agent 或开发者在触发时应谨慎核对输入与权限边界。仓库的 目录索引 将其归类为cloud类别,标注了azure、ai、java等标签与检索触发词(triggers);技能索引 中也登记了同名条目,与 Python、TypeScript、.NET 三个同族技能并列存在(见 azure-ai-projects-py、azure-ai-projects-ts、azure-ai-projects-dotnet),方便按语言栈选择对等实现。该 SDK 是 Azure AI Foundry 项目管理的高层封装客户端,屏蔽了底层 REST 协议细节,统一提供对连接、数据集、部署、索引、评估、评估器与调度等资源的访问入口,适合 Java 服务端应用、Agent 工具链与自动化流水线集成。依赖引入与版本说明项目当前推荐引入的 Maven 坐标如下:<dependency> <groupId>com.azure</groupId> <artifactId>azure-ai-projects</artifactId> <version>1.0.0-beta.1</version> </dependency>要点:版本状态:1.0.0-beta.1属于 beta 阶段,公共 API 存在变更可能。生产环境应固定该精确版本号(或升级到经评估的更新版本),避免传递依赖浮动导致编译/运行不一致。配套依赖:认证部分依赖com.azure:azure-identity(提供DefaultAzureCredential),请一并加入pom.xml;使用 Gradle 时可写为implementation 'com.azure:azure-ai-projects:1.0.0-beta.1'。Java 版本前提:作为 Azure SDK for Java 家族成员,通常要求 JDK 8+(具体以该版本 pom 声明的目标版本为准),实际构建前请核对本机java -version。环境变量配置SDK 客户端通过环境变量注入项目终结点,技能文档给出的核心变量为:PROJECT_ENDPOINT=https://<resource>.services.ai.azure.com/api/projects/<project>PROJECT_ENDPOINT:Azure AI Foundry 项目的唯一终结点,格式为https://<资源名>.services.ai.azure.com/api/projects/<项目名>,可在 Azure 门户对应 AI Foundry 项目的“概览 / 连接字符串”区域获取。在创建/更新索引等操作中,技能还使用了另外两个变量:AI_SEARCH_CONNECTION_NAME(Azure AI Search 连接名称)与AI_SEARCH_INDEX_NAME(目标搜索索引名),它们将被读入createOrUpdate调用(见下文核心操作)。建议将终结点与凭据类信息统一放入环境变量或密钥管理服务(如 Azure Key Vault),避免硬编码进源码。身份认证:DefaultAzureCredential 链路技能文档推荐的认证方式是 Azure Identity 的DefaultAzureCredential:import com.azure.ai.projects.AIProjectClientBuilder; import com.azure.identity.DefaultAzureCredentialBuilder; AIProjectClientBuilder builder = new AIProjectClientBuilder() .endpoint(System.getenv("PROJECT_ENDPOINT")) .credential(new DefaultAzureCredentialBuilder().build());DefaultAzureCredential会按预定义顺序尝试多种凭据源,直到成功为止,典型链路包括:环境变量凭据(AZURE_CLIENT_ID/AZURE_CLIENT_SECRET/AZURE_TENANT_ID);工作负载标识(Workload Identity,常见于 AKS / GitHub Actions);托管标识(Managed Identity,适用于 Azure VM、App Service 等资源);Azure CLI 已登录账号;IntelliJ / Visual Studio Code 等 IDE 登录态。正因如此,同一套代码在本地开发(走 Azure CLI 登录)、CI/CD(走工作负载身份或环境变量)与云端运行时(走托管标识)之间无需改动即可切换,这正是技能将其列为生产环境首选认证方式的原因。若需要显式限制凭据来源,可使用DefaultAzureCredentialBuilder().excludeXxxCredential()系列方法裁剪链路。客户端层级架构:一个 Builder 派生七类子客户端AIProjectClientBuilder是唯一入口,同一 builder 实例可派生出多个职责单一的子客户端,技能文档中的对应关系如下:子客户端用途ConnectionsClient枚举已连接的 Azure 资源DatasetsClient上传文档、管理数据集DeploymentsClient枚举 AI 模型部署IndexesClient创建与管理搜索索引EvaluationsClient运行 AI 模型评估EvaluatorsClient管理评估器配置SchedulesClient管理定时调度操作// Build sub-clients from builder ConnectionsClient connectionsClient = builder.buildConnectionsClient(); DatasetsClient datasetsClient = builder.buildDatasetsClient(); DeploymentsClient deploymentsClient = builder.buildDeploymentsClient(); IndexesClient indexesClient = builder.buildIndexesClient(); EvaluationsClient evaluationsClient = builder.buildEvaluationsClient();架构收益:客户端按资源域拆分,避免单一巨型客户端;builder 复用一个终结点与凭据配置,派生出的子客户端共享相同的认证上下文与 HTTP 管道(重试、日志、代理等统一由 Azure Core 管理)。核心操作实战1. 枚举项目连接(List Connections)连接表示项目内已绑定的外部 Azure 资源(如 Azure AI Search、Azure Storage、Azure OpenAI 等)。技能给出的列举代码:import com.azure.ai.projects.models.Connection; import com.azure.core.http.rest.PagedIterable; PagedIterable<Connection> connections = connectionsClient.listConnections(); for (Connection connection : connections) { System.out.println("Name: " + connection.getName()); System.out.println("Type: " + connection.getType()); System.out.println("Credential Type: " + connection.getCredentials().getType()); }说明:返回类型为PagedIterable<Connection>,支持按页惰性拉取,无需手动处理分页游标(见最佳实践第 3 条)。Connection暴露getName()、getType()与凭据对象getCredentials();凭据类型(如 API Key、托管标识等)决定后续以何种方式访问底层资源,读取前应做类型判断(见最佳实践第 5 条)。2. 列举搜索索引(List Indexes)indexesClient.listLatest().forEach(index -> { System.out.println("Index name: " + index.getName()); System.out.println("Version: " + index.getVersion()); System.out.println("Description: " + index.getDescription()); });listLatest()返回各索引的最新版本列表,Index对象携带名称、版本号与描述字段,适合用于检索现有索引资产、辅助索引生命周期管理。3. 创建或更新索引(Create or Update Index)技能文档给出通过 Azure AI Search 后端创建/更新索引的完整示例:import com.azure.ai.projects.models.AzureAISearchIndex; import com.azure.ai.projects.models.Index; String indexName = "my-index"; String indexVersion = "1.0"; String searchConnectionName = System.getenv("AI_SEARCH_CONNECTION_NAME"); String searchIndexName = System.getenv("AI_SEARCH_INDEX_NAME"); Index index = indexesClient.createOrUpdate( indexName, indexVersion, new AzureAISearchIndex() .setConnectionName(searchConnectionName) .setIndexName(searchIndexName) ); System.out.println("Created index: " + index.getName());要点:createOrUpdate语义为幂等:索引存在则更新,不存在则创建。AzureAISearchIndex是后端类型的具体实现(本技能场景下后端为 Azure AI Search),通过setConnectionName/setIndexName绑定到项目中已有的搜索连接及其中的目标索引。连接名与索引名均从环境变量读取,避免在代码中硬编码资源标识。4. 访问 OpenAI 官方评估 APISDK 直接暴露 OpenAI 官方 SDK 的评估入口,技能文档示例:import com.openai.services.EvalService; EvalService evalService = evaluationsClient.getOpenAIClient(); // Use OpenAI evaluation APIs directly通过evaluationsClient.getOpenAIClient()获得EvalService后,即可使用 OpenAI 官方评估 API 定义评估任务、运行评估并获取结果,无需单独初始化第二套认证客户端——身份上下文由EvaluationsClient统一承接。错误处理技能文档给出的异常处理范式:import com.azure.core.exception.HttpResponseException; import com.azure.core.exception.ResourceNotFoundException; try { Index index = indexesClient.get(indexName, version); } catch (ResourceNotFoundException e) { System.err.println("Index not found: " + indexName); } catch (HttpResponseException e) { System.err.println("Error: " + e.getResponse().getStatusCode()); }ResourceNotFoundException:目标资源(索引、连接等)不存在,可针对性地提示或触发创建流程。HttpResponseException:HTTP 层通用错误基类,e.getResponse().getStatusCode()可获取 4xx/5xx 状态码,用于日志分级与告警;实际项目中建议进一步细分(如ClientAuthenticationException处理 401 凭据失效,HttpResponseException兜底其他错误)。技能同时提醒:不要将输出视为环境特定验证、测试或专家评审的替代品,缺少必要输入、权限或成功标准时应停下来向用户确认。最佳实践总结技能文档提炼的五条工程经验,逐条展开:生产环境优先使用DefaultAzureCredential——一次配置、多环境无缝切换,避免在各环境中维护不同的凭据代码分支。复用 client builder 派生多个子客户端——避免为每个资源域重复构建终结点与凭据配置,降低出错面并统一 HTTP 管道行为。使用PagedIterable处理分页——枚举连接、索引等可能返回大量数据的资源时,交给 Azure Core 的分页机制惰性拉取,防止内存峰值与截断。用环境变量承载连接名与配置——AI_SEARCH_CONNECTION_NAME、AI_SEARCH_INDEX_NAME等资源标识与运行环境强相关,注入环境变量便于不同环境复用同一份代码。访问凭据前先校验连接类型——不同连接携带的凭据类型不同(API Key、托管标识等),先判断getCredentials().getType()再决定访问策略,避免类型假设导致运行时异常。使用边界与限制该技能有其明确的适用前提,文档在结尾给出了三条限制,Agent 与开发者应遵守:仅在任务与上文描述范围(Azure AI Foundry 项目级资源管理)明确匹配时使用;不得将技能输出视为环境特定验证、测试或专家评审的替代品;若缺少所需输入、权限、安全边界或成功标准,应停止并请求澄清,而不是盲目执行。如何在仓库中继续深入如需在 AAS 仓库内继续探索,可以从以下路径入手:技能原文:SKILL.md目录与检索元数据:catalog.json、skills_index.json同族多语言实现:azure-ai-projects-py、azure-ai-projects-ts、azure-ai-projects-dotnet技能中提到的产品文档、REST API 参考、SDK 源码与官方示例等外部资源,可通过微软官方文档渠道与 Azure SDK for Java 官方仓库获取,本文不再重复罗列外链。【免费下载链接】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,600+ agentic skills. Includes CLI, local MCP, catalog, plugins, and Workbench.项目地址: https://gitcode.com/GitHub_Trending/an/agentic-awesome-skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考