6.7 KiB
6.7 KiB
LangChain Learning Kit
企业级 LangChain 学习平台 - 提供完整的后端 API 系统,展示 LangChain 核心功能
项目简介
LangChain Learning Kit 是一个教学性质但架构接近生产环境的学习平台,帮助开发者理解和掌握 LangChain 的关键功能:
- 🤖 模型管理: 支持多种 LLM 和 Embedding 模型配置与切换
- 📚 知识库管理: 基于 FAISS 的向量存储和文档检索
- 💬 多轮对话: 支持会话状态和历史管理
- 🔧 智能体编排: Agent 与工具集成 (Retriever, Calculator)
- ⚡ 异步处理: 文档分块、嵌入计算等异步任务
技术栈
- 后端框架: FastAPI
- 数据库: MySQL 8.0 + SQLAlchemy 2.0
- LangChain: langchain + langchain-openai
- 向量存储: FAISS (本地)
- 容器化: Docker + Docker Compose
- 测试: pytest
快速开始
前置要求
- Python 3.11+
- MySQL 8.0+
- OpenAI API Key
1. 克隆项目
git clone http://124.221.136.193:3000/python-test/langchain-learning-kit.git
cd langchain-learning-kit
2. 安装依赖
方式 A: 使用 Conda (推荐 - 适合 Anaconda 用户)
# 自动化安装(Windows)
setup_conda_env.bat
# 或手动创建环境
conda env create -f environment.yml
conda activate langchain-learning-kit
详细说明请查看 CONDA_SETUP.md
方式 B: 使用 venv (传统方式)
# 创建虚拟环境
python -m venv venv
# 激活虚拟环境
# Windows
venv\Scripts\activate
# Linux/Mac
source venv/bin/activate
# 安装依赖
pip install -r requirements.txt
3. 配置环境变量
cp .env.example .env
# 编辑 .env 文件,填入你的配置
必需的环境变量:
DATABASE_URL: MySQL 连接字符串OPENAI_API_KEY: OpenAI API Key
4. 初始化数据库
# 方式 A: 使用初始化脚本
python scripts/init_db.py
# 方式 B: 使用 Alembic 迁移
cd app/db
alembic upgrade head
5. 启动服务
# 从项目根目录启动
python -m uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
服务启动后访问:
- API 文档: http://localhost:8000/docs
- 健康检查: http://localhost:8000/health
使用 Docker
# 启动所有服务 (MySQL + API)
docker-compose up -d
# 查看日志
docker-compose logs -f api
# 停止服务
docker-compose down
# 开发模式 (代码热重载)
docker-compose --profile dev up api-dev
项目结构
langchain-learning-kit/
├── app/
│ ├── main.py # FastAPI 入口
│ ├── config.py # 配置管理
│ ├── api/ # API 路由
│ │ ├── models.py # 模型管理 API
│ │ ├── kb.py # 知识库 API
│ │ ├── conv.py # 对话 API
│ │ └── agent.py # Agent API
│ ├── services/ # 业务逻辑层
│ │ ├── model_manager.py
│ │ ├── kb_manager.py
│ │ ├── conv_manager.py
│ │ ├── agent_orchestrator.py
│ │ └── job_manager.py
│ ├── db/ # 数据库层
│ │ ├── models.py # SQLAlchemy 模型
│ │ ├── session.py # 数据库连接
│ │ └── alembic/ # 迁移脚本
│ ├── tools/ # LangChain 工具
│ │ ├── retriever.py
│ │ └── calculator.py
│ └── utils/ # 工具函数
│ ├── text_splitter.py
│ ├── faiss_helper.py
│ ├── logger.py
│ └── exceptions.py
├── tests/ # 测试
│ ├── conftest.py # pytest 配置
│ └── test_api_health.py
├── docs/ # 文档
│ ├── architecture.md # 架构设计
│ └── api.md # API 文档
├── scripts/ # 脚本
│ └── init_db.py # 数据库初始化
├── Dockerfile # Docker 镜像
├── docker-compose.yml # 容器编排
├── pytest.ini # 测试配置
├── requirements.txt # Python 依赖
├── environment.yml # Conda 环境
└── .env.example # 环境变量模板
API 使用示例
创建模型配置
curl -X POST "http://localhost:8000/api/v1/models" \
-H "Content-Type: application/json" \
-d '{
"name": "gpt-4",
"type": "llm",
"config": {
"model_name": "gpt-4",
"temperature": 0.7
},
"is_default": true
}'
创建知识库
curl -X POST "http://localhost:8000/api/v1/kb" \
-H "Content-Type: application/json" \
-d '{
"name": "my_kb",
"description": "My first knowledge base"
}'
摄取文档
curl -X POST "http://localhost:8000/api/v1/kb/1/ingest" \
-H "Content-Type: application/json" \
-d '{
"documents": [
{
"title": "LangChain Introduction",
"content": "LangChain is a framework for developing applications powered by language models...",
"source": "manual"
}
]
}'
查询知识库
curl -X POST "http://localhost:8000/api/v1/kb/1/query" \
-H "Content-Type: application/json" \
-d '{
"query": "What is LangChain?",
"k": 5
}'
测试
# 运行所有测试
pytest
# 运行特定测试
pytest tests/unit/test_model_manager.py
# 生成覆盖率报告
pytest --cov=app --cov-report=html
文档
- 架构设计 - 系统架构、数据流、设计决策
- API 文档 - REST API 详细文档
- 交互式 API 文档 - Swagger UI (启动服务后访问)
核心功能
1. 模型管理
支持多种 LLM 和 Embedding 模型的配置、切换和版本管理。
2. 知识库 (RAG)
- 文档上传和分块
- 向量嵌入计算
- FAISS 向量检索
- 元数据管理
3. 多轮对话
- 会话状态管理
- 对话历史存储
- RAG 上下文注入
4. 智能体 (Agent)
- Retriever Tool: 知识库检索
- Calculator Tool: 数学计算
- 可扩展工具系统
开发指南
添加新的 LLM 提供商
- 在
app/services/model_manager.py中添加提供商类 - 实现
get_llm()方法 - 更新配置验证逻辑
添加新的 Agent 工具
- 在
app/tools/创建工具文件 - 继承 LangChain Tool 基类
- 在
AgentOrchestrator中注册工具
贡献
欢迎提交 Issue 和 Pull Request!
许可证
MIT License
联系方式
如有问题,请提交 Issue。