AI+政务应用部署教程:从环境准备到接口联调
在政务场景里落地AI问答,最直接的方式是先搭一个最小可用的Web服务:用户提交问题,后端调用大模型接口,返回答案并记录日志。
这篇AI+政务应用教程按零基础运维视角,从环境检查到接口联调逐步说明,适用于本地测试机或内网测试服务器。
先确认机器和账号条件
开始前需要一台Linux服务器(Ubuntu 22.04或CentOS 7以上均可),能访问外网或已配置好内网模型接口地址。
建议分配2核4G以上,因为Python服务和Nginx会同时占用内存。
还需要一个可用的模型API Key,以及一个测试域名或直接用IP访问。
登录服务器后,先检查Python版本和端口占用情况:
python3 --version
ss -tlnp | grep -E '8000|80'
如果Python低于3.8,需要先升级;
如果80端口已被占用,后续Nginx配置要改用其他端口。
创建隔离环境并安装依赖
政务项目不建议把依赖装在系统Python里,用虚拟环境隔离更稳妥。
以下命令在项目目录下执行:
mkdir -p /opt/gov-ai && cd /opt/gov-ai
python3 -m venv venv
source venv/bin/activate
pip install flask gunicorn requests
安装完成后用pip list确认flask和gunicorn出现在列表中。
如果下载慢,可以临时指定国内镜像源,但不要写死到生产配置里。
编写最小问答服务
在/opt/gov-ai下新建app.py,核心逻辑是接收POST请求、调用模型接口、返回JSON。
下面是一个可运行的骨架,模型地址和Key通过环境变量传入,避免硬编码:
from flask import Flask, request, jsonify
import os, requests
app = Flask(__name__)
API_URL = os.environ.get("MODEL_API_URL")
API_KEY = os.environ.get("MODEL_API_KEY")
@app.route("/ask", methods=["POST"])
def ask():
data = request.get_json()
question = data.get("q", "")
if not question:
return jsonify({"error": "empty question"}), 400
resp = requests.post(API_URL, headers={"Authorization": f"Bearer {API_KEY}"}, json={"prompt": question}, timeout=30)
return jsonify({"answer": resp.json().get("text", "")})
if __name__ == "__main__":
app.run(host="0.0.0.0", port=8000)
保存后先用开发模式启动测试:python app.py,
然后在另一个终端执行curl -X POST http:,
//127.0.0.1:
8000/ask -H 'Content-Type:
application/json' -d '{"q":
"测试问题"}'
能返回JSON即表示服务通。
用Gunicorn和Nginx对外提供访问
开发模式只适合调试,正式测试用Gunicorn托管:
gunicorn -w 2 -b 127.0.0.1:8000 app:app --daemon
接着配置Nginx反向代理,在/etc/nginx/conf.d/gov-ai.conf写入:
server {
listen 80;
server_name _;
location /ask {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
执行nginx -t检查语法,通过后systemctl reload nginx。
此时用服务器IP访问/ask接口应能拿到响应。
常见报错和避坑点
遇到502 Bad Gateway,先看Gunicorn是否在运行:ps aux | grep gunicorn,再检查127.0.0.1:8000是否监听。
遇到ModuleNotFoundError,确认虚拟环境是否激活,以及是否在项目目录下启动。
模型接口超时通常和网络策略有关,先用curl直接请求模型地址确认连通性。
另外注意:政务数据不要直接发给未经确认的外部接口,测试阶段建议用脱敏问题;
API Key不要提交到代码仓库,用环境变量或配置文件权限600管理;
Nginx日志和Gunicorn日志要保留,方便排查请求参数和响应时间。
验证服务是否真正可用
完成配置后按以下清单逐项确认:用curl请求/ask返回200和JSON;
检查Nginx访问日志/var/log/nginx/access.log有对应记录;
重启服务器后Gunicorn能自动拉起(可配合systemd);
连续发送5次请求观察响应时间是否稳定。
全部通过后,这个最小AI政务问答服务就可以进入内网联调阶段。
如果后续需要接入统一身份认证或增加敏感词过滤,再在现有骨架上扩展中间件即可,不必推翻当前结构。