AI智能导游配置实战:从零搭建可对话的景区讲解服务

AI智能导游配置的核心是让程序能根据游客提问,结合景区知识库生成自然语言回答。
本文以一台已安装宝塔面板的 Linux 云服务器为例,用 Python 脚本调用大模型接口,再通过 Nginx 暴露成 HTTP 服务,零基础用户按步骤操作即可完成。

先确认服务器环境和接口条件

开始前需要准备三样东西:
一台能访问外网的 Linux 服务器(本文以 CentOS 7 或 Ubuntu 20.04 为例)、
一个可用的大模型 API Key(如 DeepSeek、
通义千问等,
具体以服务商控制台为准)、
以及景区常见问答资料(可先用几条测试数据)。

登录宝塔面板后,进入“软件商店”,安装 Python 项目管理器或直接使用系统 Python 3。
在终端执行以下命令确认版本:

python3 --version
pip3 --version

如果提示 command not found,先在宝塔“终端”或 SSH 中安装 Python 3:

# CentOS
sudo yum install python3 python3-pip -y
# Ubuntu
sudo apt update && sudo apt install python3 python3-pip -y

接着安装依赖库,本文使用 Flask 提供 HTTP 接口,用 requests 调用大模型:

pip3 install flask requests

避坑提醒:不要直接在宝塔“网站”里放 Python 文件,那样无法执行;
Python 服务需要单独启动进程。

编写导游问答脚本并配置接口

在 /www/wwwroot/ai-guide 目录下创建 app.py,
内容如下(将 YOUR_API_KEY 和 YOUR_MODEL_ENDPOINT 替换为服务商提供的值):

from flask import Flask, request, jsonify
import requests

app = Flask(__name__)

API_KEY = "YOUR_API_KEY"
API_URL = "YOUR_MODEL_ENDPOINT"  # 例如 https://api.deepseek.com/chat/completions

SYSTEM_PROMPT = "你是一个景区智能导游,用简洁友好的中文回答游客问题,只回答与景区相关的内容。"

@app.route('/ask', methods=['POST'])
def ask():
    user_input = request.json.get('question', '')
    if not user_input:
        return jsonify({"error": "缺少 question 参数"}), 400
    headers = {"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"}
    payload = {
        "model": "deepseek-chat",
        "messages": [
            {"role": "system", "content": SYSTEM_PROMPT},
            {"role": "user", "content": user_input}
        ]
    }
    try:
        resp = requests.post(API_URL, headers=headers, json=payload, timeout=30)
        resp.raise_for_status()
        answer = resp.json()["choices"][0]["message"]["content"]
        return jsonify({"answer": answer})
    except Exception as e:
        return jsonify({"error": str(e)}), 500

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

保存后,在终端进入该目录并启动:

cd /www/wwwroot/ai-guide
python3 app.py

看到 Running on http://0.0.0.0:5000 表示启动成功。
此时用 curl 测试:

curl -X POST http://127.0.0.1:5000/ask -H "Content-Type: application/json" -d '{"question":"景区几点开门?"}'

如果返回包含 answer 字段的 JSON,说明脚本和接口配置正常。

用 Nginx 反向代理对外提供访问

直接暴露 5000 端口不安全,建议在宝塔中新建一个网站(如 guide.yourdomain.com),然后修改该站点的 Nginx 配置,在 server 块内加入:

location /api/ {
    proxy_pass http://127.0.0.1:5000/;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
}

保存后重载 Nginx。
之后外部请求 https://guide.yourdomain.com/api/ask 就会转发到 Python 服务。注意:如果网站开启了 HTTPS,Python 服务本身不需要再配证书。

常见报错与避坑

  • 401 Unauthorized:API Key 错误或未加 Bearer 前缀,检查 Authorization 头。
  • 连接超时:服务器无法访问大模型接口,用 curl -v YOUR_MODEL_ENDPOINT 测试网络,必要时在宝塔“安全”中放行出站。
  • 端口被占用:修改 app.run 中的端口,或执行 lsof -i:5000 找到进程后停止。
  • 中文乱码:确保请求头 Content-Type: application/json,Flask 默认返回 UTF-8,一般无需额外设置。
  • 不要将 API Key 提交到公开仓库,建议用环境变量读取:API_KEY = os.environ.get('API_KEY'),启动前 export API_KEY=xxx。

验证配置效果与后续调整

完成上述步骤后,用浏览器或 Postman 向 https://你的域名/api/ask 发送 POST 请求,请求体为 {"question":"推荐游览路线"}。
如果返回通顺且与景区相关的回答,说明 AI 智能导游配置已生效。

若回答偏离主题,可在 SYSTEM_PROMPT 中补充景区名称、开放时间、禁止回答的内容等约束。
若响应速度慢,可适当调低 timeout 并检查服务器到接口的网络延迟。
最后,建议将 Python 进程用 nohup 或宝塔“进程守护”保持后台运行,避免终端关闭后服务停止。

适用条件说明:本文方法适合已有大模型 API 权限、能自行管理服务器的用户;
如果使用第三方 SaaS 导游平台,配置入口和参数名称会不同,请以对应平台文档为准。

分享到:
上一篇
AI行程规划配置:从零搭建可用的行程生成服务
下一篇
AI酒店推荐配置:零基础搭建个性化推荐服务
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意