Files
hz4th_coder 23991c3552 v2.0.0 大模型驱动版:移除智能体,直接调用大模型接口
- 核心改造:不再使用 openclaw 智能体执行处理步骤,改为直接调用大模型接口
- 新增 services/llm_client.py:OpenAI 兼容接口客户端,支持多模型配置管理
- 步骤4/5 由大模型直接完成(提取产品数据、填充字段)
- 步骤6 改为直接调用 ParamHub API 提交审核
- 新增 llm_configs 数据库表,默认配置 unsloth/Qwen3.6-27B-Q4_K_M (262144上下文)
- 新增 /api/llm 配置管理 API:增删改查、切换激活、测试连接
- 前端首页新增「大模型配置」面板,可随时新增/切换模型
- 处理步骤名称更新为「大模型」版
2026-08-13 17:15:53 +08:00

443 lines
11 KiB
Markdown
Raw Permalink 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.
# Param Auto Manager - 参数数据自动化管理系统
自动管理参数数据网站的系统,支持从内容库和互联网搜索数据,自动处理产品并提交到后台管理待审核区。
## 功能特性
- 📚 **内容库管理**:存储和管理搜索获取的相关文章内容
- 🔄 **自动处理流程**:自动从待处理列表中提取产品并处理
- 🔍 **智能搜索**:从内容库和互联网搜索相关数据
- 🤖 **大模型驱动**:直接调用大模型接口完成智能体任务(不再使用 openclaw 智能体)
- 步骤4 提取产品数据 → 大模型筛选相关内容
- 步骤5 填充字段 → 大模型生成产品数据并检查格式
- 步骤6 提交审核 → 直接调用 ParamHub API
- 🧠 **多模型管理**:前端可新增/编辑/删除/切换大模型配置,随时换模型
- OpenAI 兼容接口(base_url + api_key + model_name
- 支持最大上下文窗口配置
- 一键测试连接
-**审核提交**:自动提交到ParamHub后台管理待审核区
- 🕐 **定时任务**:支持定时自动处理产品
- 🔧 **后台任务系统**:抓取任务在后台持续运行,不受页面刷新影响
- 一键抓取触发后,任务在后台独立运行
- 可随时查看任务进度和状态
- 支持手动停止正在运行的任务
- 自动记录成功/失败/保存数量
- 🛡️ **产品状态检查**:处理前自动检查产品是否已存在
- 检查已发布产品(模型/GPU/CPU)
- 检查待审核产品
- 已存在则自动跳过,避免重复处理
- ⚠️ **异常产品管理**:自动识别无法处理的产品
- 内容库和互联网均无搜索结果时存入异常库
- 支持人工排查和重新处理
- 提供异常产品列表、详情、解决、删除 API
## 系统架构
```
param-auto-manager/
├── app.py # 主应用入口
├── config.py # 配置文件
├── requirements.txt # Python依赖
├── models/
│ └── database.py # 数据库模型(含 llm_configs 大模型配置表)
├── routes/
│ ├── articles.py # 文章内容库API
│ ├── products.py # 产品处理API
│ ├── system.py # 系统管理API
│ ├── process_monitor.py # 处理步骤监控API
│ └── llm.py # 大模型配置管理API
├── services/
│ ├── search_service.py # 搜索服务
│ ├── process_service.py # 数据处理服务
│ ├── process_monitor.py # 处理流程监控(大模型驱动)
│ ├── llm_client.py # 大模型调用客户端(多模型管理)
│ └── paramhub_client.py # ParamHub API客户端
├── utils/
│ └── scheduler.py # 定时任务调度器
├── data/ # 数据库文件目录
└── logs/ # 日志文件目录
```
## 安装依赖
```bash
cd works/param-auto-manager
pip install -r requirements.txt
```
## 启动服务
```bash
# 方式1: 使用启动脚本
chmod +x start.sh
./start.sh
# 方式2: 直接运行
python3 app.py
```
服务将在端口 **16043** 启动。
## API 文档
### 文章内容库 API (`/api/articles`)
#### 获取文章列表
```
GET /api/articles?limit=100&offset=0
```
#### 搜索文章
```
GET /api/articles/search?q=关键词&category=分类
```
#### 获取文章详情
```
GET /api/articles/{article_id}
```
#### 创建文章
```
POST /api/articles
Content-Type: application/json
{
"product_names": ["产品A", "产品B"],
"category": "AI模型",
"keywords": ["关键词1", "关键词2"],
"summary": "文章摘要",
"content": "文章内容",
"source": "来源",
"url": "原文链接"
}
```
#### 从URL抓取文章
```
POST /api/articles/fetch
Content-Type: application/json
{
"url": "https://example.com/article",
"product_names": ["产品A"],
"category": "分类"
}
```
#### 删除文章
```
DELETE /api/articles/{article_id}
```
### 产品处理 API (`/api/products`)
#### 获取待处理产品列表
```
GET /api/products/pending?limit=20&order_by=priority
```
#### 添加待处理产品
```
POST /api/products/pending
Content-Type: application/json
{
"product_name": "产品名称",
"category": "分类",
"subcategory": "子分类",
"priority": 10,
"source": "manual"
}
```
#### 批量添加待处理产品
```
POST /api/products/pending
Content-Type: application/json
[
{"product_name": "产品1", "category": "分类"},
{"product_name": "产品2", "category": "分类"}
]
```
#### 移除待处理产品
```
DELETE /api/products/pending/{product_name}
```
#### 获取处理中的产品
```
GET /api/products/processing
```
#### 获取处理历史
```
GET /api/products/history?limit=100
```
#### 获取指定产品的处理历史
```
GET /api/products/history/{product_name}
```
#### 处理单个产品
```
POST /api/products/process
Content-Type: application/json
{
"product_name": "产品名称",
"category": "分类",
"subcategory": "子分类"
}
```
#### 批量处理产品
```
POST /api/products/process/batch
Content-Type: application/json
{
"limit": 5
}
```
### 后台任务 API (`/api/tasks`)
#### 启动后台抓取任务
```
POST /api/tasks/start
Content-Type: application/json
{
"results": [{"title": "标题", "url": "https://..."}],
"auto_save": true,
"category": "分类",
"keywords": ["关键词"]
}
```
#### 获取任务状态
```
GET /api/tasks/{task_id}/status
```
#### 停止任务
```
POST /api/tasks/{task_id}/stop
```
#### 获取活动任务列表
```
GET /api/tasks/active
```
#### 获取最近任务
```
GET /api/tasks/recent?limit=20
```
#### 删除任务记录
```
DELETE /api/tasks/{task_id}
```
#### 清理已完成任务
```
POST /api/tasks/clear
```
### 系统管理 API (`/api/system`)
#### 获取系统配置
```
GET /api/system/config
```
#### 更新系统配置
```
PUT /api/system/config
Content-Type: application/json
{
"auto_process_enabled": "true",
"process_interval": "300",
"batch_size": "5"
}
```
#### 获取系统统计
```
GET /api/system/stats
```
#### 健康检查
```
GET /api/system/health
```
### 大模型配置 API (`/api/llm`)
#### 获取所有大模型配置
```
GET /api/llm/configs
```
#### 获取当前激活的大模型配置
```
GET /api/llm/configs/active
```
#### 新增大模型配置
```
POST /api/llm/configs
Content-Type: application/json
{
"name": "本地Qwen3.6",
"base_url": "http://192.168.2.7:18003/v1",
"api_key": "sk-xxxx",
"model_name": "unsloth/Qwen3.6-27B-Q4_K_M",
"max_context": 262144
}
```
#### 更新大模型配置
```
PUT /api/llm/configs/{config_id}
```
#### 删除大模型配置(激活中的不能删)
```
DELETE /api/llm/configs/{config_id}
```
#### 切换激活的大模型
```
POST /api/llm/configs/{config_id}/activate
```
#### 测试大模型连接
```
POST /api/llm/test
Content-Type: application/json
# 不传 config 则测试当前激活配置;传 config 测试指定配置
{"config": {"base_url": "...", "api_key": "...", "model_name": "..."}}
```
## 处理流程
1. **添加待处理产品**:手动添加或系统自动发现新产品
2. **产品状态检查**
- 检查产品是否已在 ParamHub 系统中
- 检查已发布产品(模型/GPU/CPU)
- 检查待审核列表
- 如已存在则跳过后续处理
3. **自动/手动触发处理**(大模型驱动):
- 从内容库搜索相关文章
- 从互联网搜索最新数据
- 步骤4:调用**大模型**筛选与产品直接相关且对参数提取有用的内容(替代原智能体)
- 步骤5:调用**大模型**根据相关内容生成产品数据并检查格式(替代原智能体)
- 步骤6:直接调用 ParamHub API 提交到待审核区(不再依赖智能体)
4. **发现新产品**:处理过程中自动发现并添加相关产品
> **大模型配置**:系统所有智能体任务均由当前激活的大模型直接完成。
> 在首页「大模型配置」面板可新增、编辑、切换、删除大模型接口,
> 切换后立即生效,无需重启服务。
## 数据库表结构
### articles (文章内容库)
- id, product_names, category, keywords, summary, content, source, url, fetch_date
### pending_products (待处理产品列表)
- id, product_name, category, subcategory, priority, source
### processing_products (处理中产品)
- id, product_name, category, subcategory, status, started_at
### process_history (处理历史)
- id, product_name, category, subcategory, status, review_id, details
### llm_configs (大模型配置)
- id, name, base_url, api_key, model_name, max_context, is_active
### process_sessions / process_steps (处理会话与步骤)
- 记录每次处理会话及每个步骤的状态、耗时、数据、错误信息
### abnormal_products (异常产品)
- 无搜索结果等无法处理的产品记录
## 配置说明
编辑 `config.py` 文件:
```python
PORT = 16043 # 服务端口
PARAMHUB_BASE_URL = 'http://localhost:16041' # ParamHub API地址
PARAMHUB_PASSWORD = 'admin123' # ParamHub管理员密码
SEARCH_MAX_RESULTS = 10 # 搜索最大结果数
PROCESS_INTERVAL = 300 # 自动处理间隔(秒)
BATCH_SIZE = 5 # 批量处理数量
```
大模型接口在**首页「大模型配置」面板**中管理(数据库 llm_configs 表),首次启动自动写入默认配置:
- 接口地址:`http://192.168.2.7:18003/v1`
- 模型名称:`unsloth/Qwen3.6-27B-Q4_K_M`
- 最大上下文窗口:262144
## 注意事项
1. 确保 ParamHub 服务(端口16041)正常运行
2. 确保大模型接口可用(可在首页测试连接)
3. 首次运行会自动创建数据库和表结构
4. 定时任务默认每5分钟执行一次自动处理
5. 可通过系统配置API调整自动处理参数
6. 大模型调用超时时间 600 秒,长任务请耐心等待
## 日志
日志文件位于 `logs/app.log`,包含:
- 系统启动信息
- 处理过程记录(含大模型调用日志)
- 错误和异常信息
## 版本历史
- v2.0.0 (2026-08-13): 大模型驱动版(主分支大版本)
- 核心改造:不再使用 openclaw 智能体执行步骤流程
- 新增大模型调用服务 llm_client.py,直接调用 OpenAI 兼容接口
- 步骤4/5 改由大模型直接完成(提取数据、填充字段)
- 步骤6 改为直接调用 ParamHub API 提交
- 新增多模型配置管理(数据库 llm_configs 表)
- 前端新增「大模型配置」面板:新增/编辑/删除/切换/测试连接
- 旧版(智能体版)已移至 aliyun-codingplan 分支
- v1.17.0 (2026-07-17): 异常产品管理
- 新增异常产品库,自动存储无法处理的产品
- 内容库和互联网均无搜索结果时存入异常库
- 新增异常产品 API(查询/详情/解决/删除/重试)
- 优化错误处理流程
- v1.16.0 (2026-07-16): 产品状态检查
- 新增产品状态检查功能
- 处理前检查产品是否已存在(已发布/待审核)
- 避免重复处理已有产品
- 新增 check_product_exists API 方法
- v1.1.0 (2026-07-14): 后台任务系统
- 新增后台任务API/api/tasks
- 抓取任务在后台独立运行,不受页面刷新影响
- 支持任务状态查询和手动停止
- 新增后台任务管理界面
- 数据库新增 background_tasks 表
- v1.0.0 (2026-07-12): 初始版本
- 内容库管理
- 产品处理流程
- 定时任务调度
- ParamHub API集成