技术速递|.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.AI 和 Microsoft.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 用户扩展模板选项。

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

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

相关推荐
Easy_API14 小时前
2.8万亿参数,编程反超GPT-6 Astra:Kimi K3.1 Pro把开源模型推到了哪一步
大数据·人工智能·gpt·深度学习
GlobalInfo14 小时前
2026年机器人多指灵巧手市场分析报告——涵盖行业调查、趋势分析与发展前景
大数据·人工智能·microsoft·微服务·机器人
紧跟先前的步伐14 小时前
Go AI Agent 实战 24|工具系统工程化收尾与阶段验收
人工智能·ai·golang·1024程序员节
释厄62315 小时前
AI学习层更新与跨体转移律——人类社会同构·不缺理解缺 U
人工智能·学习
老金带你玩AI15 小时前
集万家所长,一键复制的Agent.md!
人工智能
ZhuoAIStage15 小时前
舞台工艺多专业审图提速:用 AI 智能体编排 A+B+C+G 四段读图流水线
人工智能·自动化·工作流编排·舞台工艺·审图智能体
小奶包他干奶奶15 小时前
AI学习——1、机器学习概念
人工智能·机器学习
展讯快报16 小时前
悬浮提词器免费App评估报告:说得AI的免费策略与可用性分析
人工智能
Yuzhiyuxia16 小时前
【AI Agent面试系列】AI Agent记忆机制知识点1
人工智能·面试·职场和发展
2601_9654488716 小时前
AI视频制作:做系列历史人物视频音色不搭,AI 音色克隆的方法实测
人工智能·音视频