微信公众号与OpenAI GPT-4 API集成
本文将帮助您使用 Flask 框架构建一个简单的微信公众号聊天机器人,该机器人可以与 OpenAI GPT-4 API 进行对接。
- 准备环境
安装所需库
在您的 CentOS VPS 上,安装以下 Python 库:
bash
Copy code
pip3 install openai wechatpy flask
- 编写后端服务
创建一个名为 app.py 的文件,将以下代码复制到文件中:
python
Copy code
import os
import time
import hashlib
from flask import Flask, request, make_response
import xml.etree.ElementTree as ET
import openai
app = Flask(name)
openai.api_key = “your_openai_api_key”
@app.route(‘/wechat’, methods=[‘GET’, ‘POST’])
def wechat():
token = “your_token”
timestamp = request.args.get(‘timestamp’, ‘’)
nonce = request.args.get(‘nonce’, ‘’)
signature = request.args.get(‘signature’, ‘’)
# 验证签名
sign_list = [token, timestamp, nonce]
sign_list.sort()
sign_str = ''.join(sign_list)
if hashlib.sha1(sign_str.encode("utf-8")).hexdigest() != signature:
return "signature error", 403
# 回应微信服务器的验证请求
if request.method == 'GET':
echostr = request.args.get('echostr', '')
return echostr
# 处理用户发送的消息
elif request.method == 'POST':
xml_data = ET.fromstring(request.data)
to_user = xml_data.find('ToUserName').text
from_user = xml_data.find('FromUserName').text
msg_type = xml_data.find('MsgType').text
if msg_type == 'text':
content = xml_data.find('Content').text
response = ask_openai(content)
reply = """
<xml>
<ToUserName><![CDATA[{}]]></ToUserName>
<FromUserName><![CDATA[{}]]></FromUserName>
<CreateTime>{}</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[{}]]></Content>
</xml>
""".format(from_user, to_user, int(time.time()), response)
return make_response(reply)
else:
return "success"
def ask_openai(prompt):
model_engine = “text-davinci-002”
completions = openai.Completion.create(
engine=model_engine,
prompt=prompt,
max_tokens=100,
n=1,
stop=None,
temperature=0.5,
)
message = completions.choices[0].text.strip()
return message
if name == ‘main’:
app.run(host=‘0.0.0.0’, port=80)
注意: 请确保替换 your_openai_api_key 和 your_token 为您的实际值。
- 运行 Flask 应用程序
在您的 VPS 上运行以下命令以启动 Flask 应用程序:
bash
Copy code
flask run --host=0.0.0.0 --port=80
- 在微信公众号上配置服务器
在微信公众号管理平台上,进入“开发者中心”,设置您的服务器 URL、Token 和 EncodingAESKey。
注意: 请确保在此处提供与您在 app.py 中使用的相同 Token。
- 测试聊天机器人
现在,您可以在微信公众号中发送消息以测试您的聊天机器人。它应该能够回复来自 GPT-4 API 的响应。
常见问题
服务器时间不同步可能导致签名验证失败。在这种情况下,请使用以下命令同步服务器时间:
bash
Copy code
sudo yum install -y chrony
sudo systemctl start chronyd
sudo systemctl enable chronyd
如果您遇到 ImportError,请确保已使用 pip 安装了所有必需的库。
如有任何问题,请检查错误日志以帮助确定问题。
总结,本文为您提供了一个在微信公众号上集成 OpenAI GPT-4 API 的基本指南。请确保遵循所有步骤,并根据需要调整代码。