chat-copilot
chat-copilot 是一款由微软推出的开源示例应用,旨在帮助开发者理解如何在 Web 应用中集成大型语言模型(LLM)与语义内核技术。它并非为生产环境设计,而是一个用于学习和实验的参考项目,让用户能够快速搭建属于自己的智能聊天助手原型。
该工具解决了从零开始构建 AI 聊天应用时面临的技术整合难题,通过提供完整的前后端架构,简化了开发流程。用户无需重复造轮子,即可直观地看到前端界面、后端 API 服务以及语义记忆处理模块是如何协同工作的。
chat-copilot 特别适合 .NET 和 React 开发者、AI 技术研究人员以及对语义内核感兴趣的学习者使用。对于希望探索 Azure OpenAI 或 OpenAI 服务集成的团队,它提供了一个清晰的起步模板。
其核心技术亮点在于基于微软 Semantic Kernel 构建,包含三个主要部分:基于 React 的前端网页应用、.NET 后端 REST API 服务,以及专门处理语义记忆的 .NET 后台工作服务。这种分层架构不仅展示了如何将 AI 能力嵌入传统 Web 应用,还演示了如何管理对话上下文和长期记忆。需要注意的是,运行此示例需要配置相应的 AI 服务(如 Azure OpenAI 或 OpenAI),且每次交互都会消耗对应的 Token 额度,因此主要用于本地测试和技术验证。
使用场景
某电商企业的技术团队正试图为内部客服系统构建一个能理解复杂业务逻辑的 AI 助手,以辅助人工处理售后咨询。
没有 chat-copilot 时
- 开发门槛高:工程师需从零搭建前后端架构,手动整合 React 前端与 .NET 后端,耗时数周才能跑通基础对话流程。
- 记忆能力缺失:传统聊天机器人无法利用“语义内存”存储历史交互,每次回答都像初次见面,无法关联用户之前的订单或投诉记录。
- 模型集成困难:对接 Azure OpenAI 或 OpenAI 服务时,需自行处理复杂的 API 认证、令牌管理及错误重试机制,极易出错。
- 缺乏参考范例:团队在探索 Semantic Kernel 如何落地 Web 应用时缺乏完整样本,只能在碎片化文档中摸索,试错成本极高。
使用 chat-copilot 后
- 快速启动原型:直接复用其成熟的 React 前端、.NET API 及内存处理管道,几天内即可在本地运行起具备完整功能的对话演示。
- 智能上下文关联:借助内置的语义内存管道,助手能自动检索并理解用户历史对话,针对“上次提到的物流延迟”做出连贯回应。
- 无缝接入大模型:配置好密钥即可立即调用 GPT-4o 等模型,底层复杂的令牌计费和连接逻辑已由示例代码妥善处理。
- 清晰的学习路径:作为官方教育样本,它直观展示了 Semantic Kernel 在 Web 端的最佳实践,让团队迅速掌握核心架构模式。
chat-copilot 的核心价值在于将抽象的 AI 编排概念转化为可运行的实体样板,极大缩短了从理论验证到原型落地的距离。
运行环境要求
- Windows
- Linux
- macOS
未说明
未说明

快速开始
注意:这是一个示例应用程序,旨在帮助您了解语义知识库和人工智能如何在 Web 应用程序中协同工作。此示例不适用于生产环境部署。
聊天助手示例应用程序
本示例允许您构建自己的集成大型语言模型(LLM)聊天助手。该示例基于 Microsoft 的 Semantic Kernel 构建,包含三个组件:
- 前端应用 React Web 应用
- 后端 REST API .NET Web API 服务
- 用于处理语义记忆的 .NET 工作器服务。
这些快速入门指南可在本地运行该示例。您也可以在 Chat Copilot 的 Microsoft Learn 官方文档页面上找到入门内容。
如需将示例部署到 Azure,请在满足下方要求后查看部署 Chat Copilot。
重要提示:本示例仅用于教育目的,不建议用于生产环境部署。
重要提示:每次聊天交互都会调用 Azure OpenAI/OpenAI,这将消耗可能产生费用的令牌。

要求
运行本示例需要以下内容:
- .NET 8.0 SDK (通过 Setup install.* 脚本安装)
- Node.js (通过 Setup install.* 脚本安装)
- Yarn (通过 Setup install.* 脚本安装)
- Git
- AI 服务(必须选择以下之一)
| AI 服务 | 要求 |
|---|---|
| Azure OpenAI | - 访问权限 - 资源 - 已部署的模型 ( gpt-4o 和 text-embedding-ada-002) - 终结点 - API 密钥 |
| OpenAI | - 账户 - API 密钥 |
指令
Windows
以管理员身份打开 PowerShell。
注意:请确保已安装 PowerShell Core 6+。这与 Windows 上默认安装的 PowerShell 不同。
克隆此仓库
git clone https://github.com/microsoft/chat-copilot设置您的环境。
下面是一个帮助您安装所需依赖项的脚本。您可以选择自己喜欢的方式安装
dotnet、nodejs和yarn,也可以使用此脚本。cd <chat-copilot 路径>\scripts\ .\Install.ps1注意:此脚本将安装
Chocolatey、dotnet-8.0-sdk、nodejs和yarn。注意:如果您收到脚本未经过数字签名或无法在系统上执行的错误,您可能需要 更改执行策略(请参阅 策略列表 和 作用域),或者 取消阻止该脚本。
配置 Chat Copilot。
.\Configure.ps1 -AIService {AI_SERVICE} -APIKey {API_KEY} -Endpoint {AZURE_OPENAI_ENDPOINT}AI_SERVICE:AzureOpenAI或OpenAI。API_KEY:Azure OpenAI 或 OpenAI 的 API 密钥。AZURE_OPENAI_ENDPOINT:Azure OpenAI 资源的端点地址。仅在使用 Azure OpenAI 时需要此参数;如果使用 OpenAI,则省略-Endpoint。重要提示:对于
AzureOpenAI,如果您以自定义名称部署了模型gpt-4o和text-embedding-ada-002(而非默认名称),还需使用以下参数:-CompletionModel {DEPLOYMENT_NAME} -EmbeddingModel {DEPLOYMENT_NAME}打开
.\Configure.ps1脚本即可查看所有可用参数。
在本地运行 Chat Copilot。此步骤将同时启动后端 API 和前端应用。
.\Start.ps1第一次运行时,Yarn 包可能需要几分钟才能完成安装。
注意:请确认弹出窗口未被阻止,并且您已使用注册应用程序时所用的同一账户登录。
(可选)仅启动后端:
.\Start-Backend.ps1
Linux/macOS
以管理员身份打开 Bash。
克隆此仓库
git clone https://github.com/microsoft/chat-copilot配置环境。
下面是一个帮助您安装所需依赖项的脚本。您可以选择自己喜欢的方式安装
dotnet、nodejs和yarn,也可以使用此脚本。cd <chat-copilot 路径>/scripts/Ubuntu/Debian Linux
./install-apt.sh注意:此脚本使用
apt安装dotnet-sdk-8.0、nodejs和yarn。macOS
./install-brew.sh注意:此脚本使用
homebrew安装dotnet-sdk、nodejs和yarn。配置 Chat Copilot。
对于 OpenAI
./configure.sh --aiservice OpenAI --apikey {API_KEY}API_KEY:OpenAI 的 API 密钥。
对于 Azure OpenAI
./configure.sh --aiservice AzureOpenAI \ --endpoint {AZURE_OPENAI_ENDPOINT} \ --apikey {API_KEY}AZURE_OPENAI_ENDPOINT:Azure OpenAI 资源的端点地址。API_KEY:Azure OpenAI 的 API 密钥。
重要提示:如果您以自定义名称部署了模型
gpt-4o和text-embedding-ada-002(而非默认名称),则需要通过三个额外的参数指定部署名称:./configure.sh --aiservice AzureOpenAI \ --endpoint {AZURE_OPENAI_ENDPOINT} \ --apikey {API_KEY} \ --completionmodel {DEPLOYMENT_NAME} \ --embeddingmodel {DEPLOYMENT_NAME}
在本地运行 Chat Copilot。此步骤将同时启动后端 API 和前端应用。
./start.sh第一次运行时,Yarn 包可能需要几分钟才能完成安装。
注意:请确认弹出窗口未被阻止,并且您已使用注册应用程序时所用的同一账户登录。
(可选)仅启动后端:
./start-backend.sh
(可选)运行 内存管道
默认情况下,Web API 配置为不使用内存管道进行同步文档处理。要启用异步文档处理,您需要配置 Web API 和内存管道。有关更多信息,请参阅 Web API README 和 内存管道 README。
(可选)通过 Azure AD 启用后端身份验证
默认情况下,Chat Copilot 在本地运行时不进行身份验证,使用来宾用户配置文件。如果您希望启用 Azure Active Directory 身份验证,请按照以下步骤操作。
要求
指令
为前端 Web 应用创建一个应用程序注册,使用以下值:
支持的帐户类型:仅此组织目录中的帐户(仅限 {YOUR TENANT} - 单租户)重定向 URI(可选):单页应用程序(SPA),并使用 http://localhost:3000。
为后端 Web API 创建第二个应用程序注册,使用以下值:
支持的帐户类型:仅此组织目录中的帐户(仅限 {YOUR TENANT} - 单租户)- 请勿配置
重定向 URI(可选)
注意:如果您希望允许多租户和个人 Microsoft 帐户使用您的应用程序,也可以使用其他帐户类型。这样做可能会带来更多的用户,从而增加成本。
请记下两个应用程序注册的
应用程序(客户端)ID,您将在后续步骤中需要它们。在第二个应用程序注册中公开 API
从菜单中选择 公开 API
添加 应用程序 ID URI
这将生成一个
api://URI单击 保存 以存储生成的 URI
为
access_as_user添加范围单击 添加范围
将 范围名称 设置为
access_as_user将 谁可以同意 设置为 管理员和用户
将 管理员同意显示名称 和 用户同意显示名称 设置为
以用户身份访问 Copilot 聊天将 管理员同意描述 和 用户同意描述 设置为
允许以用户身份访问 Copilot 聊天 Web API
将 Web 应用前端添加为授权的客户端应用程序
单击 添加客户端应用程序
对于 客户端 ID,输入前端的应用程序(客户端)ID
勾选 授权范围 下的复选框
单击 添加应用程序
为 Web 应用前端添加以用户身份访问 Web API 的权限
打开 Web 应用前端的应用程序注册
转到 API 权限
点击 添加权限
选择 我的组织使用的 API 选项卡
选择代表 Web API 后端的应用程序注册
选择权限
access_as_user点击 添加权限
使用附加参数运行配置脚本以设置身份验证。
PowerShell
.\Configure.ps1 -AiService {AI_SERVICE} -APIKey {API_KEY} -Endpoint {AZURE_OPENAI_ENDPOINT} -FrontendClientId {FRONTEND_APPLICATION_ID} -BackendClientId {BACKEND_APPLICATION_ID} -TenantId {TENANT_ID} -Instance {AZURE_AD_INSTANCE}Bash
./configure.sh --aiservice {AI_SERVICE} --apikey {API_KEY} --endpoint {AZURE_OPENAI_ENDPOINT} --frontend-clientid {FRONTEND_APPLICATION_ID} --backend-clientid {BACKEND_APPLICATION_ID} --tenantid {TENANT_ID} --instance {AZURE_AD_INSTANCE}AI_SERVICE:AzureOpenAI或OpenAI。API_KEY:用于 Azure OpenAI 或 OpenAI 的API 密钥。AZURE_OPENAI_ENDPOINT:Azure OpenAI 资源的Endpoint地址。仅在使用 Azure OpenAI 时需要此参数;如果使用 OpenAI,则省略-Endpoint。FRONTEND_APPLICATION_ID:与前端应用程序注册关联的应用程序(客户端)ID。BACKEND_APPLICATION_ID:与后端应用程序注册关联的应用程序(客户端)ID。TENANT_ID:您的 Azure AD 租户 ID。AZURE_AD_INSTANCE(可选):用于身份验证用户的 Azure AD 云实例。默认为https://login.microsoftonline.com。
在本地运行 Chat Copilot。此步骤将同时启动后端 API 和前端应用程序。
PowerShell
.\Start.ps1Bash
./start.sh
可选配置:带有 On-Behalf-Of 流程的 Ms Graph API 插件
此原生插件允许使用委托权限通过 On-Behalf-Of(OBO)流程执行 Microsoft Graph API。
OBO 流程用于确保后端 API 以用户的标识调用,而不是中间层应用程序(本例中为 WebApi)的托管标识或服务主体。
此外,这还确保已获得同意,以便客户端应用(WebApp)可以调用中间层应用(WebApi),而中间层应用则有权调用后端资源(MSGraph)。
此示例未在 UI 中实现增量同意,因此所有要使用的 Graph 范围都必须在中间层应用程序注册中获得“管理员同意”。
更多信息请参阅 OBO readme.md。
要求
必须启用通过 Azure AD 的后端身份验证。启用后端身份验证的详细说明如下。
限制
- 目前,该插件仅支持 GET 操作。未来更新可能会增加对其他类型操作的支持。
- 返回大量结果的 Graph 查询可能会达到 AI 模型的令牌限制,从而导致错误。
- 此示例未实现增量同意。
故障排除
问题: 无法加载聊天。
详情: interactionin_progress: 交互当前正在进行中。
解释: 当应用程序配置为与浏览器不同的 AAD 租户时(例如,个人/MSA 帐户与工作/学校帐户),WebApp 可能会显示此错误。
解决方案: 使用隐私/无痕浏览器标签页,或清除浏览器凭据/Cookie。请确认您使用的是注册应用程序时所用的同一帐户登录。
问题: 使用文本补全模型时遇到困难,例如
text-davinci-003。解决方案: 对于 OpenAI,请参阅 模型端点兼容性,以获取支持聊天补全的当前模型完整列表。对于 Azure OpenAI,请参阅 模型摘要表及区域可用性。
问题: localhost SSL 证书错误 / CORS 错误

解释: 您的浏览器可能正在阻止前端访问后端,同时等待您授权连接。
解决方案:
- 确认后端服务正在运行。打开网页浏览器并导航至
https://localhost:40443/healthz- 您应看到确认消息:
Healthy - 如果浏览器提示您确认访问不安全网站的风险,您必须先确认,前端才能连接到后端服务器。
- 您应看到确认消息:
- 导航至
http://localhost:3000或刷新页面,以使用 Chat Copilot 应用程序。
- 确认后端服务正在运行。打开网页浏览器并导航至
问题: Yarn 无法正常工作。
解释: 您可能安装了错误版本的 Yarn,例如 v2.x+。
解决方案: 使用经典版本。
npm install -g yarn yarn set version classic问题: 缺少
/usr/share/dotnet/host/fxr文件夹。详情: 在 Linux 上运行 dotnet 命令时,“发生严重错误。文件夹 [/usr/share/dotnet/host/fxr] 不存在”。
解释: .NET (Core) 最初发布用于 Linux 时,并未在官方 Ubuntu 软件源中提供。因此,许多人添加了 Microsoft 的 APT 软件源来安装它。现在,这些软件包已包含在 Ubuntu 软件源中,但与 Microsoft 提供的软件包存在冲突。此错误是由于混合安装的软件包导致的。(来源: StackOverflow)
解决方案:
# 移除所有现有软件包,以达到干净状态: sudo apt remove --assume-yes dotnet*; sudo apt remove --assume-yes aspnetcore*; sudo apt remove --assume-yes netstandard*; # 设置 Microsoft 软件源的优先级 echo -e "Package: *\nPin: origin \"packages.microsoft.com\"\nPin-Priority: 1001" | sudo tee /etc/apt/preferences.d/99microsoft-dotnet.pref; # 更新并安装 dotnet sudo apt update; sudo apt install --assume-yes dotnet-sdk-8.0;
关于分支的说明
每个版本都与一个发布分支相关联。例如,版本 v0.9 位于名为 0.9 的分支上。 一旦发布完成,该分支将不再更新。唯一的例外是最新发布的分支,它只会接收错误修复。 这样做是为了给那些不希望频繁出现破坏性更改、不愿处于技术前沿(以及伴随而来的各种问题)的人们提供一定的稳定性。
请查看我们的其他仓库!
如果您想深入了解 Semantic Kernel 和人工智能,您可能也会对 Semantic Kernel 团队支持的其他仓库感兴趣:
| 仓库 | 描述 |
|---|---|
| Semantic Kernel | 一个轻量级 SDK,可快速且轻松地将尖端的 LLM 技术集成到您的应用程序中。 |
| Semantic Kernel 文档 | Semantic Kernel 文档的主页,这些文档也出现在 Microsoft Learn 网站上。 |
| Semantic Kernel 入门项目 | 用于 Semantic Kernel 的入门项目,帮助您更轻松地开始使用。 |
| Semantic Memory | 一项服务,允许您创建用于摄取、存储和查询知识的管道。 |
加入社区
我们欢迎您对 Chat Copilot 示例应用的贡献和建议!参与最简单的方式之一就是在 GitHub 仓库中参与讨论。 欢迎提交错误报告和修复!
要了解更多信息并开始使用:
- 阅读 文档
- 加入 Discord 社区
- 贡献 到该项目
- 在我们的 博客 上关注团队
行为准则
本项目已采用 Microsoft 开源行为准则。 如需更多信息,请参阅 行为准则常见问题解答 或发送电子邮件至 opencode@microsoft.com 以提出任何其他问题或意见。
许可证
版权所有 © 微软公司。保留所有权利。
根据 MIT 许可证 授权。
版本历史
v1.0.442024/11/13v1.0.432024/07/25v1.0.422024/07/24v1.0.242024/06/13v1.0.12024/05/13v1.0.02024/05/09v0.9.12024/02/27v0.92023/11/20v0.82023/11/160.7.12023/10/130.72023/10/070.6.12023/10/040.62023/10/030.52023/09/250.42023/09/200.32023/08/300.22023/08/160.12023/08/16常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
gemini-cli
gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。
markitdown
MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器