2025-10-01 17:06:51 +08:00
|
|
|
# LangChain 学习项目
|
|
|
|
|
|
|
|
|
|
这是一个 LangChain 学习演示项目,涵盖了从基础调用到高级应用(RAG、Agent)的完整示例。
|
|
|
|
|
|
|
|
|
|
## 项目结构
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
lang-demo1/
|
|
|
|
|
├── notebooks/ # Jupyter 学习笔记
|
|
|
|
|
│ ├── demo1.ipynb # 核心示例(7个主题)
|
|
|
|
|
│ └── sample.ipynb # 基础示例
|
|
|
|
|
├── src/ # 可复用代码
|
|
|
|
|
│ ├── utils/ # 工具函数
|
|
|
|
|
│ └── chains/ # 自定义链
|
|
|
|
|
├── tests/ # 单元测试
|
|
|
|
|
├── data/ # 数据文件
|
|
|
|
|
└── models/ # 模型文件
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 快速开始
|
|
|
|
|
|
|
|
|
|
### 1. 安装依赖
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
pip install -r requirements.txt
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
主要依赖:
|
|
|
|
|
- `langchain` - LangChain 核心库
|
|
|
|
|
- `langchain-openai` - OpenAI 集成
|
|
|
|
|
- `langchain-community` - 社区工具
|
|
|
|
|
- `faiss-cpu` - 向量数据库
|
|
|
|
|
- `python-dotenv` - 环境变量管理
|
|
|
|
|
|
|
|
|
|
### 2. 配置环境变量
|
|
|
|
|
|
|
|
|
|
在项目根目录创建 `.env` 文件:
|
|
|
|
|
|
|
|
|
|
```env
|
|
|
|
|
# OpenAI API 配置
|
|
|
|
|
OPENAI_BASE_URL=你的API地址
|
|
|
|
|
OPENAI_API_KEY1=你的API密钥
|
|
|
|
|
|
|
|
|
|
# LangSmith 追踪配置(可选)
|
|
|
|
|
LANGSMITH_TRACING=true
|
|
|
|
|
LANGSMITH_API_KEY=你的LangSmith密钥
|
|
|
|
|
LANGSMITH_PROJECT=你的项目名
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 3. 运行示例
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
jupyter notebook
|
|
|
|
|
# 或
|
|
|
|
|
jupyter lab
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
然后打开 `notebooks/demo1.ipynb` 开始学习。
|
|
|
|
|
|
|
|
|
|
## 学习内容
|
|
|
|
|
|
|
|
|
|
### 1. 基础 LLM 调用
|
|
|
|
|
使用 `ChatOpenAI` 进行基本的模型调用
|
|
|
|
|
|
|
|
|
|
### 2. 提示词模板
|
|
|
|
|
使用 `ChatPromptTemplate` 创建结构化提示词
|
|
|
|
|
|
|
|
|
|
### 3. 输出解析器
|
|
|
|
|
使用 `JsonOutputParser` 将输出解析为 JSON 格式
|
|
|
|
|
|
|
|
|
|
### 4. 向量存储
|
|
|
|
|
使用 FAISS 向量数据库存储和检索文档
|
|
|
|
|
|
|
|
|
|
### 5. RAG (检索增强生成)
|
|
|
|
|
结合向量检索和 LLM 实现知识问答
|
|
|
|
|
|
|
|
|
|
### 6. Agent 系统
|
|
|
|
|
使用 LangChain Agent 实现工具调用和自主决策
|
|
|
|
|
|
|
|
|
|
## 技术栈
|
|
|
|
|
|
|
|
|
|
- **LLM**: GPT-4.1-nano (通过 OpenAI 兼容接口)
|
|
|
|
|
- **Embeddings**: text-embedding-3-small
|
|
|
|
|
- **向量数据库**: FAISS
|
|
|
|
|
- **Web 抓取**: BeautifulSoup4
|
|
|
|
|
- **开发环境**: Jupyter Notebook/Lab
|
|
|
|
|
|
|
|
|
|
## 注意事项
|
|
|
|
|
|
|
|
|
|
- 代码中使用 `OPENAI_API_KEY1` 而不是标准的 `OPENAI_API_KEY`
|
|
|
|
|
- 向量数据存储在内存中,未做持久化
|
|
|
|
|
- `.env` 文件包含敏感信息,已在 `.gitignore` 中排除
|
|
|
|
|
|
|
|
|
|
## 学习资源
|
|
|
|
|
|
|
|
|
|
- [LangChain 官方文档](https://python.langchain.com/)
|
|
|
|
|
- [LangChain 中文文档](https://www.langchain.com.cn/)
|