微信公众号访问 ChatGPT

wechat openai chatgpt

ChatGPT 目前热度非常高,作为一款自动应答 AI 机器人,从大家使用后的反馈情况看,其所能提供的服务范围极其广泛,聊天、写代码、写小说、查错误、分类、翻译等等似乎无所不能;只要给它提需求,基本上都可以获得还比较靠谱的答案,功能无比强大。本篇文章介绍如何使用 Python 实现在微信中访问 ChatGPT。

一、注册账号

OpenAI 的官网注册一个账号,注册完了需要通过电话激活一下账号,目前不提供国区电话的激活方式,但可以使用虚拟电话来激活,网上有很多教程可以参考。

二、创建 OpenAI API KEY

外部应用访问 ChatGPT 的服务需要调用 OpenAI API,这时需要用到 API KEY,这个API KEY 在账号注册完成后就可以创建了。

创建完成后把 API KEY 保存到一个文件中,后面会用到。需要说明的是 OpenAI API 使用是收费的,初始会有 18$ 的额度,根据调用 API 时使用的具体服务来扣费,比如选择不同的模型。已花费的详细数据可以查询

三、安装 OpenAI Python库

$pip install openai

四、配置微信公众号平台

详细的步骤请参考 1 | 2 这两篇文章的说明。

五、UWSGI 服务配置

详细步骤请参考这篇文章的描述。

六、Python 服务端代码实现

对从微信公众号平台发过来的消息类型进行判断,如果是文本消息同时消息内容的头部有 AI# 三个字符,则调用 OpenAI API 访问 ChatGPT 服务,再把服务的返回结果发送回微信公众号平台并显示给微信客户端。

程序中使用的 openai.api_key 就是在第二步创建的,另外这里用到了OpenAI GPT-3 的模型“text-davinci-003”。详细的模型介绍请参考官网的说明。

handle.py

from utils import check_signature
import web
from wechatpy import parse_message 
from wechatpy.replies import TextReply
from wechatpy.replies import ImageReply
from wechatpy.replies import ArticlesReply
from wechatpy import create_reply
import openai

openai.api_key = "sk-..."

class Handle(object):
    def GET(self):
        try:
            data = web.input()
            if len(data) == 0:
                return "欢迎来到客飞翱的公众号"
            echostr = data.echostr
            signature = data.signature
            timestamp = data.timestamp
            nonce = data.nonce
            token = "验证服务器配置时定义的token"
            isok = check_signature(token, signature, timestamp, nonce)

            print ("handle/GET func: timestamp, signature: ", timestamp, signature)
            if isok==1:
                return echostr
            else:
                return ""
        except Exception as Argument:
            return Argument

    def POST(self):
        try:
            data = web.data()
            print ("Handle Post webdata is ", data)
            msg = parse_message(data)

            if msg.type == 'text' and msg.content.lstrip().startswith("AI#"):
                inputStr = msg.content.split("#", 1)[1]
                completion = openai.Completion.create(
                               model="text-davinci-003",
                               prompt=inputStr,
                               max_tokens=100,
                               temperature=0.5)
                fast_reply = create_reply(completion.choices[0].text, message=msg)
                return fast_reply.render()
        except Exception as Argument:
            return Argument

index.py

import sys
import web
from handle import Handle
sys.path.append('/home/user/webpy')

urls = (
    '/weixin', 'Handle',
)

app = web.application(urls, globals())

if __name__ == '__main__':
    app.run()

application = app.wsgifunc()

目前网上有很多微信集成 ChatGPT 的程序可用,实现的方式有所不同,评分比较高的有 1 | 2 | 3

发表评论

邮箱地址不会被公开。 必填项已用*标注