当前位置:   article > 正文

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

chatgpt3.5实现微信自动回复

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

  1. import openai
  2. def chatgpt(question):
  3. openai.api_key = "在这里填入你的API-key"
  4. response = openai.Completion.create(
  5. model="gpt-3.5-turbo-instruct",
  6. prompt=question,
  7. temperature=1, #模型回答的自由程度
  8. max_tokens=2000, #一次能输出的最大字数,但并不一一对应
  9. top_p=1,
  10. frequency_penalty=0,
  11. presence_penalty=0
  12. )
  13. #提取回答
  14. answer = response.choices[0].text
  15. return answer

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

  1. from uiautomation import WindowControl
  2. def weixin_reply():
  3. #绑定微信主窗口
  4. wx = WindowControl(Name='微信',) # 窗口的名称被设置为'微信',表示该对象将尝试找到一个标题为'微信'的窗口
  5. print("已绑定成功")
  6. wx.SwitchToThisWindow() #使窗口 wx 切换到前台,显示在其他窗口之上
  7. hw = wx.ListControl(Name='会话') # 该对象将尝试找到一个具有名称'会话'的列表控件,以供操作
  8. # 什么是列表控件:列表控件(List Control)是一种常见的图形用户界面(GUI)元素,通常用于显示和管理一系列项目、数据、或选项。列表控件可以在各种桌面应用程序和操作系统中找到,用于展示信息、提供选择、或支持导航等功能。
  9. # df = pd.read_csv('回复数据.csv', encoding='gb18030')
  10. while True:
  11. # TextControl 是 uiautomation 库中的一个类,用于表示文本控件,它可以用于获取或修改文本内容
  12. we = hw.TextControl(searchDepth=4) #只读取左侧聊天会话框的前4个
  13. # 死循环维持,没有超时报错
  14. while not we.Exists(0):
  15. pass
  16. if we.Name: # 存在未读消息(Name表示消息的内容,不为None就继续运行)
  17. we.Click(simulateMove=False) # 点击未读消息
  18. print("点击成功")
  19. last_msg = wx.ListControl(Name='消息').GetChildren()[-1].Name
  20. # 创建了一个新的 ListControl 对象,用于查找名为'消息'的列表控件。
  21. # .GetChildren() 方法获取'消息'列表控件的子控件,即消息列表中的各个消息项
  22. # [-1] 表示选择最后一个消息项,然后通过 .Name 获取该消息项的名称,即最后一条消息
  23. print('last_msg:',last_msg)
  24. last_msg="请用中文回答:"+last_msg
  25. print("last_msg",last_msg)
  26. msg =chatgpt(last_msg)
  27. wx.SendKeys(msg, waitTime=0)
  28. print('成功输入')
  29. wx.SendKeys('{Enter}', waitTime=0)
  30. print('成功发送')
  31. if __name__=="__main__":
  32. weixin_reply()

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

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

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

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

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

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

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

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

5.存在闪退概率

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

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号