一、前言
在快节奏的生活中,人们越来越依赖即时通讯工具进行沟通交流。然而,频繁的消息回复往往会占用大量时间和精力。为了解决这个问题,本文介绍了一个基于Python的自动化脚本,通过集成微信自动回复和文心一言功能,实现智能回复消息的目的。该脚本不仅提高了聊天效率,还增加了回复的趣味性和个性化。
二、整体架构流程
-
初始化模块:
from wxauto import WeChat from pynput import keyboard import threading import time import erniebot # 导入文心一言库首先,导入所需的Python库,包括wxauto(用于控制微信客户端)、pynput(用于监听键盘事件)、threading(用于多线程操作)以及erniebot(用于文心一言API调用)。
-
全局变量定义:
exit_flag = False定义一个全局变量
exit_flag,用于指示是否应该退出程序。 -
定义问答函数:
def ask_question(question): erniebot.api_type = 'aistudio' erniebot.access_token = 'faed7b01330ba36adf1c6b95e63d919c35ba8b24' response = erniebot.ChatCompletion.create(model='ernie-3.5', messages=[{'role': 'user', 'content': question}], system="你是一个阳光开朗的大学生,请以大学生的身份回复信息") return response.get_result()该函数使用文心一言API进行聊天补全,接收用户提问并返回智能回复。
-
定义键盘监听回调函数:
def on_press(key): try: if key == keyboard.Key.esc: global exit_flag exit_flag = True return False # 停止监听 except AttributeError: pass # 忽略非按键事件该函数在键盘事件发生时被调用,当检测到Esc键被按下时,设置
exit_flag为True,并停止监听。 -
启动键盘监听器:
listener = keyboard.Listener(on_press=on_press) listener_thread = threading.Thread(target=listener.start) listener_thread.start()创建并启动键盘监听器,确保其在单独的线程中运行。
-
微信客户端初始化与聊天对象选择:
wx = WeChat() wx.ChatWith("中央情报局")初始化微信客户端并选择一个聊天对象进行对话。
-
消息监听与回复:
try: while not exit_flag: new_message = wx.GetNextNewMessage() # 假设这是获取新消息的正确方法 if new_message: content = list(new_message.values())[0][0] print(content) wx.SendMsg(ask_question(str(content))) time.sleep(3) # 如果需要,可以取消注释这行代码 finally: listener.stop() listener_thread.join() # 等待监听器线程结束在主循环中,持续监听新消息。当有新消息时,提取消息内容,通过文心一言生成回复,并发送回复消息。循环中添加了延时以避免过于紧密。
三、技术细节
- wxauto库:用于控制微信客户端,实现消息接收与发送功能。需要注意的是,wxauto库可能需要特定的微信版本和操作系统环境。
- pynput库:用于监听键盘事件,实现程序的优雅退出。通过监听Esc键,用户可以随时中断程序运行。
- erniebot库:百度文心一言的Python SDK,用于调用文心一言API进行智能回复。在使用前需要配置API类型和访问令牌。
- 多线程操作:通过threading库实现键盘监听器与主循环的并行运行,确保程序在监听键盘事件的同时能够处理微信消息。
四、结论
本文介绍了一个基于Python的自动化脚本,通过集成微信自动回复和文心一言功能,实现了智能回复消息的目的。该脚本不仅提高了聊天效率,还增加了回复的趣味性和个性化。通过键盘监听功能,用户可以随时中断程序运行,确保程序的灵活性和可控性。该脚本在特定场景下具有广泛的应用价值,如自动回复工作消息、自动回复群聊消息等。然而,需要注意的是,该脚本依赖于第三方库和API,可能存在一定的兼容性和稳定性问题。在实际应用中,需要根据具体需求和环境进行适当的调整和优化。
五、完整代码
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2024-12-17 10:42
# @Author : Leuanghing Chen
# @Blog : https://blog.csdn.net/weixin_46153372?spm=1010.2135.3001.5421
# @File : 基于文心一言的微信自动回复消息.py
# @Software : PyCharm
from wxauto import WeChat
from pynput import keyboard
import threading
import time
import erniebot # 导入文心一言库
# 全局标志,用于指示是否应该退出程序
exit_flag = False
def ask_question(question):
# 设置文心一言的API类型和访问令牌
erniebot.api_type = 'aistudio'
erniebot.access_token = 'faed7b01330ba36adf1c6b95e63d919c35ba8b24'
# 使用文心一言进行聊天补全
response = erniebot.ChatCompletion.create(
model='ernie-3.5',
messages=[{'role': 'user', 'content': question}],
system="你是一个阳光开朗的大学生,请以大学生的身份回复信息"
)
return response.get_result()
# 定义当键盘事件发生时调用的回调函数
def on_press(key):
try:
if key == keyboard.Key.esc:
global exit_flag
exit_flag = True
return False # 停止监听
except AttributeError:
pass # 忽略非按键事件
# 创建键盘监听器
listener = keyboard.Listener(on_press=on_press)
# 在单独的线程中启动监听器
listener_thread = threading.Thread(target=listener.start)
listener_thread.start()
# 初始化微信客户端连接
wx = WeChat()
# 选择一个聊天对象
wx.ChatWith("中央情报局")
# 注意:这里我们没有使用 WeChatFiles 类,因为它可能不是用于控制微信主功能的
# 如果您确实需要使用 WeChatFiles 类,请确保您了解其用途并正确实例化它
try:
# 持续监听新消息
while not exit_flag:
new_message = wx.GetNextNewMessage() # 假设这是获取新消息的正确方法
if new_message:
content = list(new_message.values())[0][0]
print(content)
# 发送信息
wx.SendMsg(ask_question(str(content)))
# 可能需要在这里添加一些延迟,以避免循环过于紧密
time.sleep(3) # 如果需要,可以取消注释这行代码
finally:
# 确保在退出前停止键盘监听器
listener.stop()
listener_thread.join() # 等待监听器线程结束
文章来源于互联网:Python实现基于文心一言的微信自动回复消息
一、简介 效果:运行起来后,可以连续对话 硬件:树莓派5、麦克风、音箱,成本500-1000 软件:snowboy作为唤醒词、百度语音作为语音识别、brain作为指令匹配、百度文心一言作为对话模块、微软的edge-tts语音合成… 二、开发流程 连接到树莓…
5bei.cn大模型教程网










