公众号接入chatGPT的详细教程,下面我会讲解相关步骤。
准备工作
在开始整个接入chatGPT的流程之前,需要准备以下的相关工作:
- 注册微信公众号并获取
appid
和appsecret
,并在后台配置好服务器地址。 - 获取
chatGPT
的API Key。
接入流程
1. 获取用户openid
首先需要获取用户的openid
,用于在后面请求chatGPT
时进行身份识别。
参考代码:
import requests
# 获取openid
def get_openid(code):
url = f'https://api.weixin.qq.com/sns/oauth2/access_token?appid={APP_ID}&secret={APP_SECRET}&code={code}&grant_type=authorization_code'
openid_data = requests.get(url).json()
openid = openid_data.get('openid')
return openid
其中,APP_ID
和APP_SECRET
需要替换为自己的值。
2. 获取access_token
接下来需要获取access_token
,用于请求chatGPT
的API。
参考代码:
import requests
# 获取access_token
def get_access_token():
url = f'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={APP_ID}&secret={APP_SECRET}'
access_token_data = requests.get(url).json()
access_token = access_token_data.get('access_token')
return access_token
同样,APP_ID
和APP_SECRET
需要替换为自己的值。
3. 请求chatGPT
在获取了openid
和access_token
之后,即可请求chatGPT
的API。
参考代码:
import requests
# 请求chatGPT
def chat_with_gpt(openid, access_token, user_input):
url = f'https://api.ai.qq.com/fcgi-bin/nlp/nlp_textchat?access_token={access_token}'
headers = {'Content-type': 'application/json'}
data = {
"session": f"{openid}",
"question": f"{user_input}"
}
chat_data = requests.post(url, headers=headers, json=data).json()
chat_result = chat_data.get('data', {}).get('answer')
if chat_result:
return chat_result
else:
return 'chatGPT获取数据失败'
其中,user_input
为用户输入的文本,可以根据具体需求进行更改。
示例一
以下是一个简单的示例,展示了如何获取用户openid
、access_token
以及请求chatGPT
:
from flask import Flask, request, render_template
import requests
APP_ID = '' # 替换为自己的APP_ID
APP_SECRET = '' # 替换为自己的APP_SECRET
API_KEY = '' # 替换为自己的chatGPT的API Key
app = Flask(__name__)
@app.route('/chat', methods=['GET', 'POST'])
def chat():
if request.method == 'POST':
user_input = request.form['user_input']
code = request.args.get('code')
openid = get_openid(code)
access_token = get_access_token()
chat_result = chat_with_gpt(openid, access_token, user_input)
return render_template('chat.html', chat_result=chat_result)
return render_template('index.html')
if __name__ == '__main__':
app.run(debug=True)
其中,index.html
文件中包含了一个输入框和一个提交按钮,用户输入文本后提交即可得到chatGPT
返回的结果。
示例二
以下是一个完整的示例,包含了获取用户access_token
、openid
以及请求chatGPT
的全部流程:
import requests
APP_ID = '' # 替换为自己的APP_ID
APP_SECRET = '' # 替换为自己的APP_SECRET
API_KEY = '' # 替换为自己的chatGPT的API Key
# 获取openid
def get_openid(code):
url = f'https://api.weixin.qq.com/sns/oauth2/access_token?appid={APP_ID}&secret={APP_SECRET}&code={code}&grant_type=authorization_code'
openid_data = requests.get(url).json()
openid = openid_data.get('openid')
return openid
# 获取access_token
def get_access_token():
url = f'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={APP_ID}&secret={APP_SECRET}'
access_token_data = requests.get(url).json()
access_token = access_token_data.get('access_token')
return access_token
# 请求chatGPT
def chat_with_gpt(openid, access_token, user_input):
url = f'https://api.ai.qq.com/fcgi-bin/nlp/nlp_textchat?access_token={access_token}'
headers = {'Content-type': 'application/json'}
data = {
"session": f"{openid}",
"question": f"{user_input}"
}
chat_data = requests.post(url, headers=headers, json=data).json()
chat_result = chat_data.get('data', {}).get('answer')
if chat_result:
return chat_result
else:
return 'chatGPT获取数据失败'
if __name__ == '__main__':
# 获取用户信息
code = '***************' # 替换为自己的code
openid = get_openid(code)
access_token = get_access_token()
# 请求chatGPT
user_input = '你好'
chat_result = chat_with_gpt(openid, access_token, user_input)
print(chat_result)
其中,code
为用户授权后获取的code
,可以通过前端页面或其他方式获取。通过调用相关的函数即可完成用户openid
、access_token
的获取以及与chatGPT
的交互。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:公众号接入chatGPT的详细教程 附Python源码 - Python技术站