Chatgpt3.5实现微信自动回复(1.0版)

最近无聊做了个自动回复脚本

import openai

def chatgpt(question):
  openai.api_key = "在这里填入你的API-key"


  response = openai.Completion.create(
    model="gpt-3.5-turbo-instruct",
    prompt=question,
    temperature=1,   #模型回答的自由程度
    max_tokens=2000,   #一次能输出的最大字数,但并不一一对应
    top_p=1,
    frequency_penalty=0,
    presence_penalty=0
  )
  #提取回答
  answer = response.choices[0].text

  return answer

这里先定义了一个chatgpt()函数用于调用官方api接口。这里使用的是3.5的模型。API-key可以在官网上获取。每注册一个账号官方会赠送5美元的api接口调度费(大概可以用几千次吧),api密钥在账号里可以找。

from uiautomation import WindowControl


def weixin_reply():
  #绑定微信主窗口
  wx = WindowControl(Name='微信',)    # 窗口的名称被设置为'微信',表示该对象将尝试找到一个标题为'微信'的窗口
  print("已绑定成功")



  wx.SwitchToThisWindow()    #使窗口 wx 切换到前台,显示在其他窗口之上

  hw = wx.ListControl(Name='会话')   # 该对象将尝试找到一个具有名称'会话'的列表控件,以供操作
  # 什么是列表控件:列表控件(List Control)是一种常见的图形用户界面(GUI)元素,通常用于显示和管理一系列项目、数据、或选项。列表控件可以在各种桌面应用程序和操作系统中找到,用于展示信息、提供选择、或支持导航等功能。

  # df = pd.read_csv('回复数据.csv', encoding='gb18030')
  while True:
      # TextControl 是 uiautomation 库中的一个类,用于表示文本控件,它可以用于获取或修改文本内容
      we = hw.TextControl(searchDepth=4) #只读取左侧聊天会话框的前4个
     
      # 死循环维持,没有超时报错
      while not we.Exists(0):
          pass
    
      if we.Name:        # 存在未读消息(Name表示消息的内容,不为None就继续运行)
          we.Click(simulateMove=False)    # 点击未读消息
          print("点击成功")
          last_msg = wx.ListControl(Name='消息').GetChildren()[-1].Name
          # 创建了一个新的 ListControl 对象,用于查找名为'消息'的列表控件。
          # .GetChildren() 方法获取'消息'列表控件的子控件,即消息列表中的各个消息项
          # [-1] 表示选择最后一个消息项,然后通过 .Name 获取该消息项的名称,即最后一条消息
          print('last_msg:',last_msg)

          last_msg="请用中文回答:"+last_msg
          print("last_msg",last_msg)
          msg =chatgpt(last_msg)

          wx.SendKeys(msg, waitTime=0)
          print('成功输入')
          wx.SendKeys('{Enter}', waitTime=0)
          print('成功发送')
         
if __name__=="__main__":
   weixin_reply()

接下来是用微软开发的uiautomation库进行模拟用户点击图形界面的操作。

整个脚本分成两个板块。一个函数用来调用GPT的API接口。另一个模块用来搜寻微信里联系人的未读取消息。然后把消息发给GPT处理。再把反馈回来的消息自动输入。 代码里的每一步都有print检测是否成功运行。

用的时候记得要一点魔法的哈。

1.0版本还不是很稳定,测试问题反馈如下:

1.在读取联系人未读消息方面存在bug,常常会读取非指定的联系人对话

2.出现多次读取同一条未读消息的bug,可能是GPT响应时间过久,频繁接受消息导致反应混乱

3.自己发的消息有时也会被当成未读消息

4.无法实现连续相关的回复

5.存在闪退概率

以上问题会在2.0版本里得到修复

  • 7
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值