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

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

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

相关推荐
一个处女座的程序猿O(∩_∩)O3 分钟前
大模型开发实战经验汇总:从理论到工程的深度指南
人工智能
狗头鹰15 分钟前
cv2.waitkey() code snippet explanation
人工智能·opencv·计算机视觉
_zwy29 分钟前
从PGC到AIGC:海螺AI多模态内容生成系统架构一站式剖析
人工智能·深度学习·机器学习·计算机视觉·aigc
青岛前景互联信息技术有限公司1 小时前
智慧港口新未来:大数据赋能应急消防,筑牢安全防线
大数据·人工智能·物联网·安全·智慧城市
LucianaiB1 小时前
强大的AI网站推荐(第二集)—— V0.dev
人工智能·ui·ai·网站·推荐
宋138102797201 小时前
5DT数据手套:技术剖析与应用展望
网络·人工智能·深度学习·机器人·人机交互
说私域1 小时前
私域电商的进化逻辑与技术赋能:基于开源AI大模型与S2B2C商城的创新融合研究
人工智能·微信·小程序·开源
果冻人工智能1 小时前
人工智能将如何影响语言的演变?
人工智能
小杨4042 小时前
python入门系列九(模块与标准库)
人工智能·python·pycharm
寻丶幽风2 小时前
论文阅读笔记——Adapter,AdapterFusion,AdapterDrop
论文阅读·人工智能·笔记·语言模型