基于 DeepSeek 的微信公众号智能问答系统搭建指南
一、项目概述
1.1 功能描述
用户在微信公众号发送消息
系统自动调用 DeepSeek API 进行处理
将处理结果返回给用户
1.2 技术架构
用户 -> 微信公众号 -> 云服务器(IPv4) -> FRP转发 -> 本地服务器(IPv6) -> DeepSeek API
用户
→
微信公众号
→
云服务器
(IPv4)
(IPv4)
→
FRP转发
→
本地服务器
(IPv6)
(IPv6)
→
DeepSeek API
1.3 所需资源
微信公众号(个人订阅号)
DeepSeek API Key(DeepSeek 开放平台)
云服务器(用于转发)
本地服务器(虚拟机)
域名(用于配置访问)
二、详细步骤
2.1 创建项目目录(虚拟机上)
# 创建项目目录
mkdir -p /opt/wechat-bot
cd /opt/wechat-bot
# 创建虚拟环境
apt update
apt install -y python3-venv
python3 -m venv venv
source venv/bin/activate
# 创建项目结构
mkdir -p config logs
2.2 配置文件
# config/config.py
# DeepSeek 配置
DEEPSEEK_API_KEY = "your_deepseek_api_key" # deepseek创建的api key
# 微信配置
WECHAT_TOKEN = "XXXXXX" # 自定义token
WECHAT_APPID = "XXXXXX" # 微信公众号后台的开发者ID(appid)
WECHAT_SECRET = "XXXXXXXXXXXX" # 微信公众号后台的开发者密码(appsecret)
# 服务配置
HOST = "127.0.0.1"
PORT = 6666 # 自定义虚拟机上的未被占用的端口,例如:6666
2.3 主程序代码(wechat-bot.py)
# 在虚拟机上创建 wechat_bot.py
from flask import Flask, request
import requests
import xml.etree.ElementTree as ET
import time
import hashlib
app = Flask(__name__)
# 配置信息
DEEPSEEK_API_KEY = "your_deepseek_api_key" # 替换为你的 DeepSeek API Key
WECHAT_TOKEN = "XXXXXXXX" # 自定义的 Token,记住这个值
WECHAT_APPID = "xxxxxxxxxx" # 微信开发者后台进入后,开发者ID
WECHAT_SECRET = "XXXXXXXXX" # 微信开发者后台进入后,开发者密码
@app.route('/wechat', methods=['GET', 'POST'])
def wechat():
# 处理微信服务器的验证请求
if request.method == 'GET':
signature = request.args.get('signature', '')
timestamp = request.args.get('timestamp', '')
nonce = request.args.get('nonce', '')
echostr = request.args.get('echostr', '')
# 验证签名
if check_signature(signature, timestamp, nonce):
return echostr
return 'Invalid signature'
# 处理用户消息
if request.method == 'POST':
xml_data = request.data
msg = parse_xml(xml_data)
# 如果是文本消息
if msg['MsgType'] == 'text':
# 调用 DeepSeek API
response = call_deepseek_api(msg['Content'])
# 构建回复消息
reply = build_reply(msg, response)
return reply
return 'success'
def check_signature(signature, timestamp, nonce):
# 微信签名验证
token = WECHAT_TOKEN
temp_list = [token, timestamp, nonce]
temp_list.sort()
temp_str = ''.join(temp_list)
hash_obj = hashlib.sha1(temp_str.encode('utf-8'))
return hash_obj.hexdigest() == signature
def parse_xml(xml_data):
# 解析微信发来的XML消息
root = ET.fromstring(xml_data)
msg = {}
for child in root:
msg[child.tag] = child.text
return msg
def call_deepseek_api(text):
# 调用 DeepSeek API
headers = {
"Authorization": f"Bearer {DEEPSEEK_API_KEY}",
"Content-Type": "application/json"
}
data = {
"messages": [{"role": "user", "content": text}],
"model": "deepseek-chat",
"temperature": 0.7
}
response = requests.post(
"https://api.deepseek.com/v1/chat/completions",
json=data,
headers=headers
)
if response.status_code == 200:
return response.json()['choices'][0]['message']['content']
return "抱歉,我现在无法回答这个问题。"
def build_reply(msg, content):
# 构建回复消息的XML
reply_xml = f"""
<xml>
<ToUserName><![CDATA[{msg['FromUserName']}]]></ToUserName>
<FromUserName><![CDATA[{msg['ToUserName']}]]></FromUserName>
<CreateTime>{int(time.time())}</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[{content}]]></Content>
</xml>
"""
return reply_xml
if __name__ == '__main__':
app.run(host='127.0.0.1', port=6666) # 端口可以自定义为未被虚拟机上的服务占用的端口,例如:6666
2.4 服务配置
# 创建启动脚本 run.sh
#!/bin/bash
source venv/bin/activate
python wechat_bot.py
# 设置权限
chmod +x run.sh
# 创建系统服务
vim /etc/systemd/system/wechat-bot.service
[Unit]
Description=WeChat Bot Service
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt/wechat-bot
ExecStart=/opt/wechat-bot/run.sh
Restart=always
[Install]
WantedBy=multi-user.target
2.5 FRP 配置
# /etc/frp/frpc.ini 添加
[[proxies]]
name = "wechat"
type = "http"
localIP = "127.0.0.1"
localPort = 6666 #wechat-bot.py最后自定义的端口号
customDomains = ["wechat.A.com"] #创建一个子域名的网站,例如:wechat.A.com
这里也可以通过1panel面板,打开FRP之后,直接在可视化页面配置,完成后点击upload
2.6 启动服务
# 安装依赖
pip install flask requests
# 启动服务
systemctl daemon-reload
systemctl start wechat-bot
systemctl enable wechat-bot
2.7 微信公众号配置
1. 登录微信公众平台
2. 进入"设置与开发" -> "基本配置"
3. 配置服务器:
URL:https://wechat.A.com/wechat (wechat.A.com 替换为自定义的网站二级域名)
Token:XXXX (wechat-bot.py和config.py设置的token)
加密方式:明文模式
三、维护指南
3.1 常用命令
# 查看服务状态
systemctl status wechat-bot
# 查看日志
journalctl -u wechat-bot -f
# 重启服务
systemctl restart wechat-bot
3.2 重要文件位置
配置文件:/opt/wechat-bot/config/config.py
主程序:/opt/wechat-bot/wechat_bot.py
服务配置:/etc/systemd/system/wechat-bot.service
FRP配置:/etc/frp/frpc.ini
路径可能会因每个人服务器情况而不一样
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 科科
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果