serverless-chat-langchainjs

Azure-SamplesMIT活跃维护

用 LangChain.js、TypeScript 和 Azure 快速搭建无服务器 RAG 聊天机器人,省去自己拼装检索与生成链路的麻烦。

Build your own serverless AI Chat with Retrieval-Augmented-Generation using LangChain.js, TypeScript and Azure

暂无版本868star +1 / 7 天484fork同步于 2026-11-10 11:54 UTC

怎么上手

由 README 提炼,执行前请确认
git clone <your-repo-url>
azd auth login
azd up
硬件要求按 README 说明

README 未说明显存要求;本地开发可用 Ollama 运行 Llama3.1,需 Node.js 20 及以上;部署到 Azure 需可访问 Azure OpenAI 的订阅。

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

用 LangChain.js 和 Azure 无服务器服务搭建带 RAG 的 AI 聊天应用示例

用 LangChain.js、TypeScript 和 Azure 快速搭建无服务器 RAG 聊天机器人,省去自己拼装检索与生成链路的麻烦。

核心能力

  • 用 LangChain.js 摄取文档并生成回答
  • 以 Cosmos DB NoSQL 作向量库存储文档向量
  • 用 Azure Functions 与 Static Web Apps 无服务器部署
  • 为每个用户保留个人聊天会话历史
  • 支持用 Ollama 本地开发免云端费用

容易踩的坑

部署前需 Azure 订阅已开通 Azure OpenAI 服务访问权限;Windows 用户需 PowerShell 7+ 且能运行 pwsh.exe;本地纯离线运行须按 Local Development 章节配置 Ollama。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

0 个版本

暂无 release 数据(可能没有发版,或尚未同步)。

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    Serverless AI Chat with RAG using LangChain.js

    Open project in GitHub Codespaces Join Azure AI Foundry Discord Official Learn documentation Watch to learn about RAG and this sample on YouTube dev.to blog post walkthrough Build Status Node version Ollama + Llama3.1 TypeScript License

    :star: If you like this sample, star it on GitHub — it helps a lot!

    Overview • Get started • Run the sample • Resources • FAQ • Troubleshooting

    Animation showing the chat app in action

    This sample shows how to build a serverless AI chat experience with Retrieval-Augmented Generation using LangChain.js and Azure. The application is hosted on Azure Static Web Apps and Azure Functions, with Azure Cosmos DB for NoSQL as the vector database. You can use it as a starting point for building more complex AI applications.

    [!TIP] You can test this application locally without any cost using Ollama. Follow the instructions in the Local Development section to get started.

    Overview

    Building AI applications can be complex and time-consuming, but using LangChain.js and Azure serverless technologies allows to greatly simplify the process. This application is a chatbot that uses a set of enterprise documents to generate responses to user queries.

    We provide sample data to make this sample ready to try, but feel free to replace it with your own. We use a fictitious company called Contoso Real Estate, and the experience allows its customers to ask support questions about the usage of its products. The sample data includes a set of documents that describes its terms of service, privacy policy and a support guide.

    This application is made from multiple components:

    • A web app made with a single chat web component built with Lit and hosted on Azure Static Web Apps. The code is located in the packages/webapp folder.

    • A serverless API built with Azure Functions and using LangChain.js to ingest the documents and generate responses to the user chat queries. The code is located in the packages/api folder.

    • A database to store chat sessions and the text extracted from the documents and the vectors generated by LangChain.js, using Azure Cosmos DB for NoSQL.

    • A file storage to store the source documents, using Azure Blob Storage.

    We use the HTTP protocol for AI chat apps to communicate between the web app and the API.

    Features

    • Serverless Architecture: Utilizes Azure Functions and Azure Static Web Apps for a fully serverless deployment.
    • Retrieval-Augmented Generation (RAG): Combines the power of Azure Cosmos DB and LangChain.js to provide relevant and accurate responses.
    • Chat Sessions History: Maintains a personal chat history for each user, allowing them to revisit previous conversations.
    • Scalable and Cost-Effective: Leverages Azure's serverless offerings to provide a scalable and cost-effective solution.
    • Local Development: Supports local development using Ollama for testing without any cloud costs.

    Getting started

    There are multiple ways to get started with this project.

    The quickest way is to use GitHub Codespaces that provides a preconfigured environment for you. Alternatively, you can set up your local environment following the instructions below.

    [!IMPORTANT] If you want to run this sample entirely locally using Ollama, you have to follow the instructions in the local environment section.

    Use your local environment

    You need to install following tools to work on your local machine:

    • Node.js LTS
    • Azure Developer CLI
    • Git
    • PowerShell 7+ (for Windows users only)
      • Important: Ensure you can run pwsh.exe from a PowerShell command. If this fails, you likely need to upgrade PowerShell.
      • Instead of Powershell, you can also use Git Bash or WSL to run the Azure Developer CLI commands.
    • Azure Functions Core Tools (should be installed automatically with NPM, only install manually if the API fails to start)

    Then you can get the project code:

    1. Fork the project to create your own copy of this repository.
    2. On your forked repository, select the Code button, then the Local tab, and copy the URL of your forked repository.

    Use GitHub Codespaces

    You can run this project directly in your browser by using GitHub Codespaces, which will open a web-based VS Code:

    Open in GitHub Codespaces

    Use a VSCode dev container

    A similar option to Codespaces is VS Code Dev Containers, that will open the project in your local VS Code instance using the Dev Containers extension.

    You will also need to have Docker installed on your machine to run the container.

    Open in Dev Containers

    Run the sample

    There are multiple ways to run this sample: locally using Ollama or Azure OpenAI models, or by deploying it to Azure.

    Deploy the sample to Azure

    Azure prerequisites
    Cost estimation

    See the cost estimation details for running this sample on Azure.

    Deploy the sample
    1. Open a terminal and navigate to the root of the project.
    2. Authenticate with Azure by running azd auth login.
    3. Run azd up to deploy the application to Azure. This will provision Azure resources, deploy this sample, and build the search index based on the files found in the ./data folder.
      • You will be prompted to select a base location for the resources. If you're unsure of which location to choose, select eastus2.
      • By default, the OpenAI resource will be deployed to eastus2. You can set a different location with azd env set AZURE_OPENAI_RESOURCE_GROUP_LOCATION <location>. Currently only a short list of locations is accepted. That location list is based on the OpenAI model availability table and may become outdated as availability changes.

    The deployment process will take a few minutes. Once it's done, you'll see the URL of the web app in the terminal.

    You can now open the web app in your browser and start chatting with the bot.

    Enhance security

    When deploying the sample in an enterprise context, you may want to enforce tighter security restrictions to protect your data and resources. See the enhance security guide for more information.

    Enable CI/CD

    If you want to enable Continuous Deployment for your forked repository, you need to configure the Azure pipeline first:

    1. Open a terminal at the root of your forked project.
    2. Authenticate with Azure by running azd auth login.
    3. Run azd pipeline config to configure the required secrets and variables for connecting to Azure from GitHub Actions.
      • This command will set up the necessary Azure service principal and configure GitHub repository secrets.
      • Follow the prompts to complete the configuration.

    Once configured, the GitHub Actions workflow will automatically deploy your application to Azure whenever you push changes to the main branch.

    Clean up

    To clean up all the Azure resources created by this sample:

    1. Run azd down --purge
    2. When asked if you are sure you want to continue, enter y

    The resource group and all the resources will be deleted.

    Run the sample locally with Ollama

    If you have a machine with enough resources, you can run this sample entirely locally without using any cloud resources. To do that, you first have to install Ollama and then run the following commands to download the models on your machine:

    ollama pull llama3.1:latest
    ollama pull nomic-embed-text:latest
    

    [!NOTE] The llama3.1 model with download a few gigabytes of data, so it can take some time depending on your internet connection.

    After that you have to install the NPM dependencies:

    npm install
    

    Then you can start the application by running the following command which will start the web app and the API locally:

    npm start
    

    Then, open a new terminal running concurrently and run the following command to upload the PDF documents from the /data folder to the API:

    npm run upload:docs
    

    This only has to be done once, unless you want to add more documents.

    You can now open the URL http://localhost:8000 in your browser to start chatting with the bot.

    [!NOTE] While local models usually works well enough to answer the questions, sometimes they may not be able to follow perfectly the advanced formatting instructions for the citations and follow-up questions. This is expected, and a limitation of using smaller local models.

    Run the sample locally with Azure OpenAI models

    First you need to provision the Azure resources needed to run the sample. Follow the instructions in the Deploy the sample to Azure section to deploy the sample to Azure, then you'll be able to run the sample locally using the deployed Azure resources.

    Once your deployment is complete, you should see a .env file in the packages/api folder. This file contains the environment variables needed to run the application using Azure resources.

    To run the sample, you can then use the same commands as for the Ollama setup. This will start the web app and the API locally:

    npm start
    

    Open the URL http://localhost:8000 in your browser to start chatting with the bot.

    Note that the documents are uploaded automatically when deploying the sample to Azure with azd up.

    [!TIP] You can switch back to using Ollama models by simply deleting the packages/api/.env file and starting the application again. To regenerate the .env file, you can run azd env get-values > packages/api/.env.

    Resources

    Here are some resources to learn more about the technologies used in this sample:

    You can also find more Azure AI samples here.

    FAQ

    You can find answers to frequently asked questions in the FAQ.

    Troubleshooting

    If you have any issue when running or deploying this sample, please check the troubleshooting guide. If you can't find a solution to your problem, please open an issue in this repository.

    Guidance

    For more detailed guidance on how to use this sample, please refer to the tutorial.

    Getting Help

    If you get stuck or have any questions about building AI apps, join:

    Azure AI Foundry Discord

    If you have product feedback or errors while building visit:

    Azure AI Foundry Developer Forum

    Contributing

    This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com.

    When you submit a pull request, a CLA bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.

    This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.

    Trademarks

    This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow Microsoft's Trademark & Brand Guidelines. Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship. Any use of third-party trademarks or logos are subject to those third-party's policies.