首页 > 编程语言 >python wxauto+OpenAI 搭了个微信小伙伴

python wxauto+OpenAI 搭了个微信小伙伴

时间:2023-02-10 20:33:58浏览次数:50  
标签:python 微信 tokens msg max print wxauto model wx

都知道ChatGPT火,没用过怎么知道他为什么火?于是好奇搞个玩玩。

第一步:获取OPENAI_API_KEY

首先你能要去官网
注册账号后去创建一个keys
具体略
这一步比较关键,仁者见仁智者见智
你拿不到我也没什么办法

第二步:搭起OpenAI的可用服务

pip3 install OpenAI  # 安装模块
import os
import openai

# 输入你第一步中获取的OPENAI_API_KEY
openai.api_key = "OPENAI_API_KEY"
# openai.api_key = os.getenv("OPENAI_API_KEY")

# 目前官方开放的四种模型 davinci是目前最高智能的
# max_tokens是最大关键词数
__model = [
    {"model": "text-davinci-003", "max_tokens": 4000},
    {"model": "text-curie-001", "max_tokens": 2048},
    {"model": "text-babbage-001", "max_tokens": 2048},
    {"model": "text-ada-001", "max_tokens": 2048},
]
model = __model[0]

# 提问方法 prompt提问内容
def chatgpt(prompt: str) -> str:
    try:
        response = openai.Completion.create(
            model=model['model'],
            prompt = prompt,
            temperature=0,
            max_tokens=model['max_tokens'] - 200,
            top_p=1,
            frequency_penalty=0,
            presence_penalty=0
        )
		# 返回回答
        return response["choices"][0]["text"].strip()
    except Exception as exc:
        return exc

第三步:启动微信应用

略
不会就去百度

第四步:使用wxauto接管微信

pip3 install wxauto  # 安装模块

# https://github.com/cluic/wxauto
import time, copy, traceback
from wxauto import *
from chatrob import chatgpt  # 导入第三步中的提问方法


who = '发送对象'  # 指定发送对象

# 获取当前微信客户端
wx = WeChat()
wx.ChatWith(who)  # 打开聊天窗口

# 用于过滤掉历史消息
_old_list = [i for i in wx.GetAllMessage]

# 主体
while True:
    try:
        # wx = WeChat()
        wx.ChatWith(who)
        # 获取当前页面的数据,保留最后10条
        msgs = wx.GetAllMessage[-10:]
        print(msgs)
        
        for msg in msgs:
            print(time.time(), msg)
            q = res = ""
            
            # 判断消息中是否有关键字 并且 这条消息不是历史消息
            if "@冬夜分身\u2005" in msg[1] and msg not in _old_list:
                
                # 取出关键字得到问题
                q = copy.deepcopy(msg[1]).replace("@冬夜分身\u2005", "")
                print("+++++++++++++++++++++++")
                print(q)
                print("+++++++++++++++++++++++")
                
                # 调用提问方法获取回答
                a = chatgpt(copy.deepcopy(msg[1]).replace("@冬夜分身\u2005", ""))
                
                # 拼接返回格式
                res = f'''@{msg[0]} {q} 

{a}'''
                print("-----------------------")
                print(res)
                print("-----------------------")
                
                # 聊天页返回输出
                WxUtils.SetClipboard(res)  # 将内容复制到剪贴板,类似于Ctrl + C
                wx.SendClipboard()  # 发送剪贴板的内容,类似于Ctrl + V
        
        # 将消息加入历史任务防止重复回答
        if msg not in _old_list:
            _old_list.append(msg)
            _old_list = _old_list[-200:]  # 防止占用过多内存
        time.sleep(1)
    except Exception as e:
        input(e, traceback.format_exc)

标签:python,微信,tokens,msg,max,print,wxauto,model,wx
From: https://www.cnblogs.com/shof/p/17110213.html

相关文章

  • python-日期和时间
    Python提供了一个time和calendar模块可以用于格式化时间。1、time.time():获取当前时间戳importtimeif__name__=='__main__':print('当前时间戳:',time.time())2......
  • python的学习之路之day1
    2023.2.10DAY1python基础课程李洋老师上课顺序:昨日回顾,今日详解主要课程内容介绍python基础网址:https://www.yuque.com/liyangqit/lb35ya/nkp81x面向对象网络和......
  • #yyds干货盘点#【愚公系列】2023年02月 微信小程序-电商项目-商品购物车功能实现
    前言在电商的核心交易流程中,购物车是其中非常重要的一环,它承担商品加购、价格计算、促销活动展示等功能,与会员系统、商品系统、库存系统、订单系统等紧密结合。vant-weapp......
  • [oeasy]python0080_设置RGB颜色_24bit_24位真彩色_颜色设置
    RGB颜色回忆上次内容上次首先了解了索引颜色\33[38;5;XXXm设置前景为索引色\33[48;5;XXXm设置背景为索引色RGB每种颜色可选0-5总共6级想......
  • Python 安装库的方法及解决pip 安装时速度缓慢的方法
    pip安装:pip是python内置的非常好用的下载工具,基本可以下载全部的python库。pip是Python库管理工具,该工具提供了对Python库的查找、下载、安装、卸载的功能。pip最常用......
  • 函数基础学习整理-python
    1.数学函数importmathprint('-1的绝对值是{}'.format(abs(-1)))print('divmod函数返回商和余数的元祖{}'.format(divmod(9,3)))#****print('sum函数求和{}'.fo......
  • 学习Python的第一天
    一,Typora软件的使用 #1.官网下载https://www.typoraio.cn/#2.该软件支持markdown格式,是目前使用最为频繁的一种格式,该软件的后缀名是.md#3.如何书写标题(6级)......
  • 有道词典 python
    defyoudaocidian():danciben_path=r"C:\Users\wx\Desktop\123.txt"withopen(danciben_path,encoding='utf-8')asf:file=f.read()each=rando......
  • 【Azure事件中心】使用Python SDK(Confluent)相关方法获取offset或lag时提示SSL相关错误
    问题描述使用PythonSDK(Confluent)相关方法获取offset或lag时,提示SSL相关错误,是否有更清晰的实例以便参考呢? 问题解决执行代码,因为一直连接不成功,所以检查confluent_ka......
  • python的垃圾回收机制
    1.垃圾回收机制的算法分类python垃圾回收算法通常有三类:引用计数,标记清除和分代回收,主要以引用计数为主,标记清除和分代回收为辅 2.对象的存储方式——refchain环......