当前位置:   article > 正文

基于python实现微信接入ChatGpt进行自动回复_python chatgpt 会话

python chatgpt 会话

教程说明

1.机器人无法取代真人聊天,本教程仅用于学习,使用机器人和别人聊天本身就是对朋友的不尊重,请谨慎使用
2.本教程为了让大家更清晰地理解,让大家更方便进行自定义开发,本教程分为三大模块,每一模块对相关的功能和操作都进行单独的说明,并且教程最后将功能模块进行了合并总结,呈现整体效果
3.本教程对相关的基础操作只做了简单的说明,如果对python没有任何经验的新手朋友,需要根据本文档的引导进行自行搜索,本文档只对本文档主题进行详细说明,如果有什么建议,可以在评论区留言,欢迎各路大神批评斧正!
4.本教程只用于个人学习,如有疏漏,尽情谅解

下载和使用python库

1.wxauto,实现微信窗口消息检测
2.openai,获取chatgpt返回数据
3.time,实现操作延时,并且获取时间数据

如何下载python库

方法一:通过pip指令下载,前提是python已经加入环境变量,打开cmd输入以下指令
首先

//首先输入以下指令下载相关的库

pip install 库名
//比如说下载wxauto库
pip install wxauto
  • 1
  • 2
  • 3
  • 4
  • 5

方法二:(通过pycharm演示)
点击+,然后搜索库名,实现下载

如何使用python库

导入python库

在这里插入图片描述
然后在代码中使用相关的库方法就可以了,由于篇幅有限,在这里就不详细赘述,请自行搜索

chatgpt部分

1.首先你需要有一个openai账号,才可以进行以下操作
2.由于openai在亚太地区无法使用,并且属于国外网站,所以包括本章节的第一部分:申请openai的key,以及第二部分:python调用chatgpt的简单示例,都需要"魔法上网"才行
3.申请的免费key只有5美元的调用额度

申请openai的key

1.进入官网:openai
在这里插入图片描述
2. 接下来我们点击 api 即可:
在这里插入图片描述
3. 查找自己账户的 key:
我们依次点击 Personal ,View API keys
在这里插入图片描述
4. 创建自己的 key:
在这里插入图片描述

python调用chatgpt的简单示例

该示例可以实现连续对话功能

import openai

# 初始化 OpenAI API 客户端
openai.api_key = "你的openai key"


# 定义一个函数生成 ChatGPT 的回复
def generate_response(prompt):
    # 调用 OpenAI API 生成回复
    completions = openai.Completion.create(
        engine="text-davinci-003",  # 指定使用的引擎名称
        prompt=prompt,  # API 请求的提示信息
        max_tokens=1024,  # API 响应的最大令牌数
        n=1,  # API 请求的完成数
        stop=None,  # API 响应的终止标志
        temperature=0.5,  # API 请求的温度参数
    )

    # 从 API 响应中取得回复
    message = completions.choices[0].text
    return message


# 初始化一个变量来存储对话上下文
context = ""

# 开始一个死循环来接受用户输入
while True:
    # 提示用户输入信息
    user_input = input("你:")
    # 如果用户输入结束命令,退出循环
    if user_input in ["结束", "退出", "end", "exit"]:
        break
    # 把用户输入信息添加到对话上下文中
    context = context + user_input + "\n"
    # 调用 generate_response() 函数生成回复
    response = generate_response(context)
    # 显示 ChatGPT 的回复
    print("ChatGPT:" + response)
    # 把 ChatGPT 的回复添加到对话上下文中
    context = context + response + "\n"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41

wxauto部分

wxauto简单示例

# 首先,将wxauto模块导入到我们的代码块中。
from wxauto import *

# 初始化我们已经登录的客户端对象WeChat。
wx_cli = WeChat()

# 获取当前的客户端的联系人列表。
wx_cli.GetSessionList()

# 输出当前所在的聊天窗口的信息。
messages = wx_cli.GetAllMessage
for message in messages:
    print('%s : %s' % (messages[0], messages[1]))

# 获取到当前的聊天信息,还可以获取更多,使用LoadMoreMessage函数就可以实现。
wx_cli.LoadMoreMessage()
more_messages = wx_cli.GetAllMessage
for more_message in more_messages:
    print('%s : %s' % (more_message[0], more_message[1]))

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

整体实现

将openai库与wxauto库进行整合开发,实现了微信接入ChatGpt进行自动回复的功能

整体示例代码

from wxauto import *
import time
import pyautogui
import pyperclip
import openai


# 获取当前微信客户端
wx = WeChat()
num = 0
# 获取会话列表
wx.GetSessionList()

openai.api_key = "你申请的openai key"


###############################
# 1、获取默认窗口聊天信息
###############################
# 定义一个函数生成 ChatGPT 的回复
def generate_response(prompt):
    # 调用 OpenAI API 生成回复
    completions = openai.Completion.create(
        engine="text-davinci-003",  # 指定使用的引擎名称
        prompt=prompt,  # API 请求的提示信息
        max_tokens=1024,  # API 响应的最大令牌数
        n=1,  # API 请求的完成数
        stop=None,  # API 响应的终止标志
        temperature=0.5,  # API 请求的温度参数
    )

    # 从 API 响应中取得回复
    message = completions.choices[0].text
    return message


# 初始化一个变量来存储对话上下文
context = "请用中文回复"

# def data(newdata):
#     urldata = "https://api.ownth*ink.com/bot?appid=e94dc1b1833a7f57ceeeb593bddccd87&userid=1&spoken=" + newdata
#     sess = requests.get(urldata)
#     answer = sess.text
#     answer = json.loads(answer)
#     return answer["data"]["info"]["text"]


# def get_default_window_messages(context):


# if __name__ == '__main__':
while True:
    if num < 10:
        # 默认是微信窗口当前选中的窗口
        #   输出当前聊天窗口聊天消息
        msgs = WeChat()
        if msgs.GetLastMessage[0] != "二流摄影爱好者":
            print("检测到新消息")
            # 提示用户输入信息
            # 如果用户输入结束命令,退出循环
            # if user_input in ["结束", "退出", "end", "exit"]:
            #     break
            # 把用户输入信息添加到对话上下文中
            context = context + msgs.GetLastMessage[1] + "\n"
            # 调用 generate_response() 函数生成回复
            response = generate_response(context)
            # 显示 ChatGPT 的回复
            print("ChatGPT:" + response)
            # 把 ChatGPT 的回复添加到对话上下文中
            context = context + response + "\n"
            print(msgs.GetLastMessage[0], msgs.GetLastMessage[1])
            # pyperclip.copy(response)
            # pyautogui.hotkey('ctrl', 'v')
            # time.sleep(10)  # 延迟时间,模拟真人回复
            wx.SendMsg(response)
            # pyautogui.hotkey('enter')
            num += 1
        else:
            print("正在检测中")
    else:
        num = 0
        context = ""

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/260792
推荐阅读
相关标签
  

闽ICP备14008679号