Files
ailine/README.md
root 22cc9b1096
Some checks failed
构建并部署 AI Agent 服务 / deploy (push) Failing after 1s
```
docs(.gitignore/README/QUICKSTART): 更新文档和忽略配置

- 添加IDE配置、日志和数据文件到.gitignore
- 重构QUICKSTART.md,提供Docker Compose和本地开发两种部署方式
- 更新README.md,优化项目介绍和架构说明
- 移除旧的agent.py和backend.py文件
```
2026-04-13 23:57:16 +08:00

283 lines
7.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# AI Agent - 智能助手系统
一个基于 LangGraph + FastAPI 的智能对话助手支持多模型切换、RAG 知识库检索、文件处理和网页抓取等功能。
---
## 🎯 核心功能
### 面向用户的功能
- 💬 **智能对话**:支持多轮对话,自动记忆上下文
- 🌤️ **天气查询**:实时获取各地天气信息
- 📄 **文档处理**:读取 TXT、PDF、Excel 等格式文件
- 🌐 **网页抓取**:提取网页正文内容
- 🔍 **知识库检索RAG**:基于向量数据库的智能问答
- 🔄 **多模型切换**:前端可选择不同大语言模型
### 技术特性
-**持久化记忆**PostgreSQL 存储对话历史,重启不丢失
-**高可用架构**:模型自动降级,确保服务稳定
-**前后端分离**FastAPI 后端 + Streamlit 前端
-**Docker 部署**:一键启动所有服务
---
## 🏗️ 技术架构
### 技术栈
| 层级 | 技术选型 | 说明 |
|------|---------|------|
| **LLM 服务** | 智谱 AI API / vLLM (Gemma-4) | 云端 API 或本地推理 |
| **Embedding** | 智谱 Embedding API | 向量嵌入(无需 PyTorch |
| **Agent 框架** | LangGraph + LangChain | 工作流编排 |
| **向量数据库** | ChromaDB / pgvector | RAG 知识检索 |
| **后端框架** | FastAPI + Uvicorn | RESTful API + WebSocket |
| **前端框架** | Streamlit | 交互式 Web 界面 |
| **数据库** | PostgreSQL 16 | 对话记忆持久化 |
| **容器化** | Docker + Docker Compose | 服务编排 |
### 架构图
```
┌──────────────┐
│ 用户浏览器 │ Streamlit 前端 (8501)
└──────┬───────┘
│ HTTP/WebSocket
┌──────────────────┐
│ FastAPI 后端 │ 端口 8001
│ ┌────────────┐ │
│ │ AIAgent │ │ 多模型管理
│ └─────┬──────┘ │
│ │ │
│ ┌─────▼──────┐ │
│ │LangGraph │ │ 工作流引擎
│ │ StateGraph │ │
│ └─────┬──────┘ │
│ │ │
│ ┌─────▼──────┐ │
│ │ Tools │ │ 工具集合
│ │ - Weather │ │
│ │ - File IO │ │
│ │ - Web Scrap│ │
│ │ - RAG │ │
│ └────────────┘ │
└────────┬─────────┘
┌────┴────┐
↓ ↓
┌────────┐ ┌──────────┐
│PostgreSQL│ │ChromaDB │
│(记忆存储)│ │(向量检索)│
└────────┘ └──────────┘
```
### 项目结构
```
Agent1/
├── agent.py # Agent 服务核心(多模型管理)
├── graph_builder.py # LangGraph 状态图构建器
├── tools.py # 工具函数定义(@tool 装饰器)
├── backend.py # FastAPI 后端应用
├── frontend.py # Streamlit 前端界面
├── rag_example.py # RAG 实现示例(无 PyTorch
├── docker-compose.yml # Docker 服务编排
├── Dockerfile.backend # 后端镜像构建
├── Dockerfile.frontend # 前端镜像构建
├── requirement.txt # Python 依赖
├── .env # 环境变量配置
└── user_docs/ # 用户文档目录
├── a.txt
├── b.pdf
└── c.xlsx
```
---
## 🚀 快速开始
详细启动指南请查看 [QUICKSTART.md](QUICKSTART.md)
### 方式一Docker Compose推荐
```bash
# 1. 配置 .env 文件
echo "ZHIPUAI_API_KEY=your_key_here" > .env
# 2. 启动所有服务
docker compose up -d --build
# 3. 访问应用
# 前端: http://localhost:8501
# 后端: http://localhost:8001
```
### 方式二:本地开发模式
```bash
# 1. 启动 PostgreSQL
docker run -d --name postgres-langgraph \
-e POSTGRES_PASSWORD=mysecretpassword \
-e POSTGRES_DB=langgraph_db \
-p 5432:5432 postgres:16
# 2. 安装依赖
pip install -r requirement.txt
# 3. 启动后端
python backend.py
# 4. 启动前端(新终端)
streamlit run frontend.py
```
---
## 📖 使用指南
### 基础对话
直接在聊天框输入问题即可:
```
你好,请介绍一下自己
今天北京天气怎么样?
帮我总结一下 a.txt 的内容
```
### 工具调用示例
| 功能 | 示例提问 |
|------|---------|
| 🌤️ 天气查询 | "上海今天天气如何?" |
| 📄 读取文本 | "读取 a.txt 的内容" |
| 📑 解析 PDF | "总结 b.pdf 的主要内容" |
| 📊 Excel 数据 | "显示 c.xlsx 的数据" |
| 🌐 网页抓取 | "抓取 https://example.com 的内容" |
| 🔍 知识库检索 | "根据知识库回答XXX" |
### 多模型切换
1. 在左侧边栏选择模型:
- **智谱 GLM-4**:在线服务,速度快
- **本地 Gemma-4**:本地部署,隐私性好
2. 可随时切换,甚至在同一会话中
3. 点击 "🔄 新会话" 清空当前对话
---
## 🔧 开发指南
### 添加新工具
`tools.py` 中添加新的 `@tool` 装饰函数:
```python
@tool
def my_new_tool(param: str) -> str:
"""
工具描述(会显示给 LLM
Args:
param: 参数说明
Returns:
返回值说明
"""
# 实现逻辑
return result
```
工具会自动注册到 `AVAILABLE_TOOLS` 列表中。
### 添加新模型
`agent.py``initialize()` 方法中添加模型配置:
```python
model_configs = {
"zhipu": self._create_zhipu_llm,
"local": self._create_local_llm,
"new_model": self._create_new_model_llm, # 添加新模型
}
```
### Docker 部署
项目包含完整的 Docker 配置:
- **docker-compose.yml**服务编排PostgreSQL + Backend + Frontend
- **Dockerfile.backend**:后端镜像构建
- **Dockerfile.frontend**:前端镜像构建
- **.gitea/workflows/deploy.yml**CI/CD 自动化部署
详见 [QUICKSTART.md](QUICKSTART.md) 的 Docker 部署章节。
---
## ⚙️ 环境配置
### 必需的环境变量
`.env` 文件中配置:
```env
# 智谱 AI API Key必需
ZHIPUAI_API_KEY=your_api_key_here
# vLLM 本地模型 Token可选
VLLM_LOCAL_KEY=token-abc123
```
### 数据库配置
默认使用 PostgreSQL连接字符串
```
postgresql://postgres:mysecretpassword@localhost:5432/langgraph_db
```
如使用 Docker Compose数据库会在内部网络中自动配置。
---
## 🐛 故障排查
### 常见问题
**Q: 无法连接 PostgreSQL**
```bash
# 检查容器状态
docker ps | grep postgres
# 查看日志
docker logs postgres-langgraph
```
**Q: 后端启动失败?**
- 确认端口 8001 未被占用
- 检查 `.env` 中的 API Key 是否正确
- 查看启动日志确认模型初始化成功
**Q: 模型切换后无响应?**
- 检查所选模型的配置是否正确
- 确认 vLLM 容器是否运行(如使用本地模型)
- 尝试切换到另一个模型
更多问题排查请查看 [QUICKSTART.md](QUICKSTART.md)
---
## 📝 许可证
本项目采用 MIT 许可证。详见 [LICENSE](LICENSE) 文件。
## 🤝 贡献
欢迎提交 Issue 和 Pull Request