# LangChain 1.0 升级说明

## 一、升级概览

本项目已完成从 LangChain 0.3 到 LangChain 1.x 的升级，并同步升级 LangGraph 至 1.x。升级后兼容 Python 3.12。

## 二、依赖变更

| 包 | 升级前 | 升级后 |
|----|--------|--------|
| langchain | >=0.3.0 | >=1.0.0 |
| langchain-core | (间接依赖) | >=0.3.0 |
| langchain-openai | >=0.2.0 | >=0.2.0 |
| langgraph | >=0.2.74 | >=1.0.0 |
| langchain-community | >=0.4.0 | **已移除**（项目未使用） |

## 三、代码改造说明

### 3.1 保持不变的部分

项目采用 **自定义 StateGraph** 架构（非 `create_react_agent`），以下导入在 LangChain/LangGraph 1.x 中保持兼容：

```python
from langchain_core.messages import BaseMessage, HumanMessage, SystemMessage
from langchain_openai import ChatOpenAI
from langgraph.checkpoint.memory import MemorySaver
from langgraph.graph import END, START, StateGraph
from langgraph.graph.message import add_messages
from langgraph.prebuilt import ToolNode
from langchain_core.tools import tool
```

### 3.2 已适配的变更

1. **消息内容提取**：LangChain 1.0 引入 `content_blocks`，`content` 可能为字符串或 multimodal 列表。新增 `_extract_message_text()` 辅助函数，统一处理两种格式。
2. **依赖精简**：移除未使用的 `langchain-community`，减少依赖冲突。

### 3.3 LangChain 1.0 主要变更（参考）

- **包命名空间精简**：核心功能移至 `langchain-core`，`langchain` 主包聚焦 Agent 构建
- **create_agent**：若未来迁移到 `langchain.agents.create_agent`，可参考 `docs/Skills实现方案-LangChain1.0.md`
- **langchain-classic**：Legacy chains、Retrievers 等已迁移至 `langchain-classic`，本项目未使用

## 四、环境要求

- **Python**：3.12+（**LangChain 1.x 要求 Python 3.10+**，不支持 3.9 及以下）
- 若系统默认 Python 版本过低，需使用虚拟环境：

```bash
# 方式 1：使用 conda（推荐，项目根目录 scripts/setup_conda_env.sh）
conda create -n shop_agent python=3.12
conda activate shop_agent
pip install -r requirements.txt

# 方式 2：使用 pyenv
pyenv install 3.12
pyenv local 3.12
pip install -r requirements.txt

# 方式 3：使用 venv（需系统已安装 python3.12）
python3.12 -m venv venv
source venv/bin/activate  # Linux/Mac
pip install -r requirements.txt
```

## 五、验证

```bash
# 验证导入
python -c "
from langchain_core.messages import HumanMessage
from langchain_openai import ChatOpenAI
from langgraph.graph import StateGraph
from langgraph.prebuilt import ToolNode
print('LangChain 1.x 依赖加载成功')
"
```
