SuperAPI AI 工具集

azure-ai-projects-dotnet

智能体与模型

查看项目

更新于 10-16 03:57

技能介绍

用途

Azure.AI.Projects 是面向 .NET 的 Azure AI Foundry 项目操作高级 SDK,用于在应用中统一管理 Azure AI Foundry 项目下的各类资源。其核心对象 AIProjectClient 作为主要入口点,向下暴露多个子客户端,覆盖智能体、连接、数据集、部署、评估、评估器、索引与遥测等操作。

安装

dotnet add package Azure.AI.Projects
dotnet add package Azure.Identity

# 可选:用于带 OpenAI 扩展的版本化智能体
dotnet add package Azure.AI.Projects.OpenAI --prerelease

# 可选:用于底层智能体操作
dotnet add package Azure.AI.Agents.Persistent --prerelease

当前版本:GA v1.1.0、Preview v1.2.0-beta.5。

环境变量

PROJECT_ENDPOINT=https://<resource>.services.ai.azure.com/api/projects/<project>
MODEL_DEPLOYMENT_NAME=gpt-4o-mini
CONNECTION_NAME=<your-connection-name>
AI_SEARCH_CONNECTION_NAME=<ai-search-connection>

认证

using Azure.Identity;
using Azure.AI.Projects;

var endpoint = Environment.GetEnvironmentVariable("PROJECT_ENDPOINT");
AIProjectClient projectClient = new AIProjectClient(
    new Uri(endpoint), 
    new DefaultAzureCredential());

客户端层级

AIProjectClient
├── Agents          → AIProjectAgentsOperations(版本化智能体)
├── Connections     → ConnectionsClient
├── Datasets        → DatasetsClient
├── Deployments     → DeploymentsClient
├── Evaluations     → EvaluationsClient
├── Evaluators      → EvaluatorsClient
├── Indexes         → IndexesClient
├── Telemetry       → AIProjectTelemetry
├── OpenAI          → ProjectOpenAIClient(预览)
└── GetPersistentAgentsClient() → PersistentAgentsClient

主要能力与使用方式

持久化智能体

可通过 projectClient.GetPersistentAgentsClient() 获取底层智能体客户端,进而创建智能体、创建线程并运行、轮询运行状态、读取消息,并在完成后清理线程与智能体。示例中展示了创建数学辅导智能体、发送消息、轮询 RunStatus.Queued 与 RunStatus.InProgress 状态,以及通过 GetMessagesAsync 读取消息文本的流程。

版本化智能体与工具(预览)

使用 Azure.AI.Projects.OpenAI 命名空间,可基于 PromptAgentDefinition 定义带工具的智能体版本,例如 Web 搜索工具(可指定近似位置:国家、城市、区域),通过 CreateAgentVersionAsync 创建 AgentVersion,再用项目 OpenAI 的响应客户端获取回复。

连接

可列出全部连接、获取指定连接(includeCredentials 控制是否包含凭据)、获取默认连接,返回类型为 AIProjectConnection,包含名称与连接类型等信息。

部署

可列出全部部署、按发布者过滤(如 modelPublisher: "Microsoft")、获取指定部署详情(如 ModelDeployment)。

数据集

支持上传单个文件(UploadFile)或整个文件夹(UploadFolder,可配合正则 filePattern 过滤文件)、获取数据集、删除数据集。

索引

可创建 Azure AI Search 索引(AzureAISearchIndex,可设置 Description)、创建或更新、列出索引、删除索引。

评估

可创建评估配置(如 EvaluatorIDs.Relevance,并通过 InitParams 指定 deployment_name)、创建评估并运行(Evaluation 包含 data 与 evaluators)、获取评估结果、列出全部评估。

获取 Azure OpenAI 聊天客户端

可通过 projectClient.GetConnection 获取连接并解析 URI,构建 AzureOpenAIClient 与 ChatClient,执行聊天补全。

可用的智能体工具

工具 类 用途
Code Interpreter CodeInterpreterToolDefinition 执行 Python 代码
File Search FileSearchToolDefinition 搜索已上传文件
Function Calling FunctionToolDefinition 调用自定义函数
Bing Grounding BingGroundingToolDefinition 通过 Bing 进行网络搜索
Azure AI Search AzureAISearchToolDefinition 搜索 Azure AI 索引
OpenAPI OpenApiToolDefinition 调用外部 API
Azure Functions AzureFunctionToolDefinition 调用 Azure Functions
MCP MCPToolDefinition Model Context Protocol 工具

关键类型

AIProjectClient(主入口点)、PersistentAgentsClient(底层智能体操作)、PromptAgentDefinition(版本化智能体定义)、AgentVersion(版本化智能体实例)、AIProjectConnection、AIProjectDeployment、AIProjectDataset、AIProjectIndex、Evaluation。

适用场景

用于在 .NET 应用中执行 Azure AI Foundry 项目相关工作流:智能体创建与运行、连接与部署查询、数据集上传、索引创建、评估运行,以及接入 Azure OpenAI 聊天客户端。

最佳实践

生产环境使用 DefaultAzureCredential;所有 I/O 操作使用异步方法(*Async);等待运行时以合适延迟轮询(推荐 500ms);完成后清理资源(线程、智能体、文件);生产场景使用版本化智能体;工具配置存储连接 ID 而非名称;仅在需要凭据时使用 includeCredentials: true;使用 AsyncPageable<T> 处理分页。

错误处理

using Azure;

try
{
    var result = await projectClient.Evaluations.CreateAsync(evaluation);
}
catch (RequestFailedException ex)
{
    Console.WriteLine($"Error: {ex.Status} - {ex.ErrorCode}: {ex.Message}");
}

相关 SDK

  • Azure.AI.Projects:高级项目客户端(本 SDK),安装 dotnet add package Azure.AI.Projects
  • Azure.AI.Agents.Persistent:底层智能体操作,安装 dotnet add package Azure.AI.Agents.Persistent
  • Azure.AI.Projects.OpenAI:带 OpenAI 的版本化智能体,安装 dotnet add package Azure.AI.Projects.OpenAI

参考链接

  • NuGet 包:https://www.nuget.org/packages/Azure.AI.Projects
  • API 参考:https://learn.microsoft.com/dotnet/api/azure.ai.projects
  • GitHub 源码:https://github.com/Azure/azure-sdk-for-net/tree/main/sdk/ai/Azure.AI.Projects
  • 示例:https://github.com/Azure/azure-sdk-for-net/tree/main/sdk/ai/Azure.AI.Projects/samples

限制

仅当任务明确匹配上述范围时使用此技能。不要将其输出视为环境特定验证、测试或专家评审的替代。若缺少必需输入、权限、安全边界或成功标准,应停止并请求澄清。