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

技术速递|使用 AI 应用模板扩展创建一个 .NET AI 应用与自定义数据进行对话

在本快速入门中,你将学习如何使用 .NET AI 应用模板创建一个 .NET AI 应用,与自定义数据进行对话。该模板旨在简化 .NET 构建 AI 应用的上手体验,帮助你处理常见的设置任务和配置。

先决条件

  • .NET 9.0 SDK

  • 以下任一 IDE(可选):

    • Visual Studio 2022

    • 安装了 C# Dev Kit 的 Visual Studio Code

安装 .NET AI 应用模板

AI Chat Web App 模板通过 NuGet 以模板包的形式提供。使用 dotnet new install 命令安装该包:

dotnet new install Microsoft.Extensions.AI.Templates

创建 .NET AI 应用

安装 AI 应用模板后,你可以通过 Visual Studio 界面、Visual Studio Code 或 .NET CLI 来创建入门应用。

Visual Studio
  1. 在 Visual Studio 中,导航到 文件 > 新建 > 项目

  2. 在“创建新项目”界面中,搜索 AI Chat Web App,选择匹配的结果并点击 下一步

  3. 在“配置新项目”界面中,输入项目名称和位置,然后点击 下一步

  4. 在“附加信息”界面:

    • Framework 选项选择 .NET 9.0

    • AI service provider 选项选择 GitHub Models

    • Vector store 选项选择 本地磁盘存储(用于原型开发)

  5. 点击 创建 完成操作。

Visual Studio Code
  1. 在 Visual Studio Code 中打开命令面板。

  2. 搜索 New project,并选择结果 .NET: New Project

  3. 在项目模板列表中搜索 AI 进行筛选。

  4. 选择 AI Chat Web App 并按 Enter

注意
命令面板目前仅支持默认设置。若要在创建模板时配置 AI 平台和向量存储,请使用 Visual Studio 或 .NET CLI 的工作流。

.NET CLI

  1. 在终端窗口中,导航到设备上的一个空目录。

  2. 使用 dotnet new 命令和以下参数创建一个新应用:

dotnet new aichatweb --Framework net9.0 --provider githubmodels --vector-store local

该命令会根据你指定的配置创建一个新的 .NET 9.0 应用。

  1. 在你喜欢的编辑器(例如 Visual Studio Code)中打开新应用:
code .

探索示例应用

你创建的示例应用是一个 Blazor Interactive Server Web 应用,预先配置了常见的 AI 和数据服务。该应用已为你处理了以下内容:

  • csproj 文件 中包含了必要的 Microsoft.Extensions.AI 包及其他依赖,帮助你快速开始 AI 开发。

  • Program.cs 文件 中创建并注册多个可用于依赖注入的 AI 服务:

    • IChatClient 服务:用于与生成式 AI 模型进行对话。

    • IEmbeddingGenerator 服务:用于生成嵌入向量,这是向量搜索功能的核心。

    • JsonVectorStore:作为内存中的向量存储。

  • 注册一个 SQLite 数据库上下文服务来处理文档导入。应用已预配置为会自动导入你添加到项目 Data 文件夹中的文档(包括示例文件)。

  • 提供一个完整的基于 Blazor 组件的聊天 UI。该 UI 支持 AI 响应的富文本格式,并提供例如结果引用等功能。

GitHub Models:配置对 GitHub Models 的访问

要在代码中访问 GitHub Models,你需要创建一个 GitHub 个人访问 token:

  1. 打开 GitHub 账户设置中 Developer Settings 下的 Personal access tokens 页面。

  2. 选择 Generate new token

  3. 输入 token 名称,在 Permissions 中将 Models 权限设置为 Access: Read-only

  4. 在页面底部选择 Generate token

  5. 复制生成的 token,后续步骤中会使用。

Azure OpenAI:创建并认证 Azure OpenAI 服务

要在 .NET AI 模板中使用 Azure OpenAI,你需要创建并认证一个 Azure OpenAI 服务。

创建 Azure OpenAI 服务

  1. 如果你尚未拥有 Azure OpenAI 服务资源,请先创建一个。

  2. gpt-4o-minitext-embedding-3-small 模型部署到你的 Azure OpenAI 服务资源。在创建这些部署时,请将部署名称与模型名称保持一致(gpt-4o-minitext-embedding-3-small),以匹配模板的默认值。有关如何部署模型,请参阅 Azure OpenAI 文档中的 创建资源。

认证 Azure OpenAI 服务

AI 模板使用 Microsoft Entra ID 实现无密钥、无缝认证。它利用 DefaultAzureCredential 在本地运行时自动检测并使用开发工具中的证书。要连接到服务,请确保你的开发者账户已分配适当的角色,并已登录到本地开发工具。

  1. 为开发者账户分配角色以访问 Azure OpenAI 资源:

    • Azure Portal 中,导航到你的 Azure OpenAI 资源的概览页面。

    • 从左侧导航选择 Access control (IAM)

    • 为你的 Azure 账户添加 Azure AI Developer 角色分配。

  2. 使用已分配 Azure AI Developer 角色的 Azure 账户登录本地开发工具,如 Visual Studio 或 Azure CLI。

配置应用

AI Chat Web App 在创建完成后几乎可以立即运行。但你需要配置应用,以便使用为 GitHub Models 设置的个人访问 token。默认情况下,应用模板会在项目的本地 .NET 用户机密中查找该值。你可以通过 Visual Studio 界面 或 .NET CLI 来管理用户机密。

注意
若你使用 Azure OpenAI 服务,为避免认证错误,请确保你已使用在 Azure OpenAI 资源上被分配 Azure AI Developer 角色的用户登录 Visual Studio 或 Azure CLI。

Visual Studio
  1. 在 Visual Studio 中,右键点击 Solution Explorer 中的项目,选择 Manage User Secrets。这会打开一个 secrets.json 文件,你可以在其中存储 API 密钥,而不会被纳入版本控制。

  2. 添加以下键值对:

{"GitHubModels:Token": "<your-personal-access-token>"
}
.NET CLI
dotnet user-secrets set GitHubModels:Token <your-personal-access-token>

默认情况下,应用模板使用 gpt-4o-minitext-embedding-3-small 模型。若要尝试其他模型,请在 Program.cs 中更新名称参数:

var chatClient = ghModelsClient.AsChatClient("gpt-4o-mini");
var embeddingGenerator = ghModelsClient.AsEmbeddingGenerator("text-embedding-3-small");

运行并测试应用

  1. 在 Visual Studio 顶部点击 运行 按钮启动应用。片刻后,你应该会在浏览器中看到如下 UI 加载:
    在这里插入图片描述
  2. 在输入框中输入提示,例如:“What are some essential tools in the survival kit?”,向 AI 模型提问关于示例文件中导入数据的问题。
    在这里插入图片描述
    应用会对你的问题进行回答,并提供数据来源的引用。你可以点击其中一个引用,跳转到示例文件的相关部分。

下一步

  • 使用 .NET 和 Azure OpenAI Completions 生成文本和对话
http://www.xdnf.cn/news/1362511.html

相关文章:

  • 通过C#上位机串口写入和读取浮点数到stm32实战5(通过串口读取bmp280气压计的数值并在上位机显示)
  • .NET表格控件Spread .NET v18.0——支持富文本、增强PDF导出
  • 算法学习8.25
  • 如何生成雪碧图和 WEBVTT
  • Elasticsearch脑裂紧急处理与预防
  • [React]Antd Upload组件上传多个文件
  • 微服务商城构筑其一
  • VIVO/OPPO手机,显示5G开关
  • 【Wrangler(Cloudflare 的官方 CLI)和 npm/npx 的区别一次讲清】
  • 大模型面试题剖析:Pre-Norm与Post-Norm的对比及当代大模型选择Pre-Norm的原因
  • openharmony之DRM开发:数字知识产权保护揭秘
  • ESP8266学习
  • 迁移面试题
  • 将跨平台框架或游戏引擎开发的 macOS 应用上架 Mac App Store
  • Docker基本使用方法和常用命令
  • 8851定期复盘代码实现设计模式的于芬应用
  • 从2D序列帧到3D体积感:我用AE+UE5 Niagara构建次世代风格化VFX工作流
  • TDengine IDMP 应用场景:IT 系统监控
  • Ubuntu 14.10 i386桌面版安装教程(U盘启动详细步骤-附安装包下载)​
  • 800G时代!全场景光模块矩阵解锁数据中心超高速未来
  • 5分钟发布技术博客:cpolar简化Docsify远程协作流程
  • Zabbix企业级监控运维实践为主(新)
  • ╳╳╳╳╳╳╳╳╳╳头像商店╳╳╳╳╳╳╳╳╳╳
  • 独立显卡接口操作指南
  • blazor 学习笔记--vscode debug
  • 探索汽车材料新纪元:AUTO TECH 2025广州先进汽车材料展即将震撼来袭
  • Vim 的 :term命令:终端集成的终极指南
  • 服务器Docker 安装和常用命令总结
  • 零售收银选乐檬,高市占率背后的全链路价值赋能
  • 【SQL】深入理解MySQL存储过程:从入门到实战