LLM Chat
一个基于 FastAPI + LangChain 的 AI 聊天应用,支持多智能体(Agent)管理和多轮对话,消息持久化到 SQLite 数据库。

功能特性
- 创建和管理多个 AI 智能体,每个智能体可配置独立的系统提示词、模型和温度参数
- 多轮对话,历史记录自动加载
- 流式输出(Streaming)
- Markdown 格式渲染(标题、代码块、列表、引用、表格等)
- 对话历史持久化(SQLite)
- 响应式 Web 界面
技术栈
- 后端:FastAPI、LangChain、SQLAlchemy
- 前端:原生 HTML / CSS / JavaScript
- 数据库:SQLite
- Python:3.13+
安装
创建虚拟环境
# 使用 uv(推荐)
uv venv && source .venv/bin/activate
uv pip install -r requirements.txt
# 或使用 Python 内置 venv
python3.13 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt使用 uv sync(如项目已配置 pyproject.toml)
uv sync配置
复制 .env 文件并填写你的 API 密钥:
cp .env.example .env # 如有模板.env 配置项:
| 变量 | 说明 | 默认值 |
|---|---|---|
DATABASE_URL | 数据库连接字符串 | sqlite:///./llm_chat.db |
| `OPENAIAPIKEY` | LLM API 密钥 | — |
| `OPENAIBASEURL` | API 端点地址 | https://api.openai.com/v1 |
OPENAI_MODEL | 默认模型 | gpt-4o-mini |
启动
# 激活虚拟环境(如果尚未激活)
source .venv/bin/activate
# 使用 uv
uv run uvicorn main:app --reload --host 0.0.0.0 --port 8000
# 或使用 python
python -m uvicorn main:app --reload --host 0.0.0.0 --port 8000然后用浏览器打开 http://localhost:8000。
目录结构
.
├── main.py # FastAPI 应用入口
├── database.py # 数据库连接与初始化
├── models.py # SQLAlchemy 数据模型
├── schemas.py # Pydantic 请求/响应模型
├── requirements.txt # Python 依赖
├── routers/
│ ├── agents.py # 智能体 CRUD 接口
│ ├── chats.py # 对话 CRUD 接口
│ └── llm.py # 聊天消息接口(含流式)
└── static/
├── index.html # 前端页面
├── app.js # 前端逻辑
└── style.css # 样式API 接口
| 方法 | 路径 | 说明 |
|---|---|---|
GET | /api/agents | 获取所有智能体 |
POST | /api/agents | 创建智能体 |
PUT | /api/agents/{id} | 更新智能体 |
DELETE | /api/agents/{id} | 删除智能体 |
GET | /api/chats | 获取所有对话 |
POST | /api/chats | 创建对话 |
GET | /api/chats/{id} | 获取对话详情(含消息) |
PATCH | /api/chats/{id} | 更新对话(如绑定智能体) |
PUT | /api/chats/{id}/title | 更新对话标题 |
DELETE | /api/chats/{id} | 删除对话 |
GET | /api/chats/agent/{agent_id} | 获取智能体最近一条对话 |
POST | /api/chat | 发送消息(非流式) |
POST | /api/chat/stream | 发送消息(流式) |