.NET AI 模板

引言

随着人工智能技术的快速发展,AI应用开发已成为开发者必备的技能之一。然而,对于许多.NET开发者来说,如何快速上手AI开发仍然是一个挑战。微软推出的.NET AI模板预览版正是为了解决这一问题而生,为开发者提供了构建智能聊天应用的脚手架和最佳实践指南。

本文将详细介绍如何安装和使用这个模板,探索其核心功能,并通过实际案例展示如何扩展其能力,帮助.NET开发者快速进入AI开发领域。

1. 安装与基本使用

1.1 安装模板

要开始使用.NET AI模板,首先需要在终端中运行以下命令安装模板包:

bash 复制代码
dotnet new install Microsoft.Extensions.AI.Templates

安装完成后,您可以通过多种方式创建新项目:

  • 在Visual Studio中通过"文件 > 新建 > 项目"菜单
  • 在Visual Studio Code中使用C# Dev Kit扩展
  • 直接在命令行运行:dotnet new aichatweb

1.2 项目结构概览

该模板生成的项目包含以下关键组件:

  • Blazor Web应用:基于现代Web技术构建的聊天界面
  • Microsoft.Extensions.AI抽象库:提供与AI模型交互的统一接口
  • Microsoft.Extensions.VectorData:处理向量数据的核心组件
  • 数据提取与处理服务 :位于/Services/Ingestion/DataIngestor.cs

1.3 快速启动

默认配置使用GitHub Models作为AI提供商和本地向量存储,几乎不需要额外设置即可开始开发。这种设计大大降低了入门门槛,开发者可以立即专注于业务逻辑而非基础设施。

2. 核心功能解析

  • 与自定义数据聊天:该模板允许您创建基于聊天的 UI,与示例 PDF 或您的自定义数据进行交互。

  • 本地与 Azure 集成:支持本地向量存储以进行原型开发,同时也支持 Azure AI Search 以实现更高级的配置。

  • 可自定义的代码:生成的代码包含用于聊天交互、引用追踪和后续建议的 UI 组件,您可以根据需要自定义或移除这些组件。

  • 数据提取:模板包含数据提取、缓存和处理的代码,使您能够处理各种数据源和格式。

3. 开发环境集成

3.1 Visual Studio体验

在VS中创建项目的步骤:

  1. 通过模板安装后,搜索"AI Chat"
  2. 选择项目名称和位置
  3. 配置AI提供商和向量存储
  4. 开始开发

3.2 VS Code配置

对于VS Code用户需要:

  1. 安装C# Dev Kit扩展
  2. 使用".NET: New Project..."命令
  3. 选择AI聊天模板
  4. 同样配置提供商和存储选项

3.3 跨平台支持

模板完全支持:

  • Windows开发环境
  • macOS开发
  • Linux开发(需.NET支持)

4. 扩展功能开发

4.1 添加自定义工具

通过Microsoft.Extensions.AI可以轻松扩展功能。例如添加天气查询:

csharp 复制代码
private async Task<string> GetWeather([Description("The city, correctly capitalized")] string city)
{
    string[] weatherValues = ["Sunny", "Cloudy", "Rainy", "Snowy", "Balmy", "Bracing"];
    return city == "London" ? "Drizzle" : weatherValues[Random.Shared.Next(weatherValues.Length)];
}

然后注册到聊天选项:

csharp 复制代码
chatOptions.Tools =
[
    AIFunctionFactory.Create(SearchAsync),
    AIFunctionFactory.Create(GetWeather)
];

结论

.NET AI模板预览版为开发者提供了快速进入AI领域的捷径,其核心价值体现在:

  1. 降低门槛:通过预制模板和默认配置,开发者无需深入了解AI基础设施即可构建智能应用
  2. 灵活扩展:基于Microsoft.Extensions.AI的架构允许深度定制和功能扩展
  3. 生产就绪:支持从原型到生产的全流程,特别是与Azure服务的无缝集成
  4. 现代开发体验:完美融入Visual Studio和VS Code工作流,符合.NET开发者习惯