likes
comments
collection
share

【超详细!】Python微信公众号开发(4)- 手把手教你接入GPT

作者站长头像
站长
· 阅读数 8

之前我们已经打通了Python微信公众号和服务器之间的数据流通路,可以添加我们自己的业务了。 如果还没有打通环境的同学,请参考我的系列文章:

本篇文章将小试牛刀,将时下爆火的OpenAI GPT大模型能力接入进来,完成公众号内与用户的自动对话。

题外话:ChatGPT与OpenAI的关系与区别 因为我注意到好多人都分不清ChatGPT和OpenAI,遂解释下:

  • OpenAI是个公司,它有GPT系列大模型及对外开发的接口
  • ChatGPT是个对话软件,底层是调用的OpenAI的GPT系列大模型
  • 开发者想自己实现对话软件功能,是去仿照ChatGPT,需要调用OpenAI的API接口

0. OpenAI 环境

接入OpenAI,是通过调用OpenAI API的方式。在这之前,你首先需要一个OpenAI的Key。

0.1 OpenAI Key的获取

由于众所周知的原因,OpenAI是不对国内用户正式开放的。所以如果你想使用ChatGPT或调用OpenAI的接口,要么有方法到达科学的彼岸,要么使用国内代理。这一块由于平台限制不让写教程,所以请自行解决或私信。

1. 你的第一个OpenAI程序

有了key,让我们来真正开始自己的第一个OpenAI程序! (1)确保你已经有了Python环境可用,我这里直接在之前的服务器中写代码。

(3)在项目文件夹里,创建一个名为 .env 的文件

【超详细!】Python微信公众号开发(4)- 手把手教你接入GPT

(4)在.env文件中输入下列信息:

  • 如果你是原生的OpenAI API Key,有科学上网的方法,则在.env文件中写:
    OPENAI_API_KEY="sk-xxx"   # <-------- 你的原生 OpenAI API Key
    
  • 如果你是用我上面说的DevAGI平台的虚拟API Key,则在.env文件中写:
    OPENAI_API_KEY="sk-xxx"   # <-------- 你的原生 OpenAI API Key
    OPENAI_BASE_URL="https://api.fe8.cn/v1" # 注意:一个字母都不要错
    

.env文件的作用就是配置一些Key或URL或一些环境变量,在程序运行时通过 load_dotenv 加载。这样也避免了将一些重要的信息暴露在代码中。

(5)安装OpenAI相关库

pip install python-dotenv openai

注意我这里安装到的openai版本为1.6.1,openai的接口在<1.0和>1.0的版本中有很大变化。 【超详细!】Python微信公众号开发(4)- 手把手教你接入GPT

(6)新建一个文件名为"openai_test.py",填入以下代码:

from openai import OpenAI
# 加载 .env 到环境变量
from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv())

client = OpenAI()

response = client.chat.completions.create(
    model="gpt-3.5-turbo-1106",
    messages=[
        {
            "role": "user",
            "content": "你是谁?"
        }
    ],
)

print(response.choices[0].message.content)

(7)运行程序,结果如下说明运行成功。

【超详细!】Python微信公众号开发(4)- 手把手教你接入GPT

以上这段代码的意思就是调用OpenAI的接口,发送“你是谁?”,然后收到回复“我是一个AI助手,能为您提供帮助和回答您的问题。有什么我可以帮到您的吗?”

如果你遇到下面的错误:

【超详细!】Python微信公众号开发(4)- 手把手教你接入GPT

说明你的原生OpenAI Key没有科学上网,无法链接OpenAI网络。或者你的DevAGI的.env文件中的虚拟Key和Base没有配置对。请仔细检查。

2. OpenAI接入公众号,与用户对话

上面我们的OpenAI API已经成功调用了,接下来只需要将用户的对话内容传入就可以了。

(1)将上面OpenAI的调用封装成函数

from openai import OpenAI
# 加载 .env 到环境变量
from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv())

client = OpenAI()

###### 这里封装成函数 #######
def get_chat_completion(prompt, model = "gpt-3.5-turbo-1106"):
    messages = [{
        "role": "user",
        "content": prompt
    }]
    
    response = client.chat.completions.create(
        model = "gpt-3.5-turbo-1106",
        messages=messages
    )

    return response.choices[0].message.content

(2)在用户发送消息过来时,调用以上接口获取大模型生成结果,然后将结果封装成回复xml格式

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from flask import Flask, request, make_response
...... # 请参照之前教程
from openai_test import openai_test

...... # 请参照之前教程
    
@app.route('/wechatai', methods=['GET', 'POST'])
def wechatai():
    if request.method == 'GET':
        return verify_wechat(request)
    else:
        # 处理POST请求
        print("user request data: ", request.data)
        printXML(request.data)
        # 解析用户信息
        user_message_content, from_user_name, to_user_name = getUserMessageContentFromXML(request.data)
        print("user message content: ", user_message_content)
        
        # 调用OpenAI接口生成回复内容 # <---------- 这里接入!!!
        response_content = openai_test.get_chat_completion(user_message_content)
        print("response content: ", response_content)
        
        # 生成回复信息并返回
        return generate_response_xml(from_user_name, to_user_name, response_content)

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=80, debug=True)

(3)运行程序,测试一下,已经可以愉快的对话了

【超详细!】Python微信公众号开发(4)- 手把手教你接入GPT

至此,我们将OpenAI大模型基础对话能力接入了微信公众号中,实现了简单的与用户对话的功能。 功能比较简单,就是用户发一句话,大模型回一句话。没有记忆能力和上下文关联能力等。但是原理已经走通了。


从今天开始,持续学习,开始搞事情。踩坑不易,欢迎关注我,围观我! 【超详细!】Python微信公众号开发(4)- 手把手教你接入GPT

有任何问题,欢迎+vx:jasper_8017,我也是个小白,想与志同道合的朋友一起讨论,共同进步!

转载自:https://juejin.cn/post/7350866242008612879
评论
请登录