技术速递|.NET AI 模板现已提供预览版

作者:Jordan Matthiesen

排版:Alan Wang

想要开始 AI 开发,却不确定从哪里入手?我给您带来了一个好消息------我们全新的 AI 聊天 Web 应用模板现已提供预览版!😊 这个模板是我们持续努力的一部分成果,旨在让使用 .NET 进行 AI 开发变得更容易上手,并在 Visual Studio、Visual Studio Code 和 .NET CLI 中提供脚手架和指导。

AI-Template-Preview

请注意,该模板目前为预览版,未来版本可能会根据您的反馈和 AI 的快速发展进行调整。

立即安装模板

如果想要开始使用该模板的首个预览版,您需要在终端中安装 Microsoft.Extensions.AI.Templates。只需运行:

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

安装完成后,该模板即可在 Visual Studio、Visual Studio Code(需安装 C# Dev Kit) 中使用,或者您也可以在工作目录中运行命令 dotnet new aichatweb 来创建它。

入门指南:.NET AI 聊天模板

.NET AI 聊天模板旨在帮助您快速构建一个基于 AI 的聊天应用,与自定义数据进行对话。此次首个版本注重基于 Blazor 的 Web 应用,并使用 Microsoft.Extensions.AIMicrosoft.Extensions.VectorData 抽象库构建。该模板采用了常见的检索增强生成(RAG)模式,用于聊天应用开发。

关键功能和配置选项

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

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

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

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

在 Visual Studio 中使用模板

通过命令行安装模板后,您可以在 Visual Studio 中通过文件 > 新建 > 项目菜单找到该模板。您可以搜索 AI Chat,或选择 AI 项目类型来查找该模板。

选择项目名称和存储位置后,您可以选择一个 AI 模型提供商和向量存储来开始使用。默认情况下,我们使用 GitHub Models 搭配本地向量存储,这是最简单的入门方式,几乎无需额外设置。

您可以从 .NET AI 模板文档中了解每个选项。

使用 Visual Studio Code 和 C# Dev Kit

要在 Visual Studio Code 中使用模板,请先安装 C# Dev Kit 扩展。然后,使用 .NET:New Project... 命令创建新项目:

默认情况下,这将使用 GitHub Models 模型提供商和本地向量存储创建一个新项目。您可以从 .NET AI 模板文档中了解更多选项。

与自定义数据聊天

此模板包含两个示例 PDF 文件,并提供数据提取代码来处理这些 PDF。此数据提取代码非常灵活,因此您可以替换示例 PDF。要使用您自己的数据,请执行以下操作:

  1. 如果项目正在运行,请停止它。

  2. 从 /wwwroot/Data 文件夹中移除示例 PDF 文件。

  3. 将您自己的 PDF 文件添加到 /wwwroot/Data 文件夹。

  4. 再次运行应用程序。

在应用程序启动时,数据提取代码(位于 /Services/Ingestion/DataIngestor.cs)将比较 Data 文件夹的内容;它会从配置的向量存储中删除旧文件,并添加新文件。注意:根据文件的数量和大小,您可能会遇到配置的 AI 模型提供程序的配额和速率限制。当达到限制时,您可能会看到错误消息,或在应用程序启动时出现较长的延迟。有关故障排除的帮助,请参阅 AI 模板文档

扩展聊天机器人的行为

该代码使用 Microsoft.Extensions.AI 构建,这使得插入自定义行为变得非常简单。您可以授予聊天机器人调用任何 C# 函数的权限。这可以扩展其功能,包括检索其他数据或采取行动。

作为一个非常简单的示例,您可以尝试授予它访问"天气"数据的权限。在 Pages/Chat/Chat.razor 中,在 @code 块中定义一个 C# 函数:

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)];
}

然后,在 OnInitialized 方法中,更新 chatOptions.Tools 以包含您的方法:

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

现在尝试在 GetWeather 方法中设置断点,并向聊天机器人询问天气。您会发现它会调用您的方法,并在回答中使用结果。

您可以使用此方法从外部系统检索任何信息,包括通过异步调用。请记住,从 LLM 传入的参数应被视为不可信的输入。

查看实际效果

查看最新一期的 .NET AI Community Standup,在这期节目中,Alex、Bruno 和 Jordan 将概述全新的模板!

.NET AI Community Standup

未来展望 -- 分享您的想法

在未来的版本中,我们计划扩展模板库,新增 AI 控制台模板、Minimal API 模板,支持 .NET Aspire,并将这些模板默认包含在 .NET SDK 中。我们还将探索对 Azure AI Foundry 的支持,并与 Semantic Kernel 团队合作,为 Semantic Kernel 用户扩展模板选项。

我们希望听取您的反馈,帮助改进这些模板。请分享您关于模板的看法------哪些方面对您有用,以及您希望看到哪些改变!

感谢您,并祝您编码愉快!

相关推荐
火山引擎开发者社区3 小时前
TLS for DeepSeek Harness 可观测实践:从系统总览到会话复盘
人工智能
数字融合5 小时前
透明化地铁线视频孪生综合监控项目技术
大数据·人工智能·virtualenv
鼎艺创新科技5 小时前
不依赖 UE/Unity:我们如何从零搭建一套国产三维 GIS 渲染引擎
人工智能·算法·unity·游戏引擎·三维电子沙盘
十三画者6 小时前
【文献分享】ConfRetro:融合3D构象信息的逆合成预测Transformer框架
人工智能·深度学习·数据挖掘·数据分析·transformer·数据可视化
前沿在线6 小时前
百度文心助手推出任务引擎 2.0,日活用户同比增长 83%,日均对话轮次增长超 2 倍
人工智能·ai·大模型
zandy10116 小时前
AI办公工具选哪个?千问办公、百度搭子、WorkBuddy三款高阶智能体深度拆解
人工智能·ai办公工具
mengpp_1234566 小时前
AIoT平台 vs 普通IoT平台 核心区别
人工智能
canonical_entropy6 小时前
可逆不是逆向运行:DeepSeek Harness 架构的数学本质
人工智能·架构·agent
别动我齐刘海6 小时前
机器人运动控制学习2——基础进阶
c++·人工智能·神经网络·学习·目标检测·机器学习·机器人
冬奇Lab7 小时前
Code Agent 解剖(05):模型怎么知道有哪些工具可以用?Function Calling 如何实现?
人工智能·开源·agent