技术速递|使用 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.pswp.cn/news/920556.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/920556.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Cloudflare的AI Gateway代理Google AI Studio

1、说明详见&#xff1a;详见&#xff1a;https://developers.cloudflare.com/ai-gateway/usage/providers/google-ai-studio在"Google AI Studio"创建"API key" 在"Cloudflare"创建"AI Gateway"、获取"Account ID"2、在“G…

Scrapy 框架实战:构建高效的快看漫画分布式爬虫

一、Scrapy框架概述 Scrapy是一个为了爬取网站数据&#xff0c;提取结构性数据而编写的应用框架&#xff0c;它提供了强大的数据提取能力、灵活的扩展机制以及高效的异步处理性能。其核心架构包括&#xff1a; Engine&#xff1a;控制所有组件之间的数据流&#xff0c;当某个…

数据结构(C语言篇):(六)单链表算法题(下)

目录 前言 一、链表的回文结构 二、相交链表 三、环形链表​编辑 四、环形链表II 总结 前言 本篇博客将继续介绍单链表相关的算法题&#xff0c;包括了链表的回文结构、相交链表、环形链表等。现在就让我们正式开始吧&#xff01; 一、链表的回文结构 题目链接&#xff1a…

【AI自动化】VSCode+Playwright+codegen+nodejs自动化脚本生成

VSCodePlaywrightnodejs&#xff0c;能完美实现UI自动化全流程脚本自动生成和回放&#xff0c;生成的脚本方便维护&#xff0c;回放执行快速&#xff1b; 概述 Playwright 是由Microsoft开发的一个开源的跨浏览器自动化测试库&#xff0c;它支持Chromium、WebKit和Firefox浏览…

基于能量方法的纳维-斯托克斯方程高阶范数有界性理论推导-陈墨仙

写在最前面&#xff0c;圈外人&#xff0c;没有背书没有教育邮箱&#xff0c;发不了预印本&#xff0c;我先发csdn。刚才首发没复制完&#xff0c;抱歉&#xff0c;现在编辑下。基于能量方法的纳维-斯托克斯方程高阶范数有界性理论推导作者 陈墨仙邮件 2488888241qq.com摘要纳维…

Labview邪修01:贪吃蛇

从博主很小的时候就在掌机上玩过这个贪吃蛇的小游戏&#xff0c;突然有一天心血来潮的想Labview是不是也可以编这个小游戏&#xff0c;回忆一下童年&#xff01;然后就又了下面的这个程序&#xff0c;执行结果如下图所示。 基本功能&#xff1a; 1&#xff09;点击开始按钮&am…

将自己的jar包发布到maven中央仓库(2025-08-29)

将自己的jar包发布到maven中央仓库(2025-08-29) 一、注册账号 https://central.sonatype.com/ 二、新建命名空间 这里的命名空间需要填写github的用户名因为我的用户名是daimao0,所以命名空间填io.github.daimao0 这里要求你建一个名为ubuxfc5q7r的公共项目&#xff0c;先创…

Spring CompositeCacheManager融合缓存

这是一个非常实用但容易被忽视的组件,它在特定的缓存场景下能提供极大的灵活性。 1. 核心概念:它是什么? ​​CompositeCacheManager​​ 是 Spring Framework 缓存抽象(spring-context模块)的一部分。它的核心作用正如其名——​​组合(Composite)​​。 它本身并不…

无懈可击的 TCP AIMD

不特指 TCP AIMD&#xff0c;而泛指控制范畴的所有 Additive Increase / Multiplicative Decrease 算法&#xff0c;继 难以超越的 TCP AIMD 再叙。 “你永远不能仅凭 BBR 的吞吐更高就说 BBR 比 CUBIC 更好” 这句话怎么总是没人看&#xff0c;这句话是这一系列文章的前提论点…

数据集数量与神经网络参数关系分析

1. 理论基础 1.1 经验法则与理论依据 神经网络的参数量与所需数据集大小之间存在重要的关系&#xff0c;这直接影响模型的泛化能力和训练效果。 经典经验法则10倍法则&#xff1a;数据样本数量应至少为模型参数量的10倍 公式&#xff1a;数据量 ≥ 10 参数量适用于大多数监督学…

项目经验处理

订单取消和支付成功并发问题 这是一个非常经典且重要的分布式系统问题。订单取消和支付成功同时发生&#xff0c;本质上是一个资源竞争问题&#xff0c;核心在于如何保证两个并发操作对订单状态的修改满足业务的最终一致性&#xff08;即一个订单最终只能有一种确定的状态&…

rabbitmq学习笔记 ----- 多级消息延迟始终为 20s 问题排查

问题现象 在实现多级延迟消息功能时&#xff0c;发现每次消息延迟间隔始终为20s&#xff0c;无法按照预期依次使用20s→10s→5s的延迟时间。日志显示每次处理时移除的延迟时间都是20000L。 问题代码片段 1.生产者 Testvoid sendDelayMessage2() {List<Long> expireTimeLi…

软件测试(三):测试流程及测试用例

1.测试流程1.需求分析进行测试之前先阅读需求文档&#xff0c;分析指出不合理或不明确的地方2.计划编写与测试用例测试用例用例即&#xff1a;用户使用的案例测试用例&#xff1a;执行测试的文档作用&#xff1a;用例格式&#xff1a;----------------------------------------…

Python:列表的进阶技巧

列表&#xff08;list&#xff09;作为 Python 最常用的数据结构之一&#xff0c;不仅能存储有序数据&#xff0c;还能在推导式、函数参数传递、数据处理等场景中发挥强大作用。下面介绍一些进阶技巧与常见应用。一、去重与排序1、快速去重&#xff08;不保序&#xff09;nums …

【完整源码+数据集+部署教程】硬币分类与识别系统源码和数据集:改进yolo11-SWC

背景意义 随着经济的发展和数字支付的普及&#xff0c;传统硬币的使用逐渐减少&#xff0c;但在某些地区和特定场合&#xff0c;硬币仍然是重要的支付手段。因此&#xff0c;硬币的分类与识别在自动化支付、智能零售和物联网等领域具有重要的应用价值。尤其是在银行、商超和自助…

莱特莱德:以“第四代极限分离技术”,赋能生物发酵产业升级

莱特莱德&#xff1a;以“第四代极限分离技术”&#xff0c;赋能生物发酵产业升级Empowering Upgrades in the Bio-Fermentation Industry with "Fourth-Generation Extreme Separation Technology生物发酵行业正经历从 “规模扩张” 向 “质效提升” 的关键转型&#xff…

外卖大战之后,再看美团的护城河

美团&#xff08;03690.HK&#xff09;于近日发布了2025年Q2财报&#xff0c;市场无疑将更多目光投向了其备受关注的外卖业务上。毫无悬念&#xff0c;受外卖竞争和加大投入的成本影响&#xff0c;美团在外卖业务上的财务数据受到明显压力&#xff0c;利润大幅下跌&#xff0c;…

R包fastWGCNA - 快速执行WGCNA分析和下游分析可视化

最新版本: 1.0.0可以对着视频教程学习和使用&#xff1a;然而还没录呢, 关注B站等我更新R包介绍 开发背景 WGCNA是转录组或芯片表达谱数据常用得分析, 可用来鉴定跟分组或表型相关得模块基因和核心基因但其步骤非常之多, 每次运行起来很是费劲, 但需要修改的参数并不多所以完全…

GitHub 热榜项目 - 日榜(2025-08-29)

GitHub 热榜项目 - 日榜(2025-08-29) 生成于&#xff1a;2025-08-29 统计摘要 共发现热门项目&#xff1a;11 个 榜单类型&#xff1a;日榜 本期热点趋势总结 本期GitHub热榜展现出三大技术趋势&#xff1a;1&#xff09;AI应用持续深化&#xff0c;ChatGPT等大模型系统提示…