公眾號(hào)接入chatGPT的詳細(xì)教程 附Python源碼
前置準(zhǔn)備
- 一個(gè)域名
- 一臺(tái)服務(wù)器
- 一個(gè)公眾號(hào)
域名配置
在你的域名服務(wù)商新建二級(jí)域名并綁定服務(wù)器主機(jī)IP
服務(wù)器配置
上傳下面的python文件到你的服務(wù)器,并修改代碼段中相應(yīng)位置代碼(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 = "" # 自定義字母和數(shù)字組合即可,后續(xù)需要填入公眾號(hào)后臺(tái)
my_gpt_key = "" # 這里填寫你在OpenAI后臺(tái)創(chuàng)建的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[text]]></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服務(wù)助手</a>正在維護(hù)中,暫時(shí)無(wú)法預(yù)估維護(hù)持續(xù)時(shí)間,請(qǐng)明天再來(lái)嘗試吧。"
@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端口
使用寶塔是比較快捷的配置方式,安裝寶塔面板后,進(jìn)入軟件商店,安裝下面兩個(gè)插件

打開 python 項(xiàng)目管理器 ,簡(jiǎn)單配置下我們要啟動(dòng)的項(xiàng)目

啟動(dòng)后映射項(xiàng)目域名,頂級(jí)域和二級(jí)域都可以,比如我這里填入的是 chatgpt.coder-jason.cn

公眾號(hào)配置
進(jìn)入公眾號(hào)后臺(tái),找到設(shè)置與開發(fā),進(jìn)入基本配置,由于我這里已經(jīng)配置好了,這里僅演示下怎么添加啟用

點(diǎn)擊添加配置

token 值就是在上述代碼段中填入的值,自定義字母和數(shù)字組合即可
點(diǎn)擊提交后,如果服務(wù)器中的項(xiàng)目啟動(dòng)無(wú)誤,則會(huì)提示 token校驗(yàn)成功

接下來(lái)就可以回到公眾號(hào)和 chatGPT 愉快的交流啦~

到此這篇關(guān)于公眾號(hào)接入 chatGPT教程 附Python源碼的文章就介紹到這了,更多相關(guān)公眾號(hào)接入 chatGPT內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python實(shí)現(xiàn)的中國(guó)剩余定理算法示例
這篇文章主要介紹了Python實(shí)現(xiàn)的中國(guó)剩余定理算法,結(jié)合實(shí)例形式分析了中國(guó)剩余定理的概念、原理及具體算法實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-08-08
Python數(shù)據(jù)分析matplotlib設(shè)置多個(gè)子圖的間距方法
今天小編就為大家分享一篇Python數(shù)據(jù)分析matplotlib設(shè)置多個(gè)子圖的間距方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-08-08
一文搞懂Python中pandas透視表pivot_table功能
透視表是一種可以對(duì)數(shù)據(jù)動(dòng)態(tài)排布并且分類匯總的表格格式。或許大多數(shù)人都在Excel使用過(guò)數(shù)據(jù)透視表,也體會(huì)到它的強(qiáng)大功能,而在pandas中它被稱作pivot_table,今天通過(guò)本文給大家介紹Python中pandas透視表pivot_table功能,感興趣的朋友一起看看吧2021-11-11
Python實(shí)現(xiàn)代碼統(tǒng)計(jì)工具
這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)代碼統(tǒng)計(jì)工具,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-09-09
Django項(xiàng)目后臺(tái)不掛斷運(yùn)行的方法
今天小編就為大家分享一篇Django項(xiàng)目后臺(tái)不掛斷運(yùn)行的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-08-08
詳解Django關(guān)于StreamingHttpResponse與FileResponse文件下載的最優(yōu)方法
這篇文章主要介紹了詳解Django關(guān)于StreamingHttpResponse與FileResponse文件下載的最優(yōu)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01

