serverless-chat-langchainjs
serverless-chat-langchainjs 是一个帮助开发者快速构建无服务器架构 AI 聊天机器人的开源项目。它基于 LangChain.js、TypeScript 和 Azure 云服务,核心功能是结合检索增强生成(RAG)技术,让机器人能够依据企业私有文档(如服务条款、隐私政策或支持指南)来回答用户问题,从而有效解决大模型普遍存在的“幻觉”及缺乏特定领域知识的问题。
该项目特别适合希望探索 AI 应用落地的前端工程师、全栈开发者以及技术研究人员。对于想要在不管理复杂基础设施的前提下,验证 RAG 架构可行性的团队来说,它是一个理想的起点。其独特的技术亮点在于完全采用无服务器设计:前端托管于 Azure Static Web Apps,后端逻辑运行在 Azure Functions 上,并使用 Azure Cosmos DB 作为向量数据库存储知识。此外,项目对本地开发非常友好,支持通过 Ollama 搭配 Llama 3.1 模型进行零成本测试,无需立即依赖云端资源。整体架构清晰,代码示例丰富,能帮助使用者轻松理解从文档处理到智能问答的完整流程,是学习现代 JavaScript AI 开发模式的优质范本。
使用场景
某中型房地产科技公司"Contoso 实业”的客户支持团队,正面临海量产品文档(服务条款、隐私政策、操作指南)导致的人工回复效率低下问题,急需构建一个能自动基于文档回答用户疑问的智能客服系统。
没有 serverless-chat-langchainjs 时
- 开发门槛高且周期长:团队需手动搭建向量数据库、编写复杂的 RAG(检索增强生成)逻辑链,并自行处理前端与后端的对接,耗时数周仍难以跑通原型。
- 运维成本高昂:传统架构需要常备服务器资源,即便在深夜无用户咨询时也产生高额算力费用,且需专人维护服务器伸缩策略。
- 本地测试困难:缺乏便捷的本地调试方案,开发人员必须依赖云端昂贵的大模型 API 进行迭代,试错成本极高。
- 数据更新滞后:每当公司发布新的隐私政策或产品指南,重新索引文档并同步到聊天机器人中流程繁琐,容易导致客服回答过时信息。
使用 serverless-chat-langchainjs 后
- 快速落地原型:利用 LangChain.js 和 Azure 模板,团队在几小时内即可部署包含前端、函数计算和 Cosmos DB 向量库的完整应用,大幅缩短上线时间。
- 真正的按需付费:依托 Azure Functions 和 Static Web Apps 的无服务器架构,系统仅在用户发起对话时消耗资源,闲时零成本,运维压力归零。
- 低成本本地开发:支持集成 Ollama 和本地 Llama3.1 模型,开发者可在零费用的环境下完成代码编写与逻辑验证,显著提升迭代效率。
- 动态知识同步:内置的文档处理流水线让新上传的服务条款能迅速被向量化并纳入检索范围,确保客户随时获得最新、准确的政策解答。
serverless-chat-langchainjs 通过整合成熟的无服务器架构与 RAG 模式,将企业级智能客服的开发难度从“专家级”降维至“入门级”,同时实现了成本与效率的最优平衡。
运行环境要求
- Linux
- macOS
- Windows
- 非必需
- 云端部署无需本地 GPU
- 本地开发使用 Ollama 时,取决于所选模型(如 Llama3.1)的硬件需求,通常建议有独立显卡或高性能 CPU
未说明(本地运行大模型时建议 16GB+)

快速开始
使用 LangChain.js 的无服务器 RAG 聊天应用
:star: 如果你喜欢这个示例,请在 GitHub 上给它点个赞——这对我们帮助很大!
概述 • 开始使用 • 运行示例 • 资源 • 常见问题 • 故障排除

本示例展示了如何使用 LangChain.js 和 Azure 构建基于检索增强生成(RAG)的无服务器 AI 聊天体验。该应用托管在 Azure 静态 Web 应用和 Azure Functions上,向量数据库则使用 Azure Cosmos DB for NoSQL。你可以将其作为构建更复杂 AI 应用程序的起点。
[!TIP] 你可以使用 Ollama 在本地免费测试此应用程序。请按照“本地开发”部分中的说明开始操作。
概述
构建 AI 应用程序可能既复杂又耗时,但借助 LangChain.js 和 Azure 的无服务器技术,可以大大简化这一过程。此应用程序是一个聊天机器人,它利用一组企业文档为用户查询生成响应。
我们提供了示例数据,使此示例可以直接试用,但你也可以自由替换为自己的数据。我们以一家名为 Contoso Real Estate 的虚构公司为例,其客户可以通过该体验就产品使用问题向客服提问。示例数据包括服务条款、隐私政策以及支持指南等文档。
该应用程序由多个组件构成:
一个使用 Lit 构建的单聊 Web 组件,并托管在 Azure 静态 Web 应用上的 Web 应用。代码位于
packages/webapp文件夹中。一个使用 Azure Functions 构建的无服务器 API,利用 LangChain.js 处理文档并为用户的聊天请求生成响应。代码位于
packages/api文件夹中。一个用于存储聊天会话、从文档中提取的文本以及 LangChain.js 生成的向量的数据库,使用的是 Azure Cosmos DB for NoSQL。
一个用于存储源文档的文件存储,使用的是 Azure Blob 存储。
我们使用 AI 聊天应用的 HTTP 协议来实现 Web 应用与 API 之间的通信。
特性
- 无服务器架构:采用 Azure Functions 和 Azure 静态 Web 应用,实现完全无服务器部署。
- 检索增强生成 (RAG):结合 Azure Cosmos DB 和 LangChain.js 的强大功能,提供相关且准确的回复。
- 聊天记录历史:为每位用户维护个人聊天历史,方便他们回顾之前的对话。
- 可扩展且经济高效:利用 Azure 的无服务器服务,提供可扩展且经济高效的解决方案。
- 本地开发:支持使用 Ollama 进行本地开发,无需任何云成本即可进行测试。
开始使用
有多种方式可以开始使用该项目。
最快捷的方式是使用 GitHub Codespaces,它会为你提供一个预配置好的环境。或者,你也可以按照以下说明 设置本地环境。
[!IMPORTANT] 如果你想完全在本地使用 Ollama 运行此示例,必须按照“本地环境”部分中的说明操作。
使用本地环境
您需要在本地机器上安装以下工具:
- Node.js LTS
- Azure 开发者 CLI
- Git
- PowerShell 7+ (仅适用于 Windows 用户)
- 重要提示:请确保可以从 PowerShell 命令行运行
pwsh.exe。如果无法运行,您可能需要升级 PowerShell。 - 您也可以使用 Git Bash 或 WSL 来运行 Azure 开发者 CLI 命令,而无需使用 PowerShell。
- 重要提示:请确保可以从 PowerShell 命令行运行
- Azure Functions Core Tools (通常会随 NPM 自动安装,只有在 API 启动失败时才需手动安装)
然后您可以获取项目代码:
- Fork 该项目以创建您自己的仓库副本。
- 在您的分支仓库中,选择 Code 按钮,然后选择 Local 选项卡,并复制您分支仓库的 URL。
git clone <your-repo-url>
使用 GitHub Codespaces
您可以通过 GitHub Codespaces 直接在浏览器中运行此项目,它将打开一个基于 Web 的 VS Code:
使用 VSCode 开发容器
与 Codespaces 类似的选项是 VS Code 开发容器,它将使用 Dev Containers 扩展在您本地的 VS Code 实例中打开项目。
您还需要在本地机器上安装 Docker 才能运行容器。
运行示例
有多种方式可以运行此示例:在本地使用 Ollama 或 Azure OpenAI 模型,或者将其部署到 Azure。
将示例部署到 Azure
Azure 前提条件
- Azure 账户。如果您是 Azure 新用户,可以 免费注册 Azure 账户,获得免费的 Azure 积分开始使用。如果是学生,还可以通过 Azure for Students 获取免费积分。
- 已启用 Azure OpenAI 服务访问权限的 Azure 订阅。您可以通过 此表格申请访问权限。
- Azure 账户权限:
- 您的 Azure 账户必须具有
Microsoft.Authorization/roleAssignments/write权限,例如 基于角色的访问控制管理员、用户访问管理员 或 所有者。如果您没有订阅级别的权限,必须为现有资源组授予 RBAC 权限,并 部署到该现有资源组。 - 您的 Azure 账户还需具备订阅级别的
Microsoft.Resources/deployments/write权限。
- 您的 Azure 账户必须具有
成本估算
有关在 Azure 上运行此示例的成本估算详情,请参阅 成本估算。
部署示例
- 打开终端并导航到项目根目录。
- 运行
azd auth login进行 Azure 身份验证。 - 运行
azd up将应用程序部署到 Azure。此操作将预配 Azure 资源、部署示例,并根据./data文件夹中的文件构建搜索索引。- 系统会提示您选择资源的基础位置。如果您不确定选择哪个位置,可以选择
eastus2。 - 默认情况下,OpenAI 资源将部署到
eastus2。您可以通过azd env set AZURE_OPENAI_RESOURCE_GROUP_LOCATION <location>设置其他位置。目前仅支持少数几个位置,这些位置基于 OpenAI 模型可用性表,并且可能会随着可用性的变化而更新。
- 系统会提示您选择资源的基础位置。如果您不确定选择哪个位置,可以选择
部署过程需要几分钟时间。完成后,您将在终端中看到 Web 应用程序的 URL。
现在您可以在浏览器中打开 Web 应用程序,并开始与机器人聊天。
增强安全性
在企业环境中部署示例时,您可能希望实施更严格的安全限制,以保护您的数据和资源。有关更多信息,请参阅 增强安全性 指南。
启用 CI/CD
如果您希望为您的分支仓库启用持续部署,需要先配置 Azure 管道:
- 在您的分支项目的根目录下打开终端。
- 运行
azd auth login进行 Azure 身份验证。 - 运行
azd pipeline config配置从 GitHub Actions 连接到 Azure 所需的密钥和变量。- 此命令将设置必要的 Azure 服务主体,并配置 GitHub 仓库的密钥。
- 按照提示完成配置。
配置完成后,每当您将更改推送到主分支时,GitHub Actions 工作流就会自动将您的应用程序部署到 Azure。
清理
要清理由此示例创建的所有 Azure 资源:
- 运行
azd down --purge - 当系统询问您是否确定继续时,输入
y
资源组及所有资源将被删除。
在本地使用 Ollama 运行示例
如果你的机器资源足够,你可以完全在本地运行这个示例,而无需使用任何云资源。为此,你首先需要安装 Ollama,然后运行以下命令以在你的机器上下载模型:
ollama pull llama3.1:latest
ollama pull nomic-embed-text:latest
[!NOTE]
llama3.1模型会下载几 GB 的数据,因此根据你的网络连接速度,可能需要一些时间。
之后,你需要安装 NPM 依赖项:
npm install
然后,你可以通过运行以下命令来启动应用程序,这将同时在本地启动 Web 应用和 API:
npm start
接着,打开一个新的终端窗口并同时运行以下命令,将 /data 文件夹中的 PDF 文档上传到 API:
npm run upload:docs
这一步只需要执行一次,除非你想要添加更多文档。
现在,你可以在浏览器中打开 http://localhost:8000 来开始与机器人聊天。
[!NOTE] 虽然本地模型通常足以回答问题,但有时它们可能无法完全遵循关于引用和后续问题的高级格式化指令。这是预期的行为,也是使用较小本地模型的一个局限性。
在本地使用 Azure OpenAI 模型运行示例
首先,你需要预配运行示例所需的 Azure 资源。按照将示例部署到 Azure 部分的说明将示例部署到 Azure,然后你就可以使用已部署的 Azure 资源在本地运行示例。
部署完成后,你应该会在 packages/api 文件夹中看到一个 .env 文件。该文件包含使用 Azure 资源运行应用程序所需的环境变量。
要运行示例,你可以使用与 Ollama 设置相同的命令。这将同时在本地启动 Web 应用程序和 API:
npm start
打开浏览器中的 http://localhost:8000 URL,即可开始与机器人聊天。
请注意,当你使用 azd up 将示例部署到 Azure 时,文档会自动上传。
[!TIP] 你可以通过简单地删除
packages/api/.env文件并重新启动应用程序,切换回使用 Ollama 模型。要重新生成.env文件,可以运行azd env get-values > packages/api/.env。
资源
以下是一些资源,可以帮助你深入了解本示例中使用的技术:
- LangChain.js 文档
- 使用 JavaScript 的生成式 AI
- 面向初学者的生成式 AI
- Azure OpenAI 服务
- Azure Cosmos DB for NoSQL
- Ask YouTube:LangChain.js + Azure 快速入门示例
- 使用 Azure OpenAI 和 Azure AI Search 的聊天 + 企业数据
- 用聊天彻底革新你的企业数据:基于 Azure OpenAI 和 AI Search 的下一代应用
你还可以在这里找到更多 Azure AI 示例。
常见问题解答
你可以在常见问题解答中找到常见问题的答案。
故障排除
如果你在运行或部署此示例时遇到任何问题,请查看故障排除指南。如果仍然无法解决问题,请在此仓库中提交一个问题。
指导
有关如何使用此示例的更详细指导,请参阅教程。
获取帮助
如果你在构建 AI 应用时遇到困难或有任何疑问,请加入:
如果你在构建过程中有产品反馈或遇到错误,请访问:
贡献
本项目欢迎贡献和建议。大多数贡献都需要你同意一份贡献者许可协议 (CLA),声明你有权且确实授予我们使用你贡献的权利。有关详情,请访问 https://cla.opensource.microsoft.com。
当你提交拉取请求时,CLA 机器人会自动判断你是否需要提供 CLA,并相应地标记 PR(例如状态检查、评论)。只需按照机器人提供的指示操作即可。对于使用我们 CLA 的所有仓库,你只需执行一次此操作。
本项目采用了微软开源行为准则。有关更多信息,请参阅行为准则常见问题解答,或如有其他疑问或意见,请联系 opencode@microsoft.com。
商标
本项目可能包含项目、产品或服务的商标或徽标。对微软商标或徽标的授权使用必须遵守并遵循微软商标与品牌指南。在本项目的修改版本中使用微软商标或徽标时,不得造成混淆或暗示微软的赞助。任何第三方商标或徽标的使用均受其各自政策的约束。
常见问题
相似工具推荐
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 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
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 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器
LLMs-from-scratch
LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备