© 2026FindAgent  · @simprr
返回列表
m

mayooear/ai-pdf-chatbot-langchain

AI PDF chatbot agent built with LangChain & LangGraph

agentsaichatbotlangchainlanggraphnextjsopenaipdftypescript
⭐

16.4k

Stars

🔱

3.2k

Forks

👁

156

Watchers

📋

0

Issues

TypeScriptMIT创建于 2023/3/17更新于 今天
在 GitHub 上查看访问主页
README
由 Gemini 翻译整理

基于 LangChain 和 LangGraph 的 AI PDF 聊天机器人与智能体

这是一个基于 Monorepo 架构的可定制 AI 聊天机器人智能体模板,它能够“摄入”PDF 文档,将向量嵌入(Embeddings)存储在向量数据库(Supabase)中,并利用 LangChain 和 LangGraph 作为编排框架,使用 OpenAI(或其它 LLM 提供商)回答用户查询。

该模板是《Learning LangChain (O'Reilly)》一书的配套示例,旨在讲解如何使用 LangChain 和 LangGraph 构建 AI 和 LLM 应用程序。

[!IMPORTANT] 本项目目前不再积极维护,仅供参考。请不要期待对新的 Issue 或 Pull Request 进行响应。

聊天机器人 UI 预览:

目录

  1. 功能特性
  2. 架构概览
  3. 前提条件
  4. 安装
  5. 环境变量
    • 前端环境变量
    • 后端环境变量
  6. 本地开发
    • 运行后端
    • 运行前端
  7. 使用说明
    • 上传/摄入 PDF
    • 提问
    • 查看聊天记录
  8. 生产环境构建与部署
  9. 自定义智能体
  10. 故障排查
  11. 后续步骤

功能特性

  • 文档摄入图 (Document Ingestion Graph):上传并解析 PDF 为 Document 对象,随后将向量嵌入存储至向量数据库(本示例使用 Supabase)。
  • 检索图 (Retrieval Graph):处理用户问题,决定是检索文档还是直接回答,并生成包含引用来源的精简回复。
  • 流式响应 (Streaming Responses):将服务端的部分响应实时流式传输至客户端 UI。
  • LangGraph 集成:使用 LangGraph 的状态机方法编排摄入与检索流程,可视化智能体工作流,并对图中的每个步骤进行调试。
  • Next.js 前端:支持文件上传、实时聊天,并可通过 React 组件和 Tailwind 轻松扩展。

架构概览

┌─────────────────────┐    1. Upload PDFs    ┌───────────────────────────┐
│Frontend (Next.js)   │ ────────────────────> │Backend (LangGraph)       │
│ - React UI w/ chat  │                      │ - Ingestion Graph         │
│ - Upload .pdf files │ <───────────────────  │ - Retrieval Graph         │
│ - Chat + SSE stream │    2. Streaming Data  │ - Supabase (Vector DB)    │
│ - Display sources   │                       │ - LLM (OpenAI)            │
└─────────────────────┘                       └───────────────────────────┘

前提条件

  • Node.js (建议 v18+)
  • Python (建议 v3.11+)
  • OpenAI API Key
  • Supabase 账号(用于向量存储)

安装

克隆仓库后:

git clone https://github.com/mayooear/ai-pdf-chatbot-langchain
cd ai-pdf-chatbot-langchain

环境变量

在前端和后端目录中分别设置 .env 文件。

前端环境变量

在 frontend/.env 中:

NEXT_PUBLIC_LANGGRAPH_API_URL=http://localhost:2024

后端环境变量

在 backend/.env 中:

OPENAI_API_KEY=sk-...
SUPABASE_URL=...
SUPABASE_SERVICE_KEY=...

本地开发

运行后端

进入后端目录并启动服务器:

cd backend
pip install -r requirements.txt
# 启动 API
python main.py

运行前端

进入前端目录并启动开发服务器:

cd frontend
npm install
npm run dev

使用说明

上传/摄入 PDF

在 UI 界面中点击上传按钮,选择本地 PDF 文件。后端将自动解析文档并将其向量化存入 Supabase。

提问

在聊天窗口输入问题。系统会触发检索图逻辑,查询相关文档并结合 LLM 生成回复。

查看聊天记录

系统支持简单的对话历史记录,UI 会自动展示当前的交互内容。


生产环境构建与部署

若要部署到生产环境,建议:

  1. 后端:使用 Docker 封装 Python 应用,部署至云服务(如 Fly.io, AWS App Runner)。
  2. 前端:使用 Vercel 或 Netlify 部署 Next.js 应用。
  3. 数据库:使用托管的 Supabase 实例。

自定义智能体

你可以修改 backend/ 下的 graph.py 文件来调整 LangGraph 的节点逻辑。例如,你可以添加自定义检索器、更改提示词模板 (Prompt Templates) 或引入新的工具 (Tools)。


故障排查

  1. 依赖问题:确保 Node.js 版本 >= 18 且安装了所有依赖。
  2. 网络错误:前端必须指向正确的 NEXT_PUBLIC_LANGGRAPH_API_URL。默认配置为 http://localhost:2024。

后续步骤

如果你想为本项目做出贡献,欢迎提交 Pull Request。请确保代码文档完善,并包含相应的测试用例。

若想深入了解如何使用 LangChain 和 LangGraph 构建 AI 聊天机器人与智能体,请查阅书籍《Learning LangChain (O'Reilly)》。

贡献者
mja
项目信息
默认分支main
LicenseMIT License
创建时间2023/3/17
最近更新今天
GAI 中文摘要

ai-pdf-chatbot-langchain 是一个基于 LangChain 和 LangGraph 构建的 AI PDF 聊天机器人模板项目。该项目通过将 PDF 文档转化为向量存储,利用大模型实现对文档内容的智能问答,为开发者提供了构建可定制化智能代理的完整参考方案。

项目通过构建文档摄入图,实现 PDF 的自动化解析、向量化处理及 Supabase 数据库存储。 利用检索图机制,智能决策是否需要查阅文档,并生成带有引用来源的精准回答。 支持实时流式响应,将后端生成的回复片段同步展示在前端界面。 集成 LangGraph 状态机,以可视化的方式编排处理流程并轻松调试代理行为。 提供 Next.js 前端界面,支持文档上传、实时对话及组件化扩展。

该项目适用于希望学习如何使用 LangChain 和 LangGraph 构建企业级文档问答系统的开发者。通过此模板,用户可以在个人项目或生产环境中快速搭建具备文档检索能力的 AI 聊天应用。