模型: DeepSeek
部署环境: 测试, 生产
测试环境目录:192.168.12.103:/data4/tlw/Problem_rewriting/question_rewrite_1219.py
测试环境启动命令:nohup python3 question_rewrite_1219.py --server_port 8888 > log_output.log 2>&1 &
生产环境目录:10.51.17.34(原万国:10.16.64.34):/home/deploy/intention_recognition/question_rewrite.py
| 项目 | 说明 |
|---|---|
| 服务名称 | question-rewrite |
| 功能 | 用户问题重写(意图识别 + 情绪熔断) |
| 框架 | FastAPI + Uvicorn |
| 监听端口 | 9011 |
| API 文档 | http://<server_ip>:9011/docs |
| API 路径 | POST /v1/text_recognition |
| 项目 | 说明 |
|---|---|
| 生产服务器 IP | 10.51.17.34(原万国:10.16.64.34) |
| 部署用户 | deploy |
| 项目目录 | /home/deploy/intention_recognition |
| 启动脚本 | /home/deploy/intention_recognition/question_rewrite.py |
| Python 路径 | /usr/local/bin/python3 |
| 依赖模型服务 | http://10.61.88.4:8090/org/v1(DeepSeek API) |
fastapi
uvicorn
openai
pydantic
文件路径:/etc/systemd/system/question-rewrite.service
[Unit]
Description=Question Rewrite FastAPI Service
After=network.target
[Service]
Type=simple
User=deploy
WorkingDirectory=/home/deploy/intention_recognition
ExecStart=/usr/local/bin/python3 /home/deploy/intention_recognition/question_rewrite.py --server_port 9011
Restart=always
RestartSec=5
StandardOutput=journal
StandardError=journal
SyslogIdentifier=question-rewrite
[Install]
WantedBy=multi-user.target
文件路径:/etc/systemd/journald.conf
[Journal]
MaxRetentionSec=7day
MaxFileSec=7day
sudo systemctl restart systemd-journald
sudo systemctl daemon-reload
sudo systemctl enable question-rewrite
sudo systemctl start question-rewrite
| 操作 | 命令 |
|---|---|
| 启动 | sudo systemctl start question-rewrite |
| 停止 | sudo systemctl stop question-rewrite |
| 重启 | sudo systemctl restart question-rewrite |
| 查看状态 | sudo systemctl status question-rewrite |
| 开机自启 | sudo systemctl enable question-rewrite |
| 取消自启 | sudo systemctl disable question-rewrite |
# 实时查看日志
sudo journalctl -u question-rewrite -f
# 查看最近7天日志
sudo journalctl -u question-rewrite --since "7 days ago"
# 查看今天的日志
sudo journalctl -u question-rewrite --since today
# 查看最近100行
sudo journalctl -u question-rewrite -n 100
# 查看错误级别日志
sudo journalctl -u question-rewrite -p err
# 查看指定时间段
sudo journalctl -u question-rewrite --since "2026-10-22 15:00" --until "2026-10-22 16:00"
| 文件 | 路径 | 说明 |
|---|---|---|
| use_token_count.json | /home/deploy/intention_recognition/use_token_count.json | Token 用量统计 |
| burial_point.json | /home/deploy/intention_recognition/burial_point.json | 请求埋点数据 |
这两个文件由程序自动创建和更新,每 3 秒持久化一次,请勿手动删除。
# 健康检查(访问 API 文档页面)
curl http://localhost:9011/docs
# 接口测试
curl -X POST http://localhost:9011/v1/text_recognition \
-H "Content-Type: application/json" \
-d '{
"model": "Intention_Recognition",
"input": ["用户: 我的拉卡拉设备坏了", "助理: 建议联系业务员咨询", "用户: 机器已停用怎么办"],
"is_negative": false
}'
# 1. 停止服务
sudo systemctl stop question-rewrite
# 2. 备份旧文件(可选)
cp /home/deploy/intention_recognition/question_rewrite.py /home/deploy/intention_recognition/question_rewrite.py.bak
# 3. 替换新文件
cp /path/to/new/question_rewrite.py /home/deploy/intention_recognition/question_rewrite.py
# 4. 如有新依赖,安装依赖
sudo /usr/local/bin/python3 -m pip install <package_name>
# 5. 重载 systemd(仅当修改了 service 文件时需要)
sudo systemctl daemon-reload
# 6. 启动服务
sudo systemctl start question-rewrite
# 7. 确认服务状态
sudo systemctl status question-rewrite
# 8. 查看启动日志
sudo journalctl -u question-rewrite -f
原因: ExecStart 中的 Python 路径不正确。
排查:
which python3
# 确认输出路径与 service 文件中 ExecStart 一致
原因: 缺少 Python 依赖包。
解决:
sudo /usr/local/bin/python3 -m pip install fastapi uvicorn openai pydantic
排查:
# 查看详细错误日志
sudo journalctl -u question-rewrite -n 50 --no-pager
排查:
sudo lsof -i :9011
# 或
sudo netstat -tlnp | grep 9011
解决: 杀掉占用进程或修改 --server_port 参数。
现象: 接口返回原始问题(重写未生效),日志中出现 模型请求或解析失败。
排查:
# 测试模型服务连通性
curl http://10.61.88.4:8090/org/v1/models
# firewalld
sudo firewall-cmd --permanent --add-port=9011/tcp
sudo firewall-cmd --reload
# iptables
sudo iptables -A INPUT -p tcp --dport 9011 -j ACCEPT
| 参数 | 说明 |
|---|---|
Type=simple | 主进程即服务进程 |
User=deploy | 以 deploy 用户运行 |
WorkingDirectory | 工作目录,影响运行时数据文件写入位置 |
Restart=always | 进程退出后始终自动重启 |
RestartSec=5 | 重启间隔 5 秒 |
SyslogIdentifier | 日志标识符,用于 journalctl 过滤 |
MaxRetentionSec | journald 日志最大保留时间 |