当前位置: 首页 > article >正文

技术速递|.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。只需运行:

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# 函数:

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 以包含您的方法:

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 用户扩展模板选项。

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

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


http://www.kler.cn/a/594351.html

相关文章:

  • 用Ollama部署大语言模型
  • Spring MVC 拦截器使用
  • Linux系统上后门程序的原理细节,请仔细解释一下
  • Excel处理控件Spire.XLS系列教程:C# 在 Excel 中添加或删除单元格边框
  • 编码器线:精准连接,高效传动,引领未来科技的脉动
  • “三带一”算法题
  • Python八字排盘系统实现分析
  • 【vulhub/wordpress靶场】------获取webshell
  • 音视频之H.265码流分析及解析
  • SpringBoot第四站(1):数据层开发: 配置数据源,整合jdbcTemplate
  • Node.js技术原理分析系列6——基于 V8 封装一个自己的 JavaScript 运行时
  • STM32 模拟SPI 模式0
  • 【数据结构】单源最短路径dijkstra算法描述及模板
  • 【Linux】信号:产生信号
  • Unity 接入抖音小游戏
  • 低代码与在线教育系统源码:企业内训平台开发的新思路
  • 智慧社区、智慧消防物联网解决方案PPT(68页)
  • 标准化欧氏距离公式
  • 移动端医疗AI诊断系统的设计思路与技术展望——多模态生理数据分析的理论框架探讨
  • uniapp配置代理解决跨域问题