摘要:在AI应用开发领域,.NET开发者如今有了更高效的选择——.NET官方推出的AI Chat模板,该模板以Blazor为核心构建Web交互界面,能帮助开发者快速搭建支持自定义数据对话的AI应用,大幅简化了AI服务集成、向量存储配置等复杂流程。本文将从模板核心优势
在AI应用开发领域,.NET开发者如今有了更高效的选择——.NET官方推出的AI Chat模板,该模板以Blazor为核心构建Web交互界面,能帮助开发者快速搭建支持自定义数据对话的AI应用,大幅简化了AI服务集成、向量存储配置等复杂流程。本文将从模板核心优势、环境准备、安装与创建、多AI服务配置、功能探索及运行测试等方面,全面解析这一工具的使用方法。
该模板基于Blazor Interactive Server架构开发,专为.NET AI应用打造,核心优势体现在“开箱即用”和“高度适配”两大维度,能解决开发者在AI应用开发中的多个痛点:
1. 自动化配置,减少重复工作:模板已预设Microsoft.Extensions.AI系列核心依赖包,自动注册AI服务(如对话客户端、嵌入生成器)、向量存储和数据库上下文,无需手动编写基础配置代码。 2. 完整UI组件,无需从零设计:内置Blazor聊天界面,支持AI回复的富文本格式化(如列表、引用),并自动添加数据引用标注(点击可跳转至原始文档段落),满足对话场景的交互需求。 3. 多AI服务兼容,灵活切换:官方支持GitHub Models、Azure OpenAI、openai、Ollama四大主流AI服务提供商,开发者可根据需求选择云端或本地模型,无需修改整体架构。 4. 本地向量存储,降低原型成本:默认提供本地磁盘向量存储(JSONVectorStore),适合快速原型开发,无需额外部署分布式向量数据库。 5. 自动文档解析:预设SQLite数据库上下文,可自动解析项目指定目录(如)中的文档(支持示例文件及自定义上传文件),生成向量数据用于后续检索。在使用模板前,需确保本地环境满足以下要求,避免后续出现兼容性问题:
必备组件
具体要求
说明
.NET SDK .NET 9.0 SDK 模板基于.NET 9.0开发,低版本SDK可能导致模板安装或项目运行失败,可通过 dotnet --version命令验证版本。开发工具(可选) Visual Studio 2022 / Visual Studio Code(需安装C# Dev Kit) 支持UI界面操作(如创建项目、管理用户密钥),也可仅使用终端通过.NET CLI完成所有操作。额外依赖(按AI服务选择)
- GitHub Models:需GitHub账号- Azure OpenAi:需Azure账号及OpenAI资源
- OpenAI:需OpenAI API密钥
- Ollama:需本地安装Ollama客户端
不同AI服务的认证方式不同,需提前准备对应账号或本地环境。
该AI Chat模板通过NuGet发布,需使用.NET CLI命令全局安装,操作步骤如下:
1. 打开终端(Windows:PowerShell/命令提示符;macOS/Linux:Terminal)。
2. 执行以下命令,安装模板包:
dotnet new install Microsoft.Extensions.AI.Templates 3. 安装完成后,可通过 dotnet new list命令验证,若输出中包含AI Chat Web App (aichatweb),则说明模板安装成功。模板支持通过Visual Studio、Visual Studio Code、.NET CLI三种方式创建项目,其中Visual Studio和.NET CLI支持自定义AI服务提供商和向量存储,VS Code暂仅支持默认配置。以下分场景说明关键步骤:
4.1 通用配置说明无论选择哪种方式,创建项目时需确认三个核心参数:
• Framework:固定选择.NET 9.0(模板仅支持该版本)。 • AI服务提供商(Provider):可选githubmodels(GitHub Models)、azureopenai(Azure OpenAI)、openai(OpenAI)、ollama(本地Ollama)。 • 向量存储(Vector Store):默认选择local(本地磁盘,适合原型开发)。4.2 方式1:使用Visual Studio(推荐,可视化配置)1. 打开Visual Studio 2022,点击「File > New > Project」。
2. 在“创建新项目”页面搜索「AI Chat Web App」,选择匹配模板后点击「Next」。
3. 配置项目名称和存储路径,点击「Next」。
4. 在“附加信息”页面:
• 框架选择「.NET 9.0」。
• AI服务提供商选择目标平台(如「GitHub Models」)。
• 向量存储选择「Local on-disc (for prototyping)」。
• (Azure OpenAI专属)勾选「Use keyless authentication for Azure services」(基于Microsoft Entra ID免密钥认证)。
5. 点击「Create」,项目将自动生成并加载所有依赖。
4.3 方式2:使用.NET CLI(跨平台,命令行高效创建)cd ~/Projects/AIApps # 示例路径,可自定义 2. 执行 dotnet new命令,指定参数创建项目(以Ollama为例):dotnet new aichatweb --Framework net9.0 --provider ollama --vector-store local • 若需创建GitHub Models项目,将 --provider ollama替换为--provider githubModels;Azure OpenAI替换为--provider azureopenai,以此类推。code .4.4 方式3:使用Visual Studio Code(默认配置,适合快速尝试)
1. 打开VS Code,按下「Ctrl+Shift+P」(macOS:「Cmd+Shift+P」)打开命令面板。
2. 搜索「.NET: New Project」并选择。
3. 搜索「AI」过滤模板,选择「AI Chat Web App」并按回车。
4. 选择项目存储路径,等待项目生成(默认使用OpenAI作为服务提供商,本地向量存储)。注意:VS Code命令面板创建的项目无法自定义参数,若需指定AI服务或框架,需后续手动修改配置文件,或改用前两种方式。
项目创建后,需根据选择的AI服务提供商完成认证配置,确保应用能正常调用AI模型。以下分四大场景详解配置步骤:
5.1 场景1:对接GitHub Models(需个人访问令牌)步骤1:创建GitHub个人访问令牌(PAT)1. 登录GitHub,进入「Settings > Developer settings > Personal access tokens」。
2. 点击「Generate new token」,输入令牌名称(如「.NET AI App」)。
3. 在「Permissions」中找到「Models」,勾选「Access: Read-only」(仅需只读权限)。
4. 点击「Generate token」,复制生成的令牌(仅显示一次,需立即保存)。
步骤2:配置令牌到项目(二选一)打开Program.cs,找到以下代码,可替换为GitHub Models支持的其他模型:// 默认使用gpt-4o-mini(对话)和text-embedding-3-small(嵌入)var chatClient = ghModelsClient.AsChatClient("gpt-4o-mini");
var embeddingGenerator = ghModelsClient.AsEmbeddingGenerator("text-embedding-3-small");5.2 场景2:对接Azure OpenAI(免密钥+角色授权)
Azure OpenAI支持基于Microsoft Entra ID的免密钥认证,无需手动配置API密钥,步骤如下:
步骤1:创建Azure OpenAI资源与模型部署1. 登录Azure门户( portal.azure.com ),搜索「Azure OpenAI」并创建资源。
2. 资源创建后,进入「Model deployments」,点击「Create deployment」:
• 部署「gpt-4o-mini」(对话模型),部署名称保持与模型名一致。
• 再部署「text-embedding-3-small」(嵌入模型),部署名称同样保持一致。
步骤2:分配Azure AI Developer角色1. 在Azure OpenAI资源页面,点击左侧「Access control (IAM)」。
2. 点击「Add > Add role assignment」,搜索「Azure AI Developer」角色并选择。
3. 选择「User, group, or service principal」,添加你的Azure账号(需与本地开发工具登录账号一致)。
4. 完成角色分配(通常5分钟内生效)。
步骤3:配置Azure OpenAI端点 • Visual Studio:右键项目 > 「Manage User Secrets」,添加端点:{"AzureOpenAi:Endpoint": "https://你的资源名.openai.azure.com/"
} • .NET CLI:执行命令:dotnet user-secrets set AzureOpenAi:Endpoint "https://你的资源名.openai.azure.com/"5.3 场景3:对接OpenAI(需API密钥)步骤1:获取OpenAI API密钥
1. 登录OpenAI官网( platform.openai.com ),进入「API keys」页面。
2. 点击「Create new secret key」,输入名称并复制密钥(保存备用)。
步骤2:配置API密钥到项目 • Visual Studio:「Manage User Secrets」中添加:{"OpenAi:Key": "你的OpenAI API密钥"
} • .NET CLI:执行:dotnet user-secrets set OpenAi:Key "你的OpenAI API密钥"5.4 场景4:对接本地Ollama(无需云端,隐私优先)
Ollama是本地AI模型运行工具,适合对数据隐私有要求的场景,配置步骤如下:
步骤1:启动Ollama服务1. 确保已本地安装Ollama(下载地址: ollama.com )。
2. 打开终端,执行以下命令启动Ollama服务:
步骤2:拉取默认模型模板默认使用若需使用其他模型(如),可执行,并修改Program.cs中的模型名称。打开Program.cs,确认Ollama客户端配置与本地模型匹配:// 若更换模型,修改第二个参数(如"mistral")IChatClient chatClient = new OllamaApiClient(
new Uri("http://localhost:11434"),
"llama3.2");
IEmbeddingGeneratorstring, Embeddingfloat>> embeddingGenerator = new OllamaApiClient(
"all-minilm");
生成的项目为Blazor Interactive Server应用,核心结构和预设功能如下,帮助开发者快速定位关键代码:
6.1 核心目录与文件路径
作用
Program.cs核心配置文件:注册AI服务(IChatClient、IEmbeddingGenerator)、向量存储(JsonVectorStore)、SQLite数据库上下文。 文档存储目录:放入的文档(如PDF、TXT)会被自动解析为向量数据,用于AI对话的上下文检索。 Components/Pages/Chat.razor聊天界面组件:包含消息输入框、对话历史展示、引用标注等UI元素,逻辑与UI分离。 Services/ 业务服务目录:包含文档处理(如 DocumentIngestionService)、AI对话逻辑等自定义服务。obj/Debug/net9.0/ 编译输出目录:包含生成的向量数据( JsonVectorStore文件)和SQLite数据库文件。6.2 预设核心服务模板在中自动注册了三大关键服务,无需手动注入: 1. IChatClient:对话客户端,负责与AI模型交互,发送用户prompt并接收回复。 2. IEmbeddingGenerator:嵌入生成器,将文档内容和用户问题转换为向量,用于向量搜索匹配相关文档片段。 3. JsonVectorStore:本地向量存储,以JSON格式存储向量数据,适合小规模原型开发(生产环境可替换为Azure Cognitive Search等)。 4. SQLite数据库上下文:负责文档元数据的存储和查询,支持批量导入多格式文档。配置完成后,即可启动应用并测试自定义数据对话功能,步骤如下:
7.1 启动应用 • Visual Studio:点击顶部「启动」按钮(或按F5),自动编译并在浏览器打开应用。 • .NET CLI:在项目根目录执行:dotnet run执行成功后,终端会显示应用访问地址(如),复制到浏览器打开。
7.2 测试对话功能1. 浏览器中会显示Blazor聊天界面,包含「New chat」按钮、对话历史区和输入框。
2. 输入与示例文档相关的问题(如模板自带“生存工具包”示例文档,可输入「生存工具包中有哪些必备工具?」)。
3. 点击发送后,应用会先检索 中的文档向量,再结合AI模型生成回复,并在回复下方显示数据来源(如「Example.pdf」,点击可查看原文片段)。7.3 自定义文档测试 1. 将自定义文档(如 产品手册.pdf)放入目录。2. 重启应用(确保文档被解析)。
3. 输入与文档相关的问题(如「产品手册中提到的保修政策是什么?」),AI会基于该文档内容生成回复并标注来源。
完成基础功能测试后,可基于模板进行进一步扩展,满足生产环境需求:
1. 替换向量存储:将本地JsonVectorStore替换为Azure Cognitive Search、Pinecone等分布式向量数据库,支持大规模文档检索。 2. 优化UI体验:基于Blazor组件自定义聊天界面,添加消息加载动画、主题切换、历史对话保存等功能。 3. 支持更多文档格式:扩展DocumentIngestionService,增加对Word、Excel、Markdown等格式的解析支持。 4. 集成.NET Aspire:通过.NET Aspire实现应用的容器化部署和服务编排,简化多环境配置管理。 5. 添加用户认证:集成Microsoft Entra ID或Identity Server,实现多用户访问控制和对话数据隔离。通过.NET官方AI Chat模板,开发者无需从零搭建AI应用架构,只需聚焦业务逻辑和自定义数据,即可快速实现具备“文档检索+AI对话”能力的Web应用。无论是原型验证还是小规模生产部署,该模板都能大幅提升开发效率,是.NET生态中AI应用开发的重要工具。
来源:opendotnet