python实现接入DeepSeek自动回复微信消息

本文介绍python实现接入deepseek自动回复微信消息,能用但是程序有个bug没有解决,就是捕获最新消息进行回复,感兴趣的读者可以尝试修改(免费下载
)。可能由于时间问题,某些属性会不兼容报错。——本文发布时间2025/4/2,python版本建议3.8

效果展示:

1.引入openai和wxauto

在pycharm中终端输入
pip install openai
pip install wxauto

2. DeepSeek生成API

浏览器搜索DeepSeek,充1块钱就行了,非常够用。后面在程序中把api_key 和base_url替换掉就行。

3.登录微信在后台,然后运行下面程序

from openai import OpenAI
from wxauto import WeChat
import time
import random


class WeChatBot:
    def __init__(self):
        # 初始化OpenAI客户端
        self.client = OpenAI(api_key="你的api_key", base_url="https://api.deepseek.com/v1")
        # 初始化微信自动化对象
        self.wx = WeChat()
        # 设置监听名单(好友或群聊)
        self.listen_list = {
            # "大姐二姐三妹",
            "二姐"
        }
        # 添加监听对象到微信客户端
        for whoItem in self.listen_list:
            self.wx.AddListenChat(who=whoItem)

    def __ask(self, msg):
        try:
            # 调用大模型生成回复
            response = self.client.chat.completions.create(
                model='deepseek-chat',
                messages=[
                    {"role": "system", "content": "你是哪吒,生性顽劣,请用简短口语化回答"},
                    {"role": "user", "content": msg}
                ],
                stream=False,
                max_tokens=50,  # 50 tokens ≈ 20-30个汉字
                temperature=0.3,  # 控制创造性(0~1,越高越随机)
                top_p=0.8,  # 控制多样性(0~1,越高可选词越多)
                # frequency_penalty=0.5,  # 降低重复词概率(-2~2,正值抑制重复)
                presence_penalty=0.8  # 避免重复话题(-2~2,正值抑制相似内容)

            )
            return response.choices[0].message.content
        except Exception as e:
            # 异常处理与默认回复
            print(f"API调用失败: {e}")  # 可替换为日志记录
            return "俺老孙暂时无法回答,请稍后再问!"

    def run(self):
        wait = random.randint(2, 4)  # 消息轮询间隔
        while True:
            # 获取监听到的新消息
            msgs = self.wx.GetListenMessage()
            # 遍历所有聊天窗口(可能包含群聊、好友等)
            for chat in msgs:
                # 获取该窗口的消息列表
                msg_list = msgs.get(chat)
                # 遍历每条消息
                for item in msg_list:
                    # print(dir(item))  # 打印消息对象的所有属性
                    if item.type == "friend":
                        try:
                            # 打印日志
                            print(f"接收【{item.sender}】的消息:{item.content}")
                            # 调用AI生成回复
                            reply = self.__ask(item.content)
                            # 发送回复
                            chat.SendMsg(reply)
                            print(f"回复【{item.sender}】的消息:{reply}")
                        except Exception as e:
                            if "1205" in str(e):  # 微信风控错误码
                                print("触发微信风控,暂停10分钟")
                                time.sleep(600)
                            else:
                                print(f"发送失败: {e}")
            time.sleep(wait)


if __name__ == "__main__":
    bot = WeChatBot()
    bot.run()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值