HR政策问答助手

一个基于RAG技术的HR政策问答聊天应用,包含Flask后端API和Next.js前端客户端。

  • by dassudip2001
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 dassudip2001/mcp

使用说明

聊天应用程序-人力资源政策问答助理

一个全栈聊天应用程序,具有RAG(检索增强代)驱动的聊天机器人,可以回答有关人力资源政策的问题。该应用程序由Flask后端API和Next.js前端客户端组成。

🚀 特性

  • 🤖 基于RAG的聊天机器人:使用检索增强生成来回答基于人力资源政策文档的问题
  • 🔍 矢量搜索:利用ChromaDB进行语义搜索和文档检索
  • 🎨 现代前端:Next.js 16,带有React 19、TypeScript和Tailwind CSS
  • 🏗️ 整洁架构:实现可维护代码结构的控制器服务模式
  • 🔐 基于环境的配置:使用环境变量进行安全配置管理
  • 📊 健康检查端点:监视应用程序运行状况
  • 🚀 RESTful API:用于聊天交互的结构良好的API端点

📁 项目结构

chat-application/
├── chat-bot-langchain-latest/    # Backend Flask API
│   ├── app/
│   │   ├── config/                # Application configuration
│   │   ├── controllers/           # Request controllers
│   │   ├── models/                # Pydantic models
│   │   ├── routes/                # API routes
│   │   └── services/              # Business logic & RAG agent
│   ├── chroma_db/                 # ChromaDB persistent storage
│   ├── main.py                    # Application entry point
│   ├── pyproject.toml             # Python dependencies
│   └── docker-compose.yml         # Docker configuration
│
└── chat-client/                   # Frontend Next.js client
    ├── app/                      # Next.js app directory
    ├── public/                  # Static assets
    ├── package.json             # Node.js dependencies
    └── tsconfig.json            # TypeScript configuration

🛠️ 技术栈

后端

  • 框架:烧瓶3.1.2+
  • LLM:OpenAI GPT-4.1微米
  • 矢量数据库:ChromaDB
  • 嵌入:OpenAI文本嵌入-3大
  • 语言链:朗链
  • 验证:Pydantic
  • python: 3.13+

前端

  • 框架:Next.js 16.1.1
  • 用户界面库:反应19.2.3
  • 语言:TypeScript 5+
  • 样式:顺风CSS 4
  • 包管理器:Bun

📋 先决条件

  • Python 3.13或更高版本
  • Node.js 20+(或Bun)
  • OpenAI API密钥
  • Git

🔧 安装

后端设置

  1. 导航到后端目录:
cd chat-bot-langchain-latest
  1. 使用安装依赖项 uv (推荐)或 pip:
# Using uv
uv pip install -e .

# Or using pip
pip install -e .
  1. 创建一个 .env 后端目录中的文件:
OPENAI_API_KEY=your_openai_api_key_here
PORT=5000
FLASK_ENV=development
  1. (可选)使用Docker设置ChromaDB:
docker-compose -f chroma-docker-compose.yml up -d

前端设置

  1. 导航到前端目录:
cd chat-client
  1. 安装依赖项:
# Using bun (recommended)
bun install

# Or using npm
npm install

🚀 运行应用程序

启动后端服务器

cd chat-bot-langchain-latest
python main.py

后端API将在 http://localhost:5000

启动前端客户端

cd chat-client
bun dev
# or
npm run dev

前端将在 http://localhost:3000

📡 API终点

聊天端点

POST /api/v1/ask
Content-Type: application/json

{
  "question": "What is the leave policy for employees?"
}

答复:

{
  "answer": "Based on the HR policy document...",
  "status": "success"
}

健康检查

GET /api/v1/health

答复:

{
  "status": "healthy",
  "message": "Service is running"
}

🔄 RAG的工作原理

  1. 文档处理:人力资源政策PDF被拆分为块并转换为向量嵌入
  2. 向量存储:嵌入存储在ChromaDB中,用于快速相似性搜索
  3. 查询处理:用户问题转换为嵌入
  4. 检索:系统找到前3个最相关的文档块
  5. 生成:GPT-4.1-mini使用检索到的上下文生成答案

🐳 Docker支持

后端使用Docker

cd chat-bot-langchain-latest
docker-compose up -d

ChromaDB与Docker

cd chat-bot-langchain-latest
docker-compose -f chroma-docker-compose.yml up -d

🧪 测试

后端测试

cd chat-bot-langchain-latest
python testing/testing.py

📝 环境变量

后端(.env)

  • OPENAI_API_KEY:您的OpenAI API密钥(必需)
  • PORT:服务器端口(默认值:5000)
  • FLASK_ENV:环境模式(开发/生产)

前端

在前端代码中配置API端点以指向后端URL。

🐛 故障排除

常见问题

  1. OpenAI API密钥错误:确保 OPENAI_API_KEY 设置在您的 .env 文件
  2. ChromaDB连接错误:检查是否 chroma_db 目录具有适当的权限
  3. 端口已在使用中:更改 PORT 在你的 .env 文件
  4. 未找到模块:确保使用安装所有依赖项 uv pip install -e . 或 pip install -e .

📚 发展

添加新功能

后端:

  1. 新路线:添加路线 app/routes/
  2. 新控制器:在中创建控制器 app/controllers/
  3. 新服务:在中添加业务逻辑 app/services/
  4. 新型号:在中定义架构 app/models/schema.py

前端:

  1. 在中添加新页面 app/ 目录
  2. 根据需要创建组件
  3. 更新API调用以匹配后端终结点

📄 许可证

该项目根据MIT许可证获得许可。

🤝 贡献

欢迎投稿!请随时提交拉取请求。

📞 支持

有关问题和疑问,请在存储库上打开一个问题。

👤 作者

Sudip 酒店


备注:该项目是作为IBM SkillsBuild冬季认证计划-应用人工智能的一部分创建的。