共计 2958 个字符,预计需要花费 8 分钟才能阅读完成。
> 申明:本文仅供技术交换应用,浏览本文需具备肯定的开发能力
前置筹备
- 一个域名
- 一台服务器
- 一个公众号
域名配置
在你的域名服务商新建二级域名并绑定服务器主机 IP
服务器配置
上传上面的 python 文件到你的服务器,并批改代码段中相应地位代码(token、api-key、port)
import time
from flask import Flask,make_response,request
import openai
from flask import Flask, request
from flask_caching import Cache
import xml.etree.cElementTree as ET
import hashlib
import requests
import re
import os
cnt = 0
my_wx_token = "" # 自定义字母和数字组合即可,后续须要填入公众号后盾
my_gpt_key = "" # 这里填写你在 OpenAI 后盾创立的 API-KEY
my_switch_chatgpt = True
app = Flask(__name__)
env_dist = os.environ
cache = Cache(app, config={'CACHE_TYPE': 'simple', "CACHE_DEFAULT_TIMEOUT": 30})
@app.route('/',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", "")
print(signature, timestamp, nonce, echostr)
token=my_wx_token
data =[token, timestamp, nonce]
data.sort()
temp = ''.join(data)
sha1 = hashlib.sha1(temp.encode('utf-8'))
hashcode=sha1.hexdigest()
print(hashcode)
if hashcode == signature:
print("wechat commit check OK")
return echostr
else:
print("GET error input msg")
return "error-return\r\n"
else:
xmlData = ET.fromstring(request.stream.read())
msg_type = xmlData.find('MsgType').text
if msg_type == 'text':
ToUserName = xmlData.find('ToUserName').text
FromUserName = xmlData.find('FromUserName').text
CreateTime = xmlData.find('CreateTime').text
print(ToUserName)
print(FromUserName)
print(CreateTime)
global cnt
cnt += 1
print('------->' + str(cnt))
return generate_response_xml(FromUserName, ToUserName, xmlData.find('Content').text)
def text_reply(FromUserName, ToUserName, output_content):
reply = '''
<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA]></MsgType>
<Content><![CDATA[%s]]></Content>
</xml>
'''
response = make_response(reply % (FromUserName, ToUserName, str(int(time.time())), output_content))
response.content_type = 'application/xml'
return response
def generate_response_xml(FromUserName, ToUserName, input_content):
output_content = generate_response(input_content)
return text_reply(FromUserName, ToUserName, output_content)
outofsevice_txt = "道歉,<a href=\"https://mp.weixin.qq.com/s/0LN37YiERJgMyvIDpzRcAQ\"> 攻城狮杰森的 ChatGPT 服务助手 </a> 正在保护中,临时无奈预估保护持续时间,请今天再来尝试吧。"
@cache.memoize(timeout=60)
def generate_response(prompt):
if not my_switch_chatgpt:
return outofsevice_txt
openai.api_key = my_gpt_key
response = openai.Completion.create(
model="text-davinci-003",
prompt=prompt,
temperature=0,
max_tokens=1024,
top_p=1,
frequency_penalty=0.0,
presence_penalty=0.0,
)
message = response.choices[0].text
print(message)
ans = message.strip()
return ans
if __name__ == '__main__':
app.run(host='0.0.0.0', port=xxxx, debug=True)# 凋谢 xxxx 端口
应用 宝塔 是比拟快捷的配置形式,装置宝塔面板后,进入 软件商店,装置上面两个插件
关上 python 我的项目管理器,简略配置下咱们要启动的我的项目
启动后映射我的项目域名,顶级域和二级域都能够,比方我这里填入的是 chatgpt.coder-jason.cn
公众号配置
进入公众号后盾,找到 设置与开发 ,进入 根本配置,因为我这里曾经配置好了,这里仅演示下怎么增加启用
点击 增加配置
token 值就是在上述代码段中填入的值,自定义字母和数字组合即可
点击提交后,如果服务器中的我的项目启动无误,则会提醒 token 校验胜利
接下来就能够回到公众号和 chatGPT 欢快的交换啦~,欢送来公粽号 攻城狮杰森 体验
如果你对 chatGPT 感兴趣或配置过程中遇到任何问题,欢送与我取得联系,vx:jasoni996
正文完