公众号对接GPT
之前一直用一个微信小号放在群里活跃气氛,刚刚发现已经被腾讯检测到了,已经被限制扫码和拉群、加好友这些功能了。所以个人微信是接不了GPT了。个人公众号虽然用起来也会出问题,但是还能用用。
个人公众号接入GPT也比较简单,注册openai的账号这些资料搜索一下就能找到很多,因此就略过了。首先我们需要一套服务器,服务器需要安装了Ngnix,可以直接在服务器上安装宝塔面板,它会提示你安装lnmp,也就是nginx和mysql这些环境都会给你安装好。
然后我们先在服务器上跑一个python程序:
main.py
:
import werobot
import openai
robot = werobot.WeRoBot(token="garyhertel") # 和微信公众号后台设置的token相同
openai.api_key = "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" # openai创建的secret_key
old_message = "" # 这两个变量用来存放旧的回复消息和旧的用户输入,因为有时候向openai请求比较慢会触发公众号的超时限制
old_response = ""
def generate_response(prompt):
response = openai.Completion.create(
model="text-davinci-003", # 选择模型
prompt=prompt,
temperature=0.5, # 好像是设置ai的自由发挥度
max_tokens=256, # 设置回复的最大字数,大概4tokens是一个中文字符
top_p=1,
frequency_penalty=0.0,
presence_penalty=0.0,
)
message = response.choices[0].text
global old_message, old_response
old_response = message
old_message = prompt
print("回复消息:", message)
return message
@robot.text
def hello(messages):
global old_message, old_response
try:
print("用户提问:", messages.content)
if messages.content == old_message:
return old_response
else:
response = generate_response(messages.content)
return response
except Exception as e:
print(f"出现错误:{str(e)}")
if __name__ == '__main__':
robot.config['HOST'] = '0.0.0.0'
robot.config['PORT'] = 8081 # 端口可以设置成别的端口
robot.run()
requirements.txt
:
openai
werobot
部署的时候,先安装好依赖,然后直接跑起来就行,当然前提是要在服务器的控制台或者安全组放行相应的端口比如咱们这里写的8081.
然后设置一下nginx代理,先在宝塔面板上创建一个站点,站点域名就写服务器的公网ip,然后在这个站点的设置中添加一下代码:
# 后端服务
location /api/ {
proxy_http_version 1.1;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass_header Set-Cookie;
proxy_pass http://127.0.0.1:8081/;
proxy_connect_timeout 60s;
proxy_read_timeout 600s;
proxy_send_timeout 600s;
}
最后是在微信公众号后台的“设置与开发——基本配置”中进行设置,启用服务器配置,然后URL填入:
http://服务器公网ip:80/api/
token写我们之前设置的garyhertel,加密密钥随机生成(因为其实不会用到),消息加解密方式选择明文模式。
点击提交之后它会验证,没问题的话就会提交成功,那就可以用了,直接在公众号里发消息就能看到回复了。
网友评论