首页 > 编程语言 >Python代码调用扣子平台大模型,结合wxauto优秀开源项目实现微信自动回复好友消息

Python代码调用扣子平台大模型,结合wxauto优秀开源项目实现微信自动回复好友消息

时间:2024-08-15 13:26:33浏览次数:13  
标签:Python 微信 answers content print msg wxauto response

最近看到微信自动化回复,觉得很有意思,想接通大模型,自动回复好友消息。以下文章将对代码进行详细解释,文章末尾附源码

1.在抖音扣子平台创建发布一个大模型智能问答助手,获取API-key等。在扣子平台有详细文档。

2.wxauto安装。pip install wxauto

项目地址是​​​​​​cluic/wxauto: Windows版本微信客户端(非网页版)自动化,可实现简单的发送、接收微信消息,简单微信机器人 (github.com)https://github.com/cluic/wxauto?tab=readme-ov-fileicon-default.png?t=N7T8https://github.com/cluic/wxauto?tab=readme-ov-file

作者有详细文档介绍。接收消息以及发送消息。

3.代码基本原理:利用wxauto接收到好友消息,以网络请求方式发送到扣子,调用大模型,获取回答,解析回答内容,利用wxauto发送至好友,以此实现自动回复流程。

4.代码如下,很简短。token需要自己从扣子平台获取。不会的可以留言。

import requests

import json

import re

import uuid

from wxauto import WeChat

# 使用Coze API获取AI生成的回答

def coze_chat(query):

    print(f"发送到Coze的消息内容: {query}")  # 调试信息

    url = 'https://api.coze.cn/open_api/v2/chat'

    token = '扣子平台获取'

    bot_id = "7380746246962692096"

    stream = False  # True: 流式返回  False: 非流式返回

    headers = {

        'Authorization': f'Bearer {token}',

        'Content-Type': 'application/json',

        'Accept': '*/*',

        'Host': 'api.coze.cn',

        'Connection': 'keep-alive'

    }

    data = {

        "conversation_id": "123",

        "bot_id": bot_id,

        "user": str(uuid.uuid4()),

        "query": query,

        "user_photo": None,

        "stream": stream,

    }

    response = requests.post(url, headers=headers, data=json.dumps(data))

    response = str(response.content, encoding='utf-8')

    if stream:

        answers = extract_answers(response)

    else:

        answers = extract_answers_non_stream(response)

    #print(f"从Coze接收到的回复: {answers}")  

    return answers

# 流式返回提取模型回答内容

def extract_answers(response):

    lines = response.split('\n')

    answers_parts = []

    content_re = re.compile(r'"type":"answer".*?"content":"(.*?)"')

    for line in lines:

        if line.startswith('data:'):

            match = content_re.search(line)

            if match:

                answers_parts.append(match.group(1))

    full_answer = ''.join(answers_parts)

    return full_answer

# 非流式返回提取模型回答内容

def extract_answers_non_stream(response):

    data = json.loads(response)

    answers_parts = []

    for message in data['messages']:

        if message['type'] == 'answer':

            answers_parts.append(message['content'])

    full_answer = ''.join(answers_parts)

    return full_answer


 

# 主函数,自动回复

def main(wx, msg_content):

    print(f"收到的微信消息: {msg_content}")  

    response_msg = coze_chat(msg_content)

   

    #发送给备注名是一的

    wx.SendMsg(msg=response_msg + "--此内容为AI生成", who="一")

    print(f"发送给一的消息: {response_msg}")  



 

if __name__ == '__main__':

    wx = WeChat()

    while True:

        msgs = wx.GetAllMessage()

        #print(f"收到的消息列表: {msgs}")  

        if msgs:

            last_msg = msgs[-1]

            # print(f"最新一条消息: {last_msg}")  

            # print(f"消息备注名: {last_msg.sender_remark}")  # 打印备注名

            # print(f"消息类型: {last_msg.type}")  # 打印消息类型

           

            # 判断是否是好友消息,并且备注名是“一”

            if last_msg.type == "friend" and last_msg.sender_remark == "一":

                print("符合条件的消息,准备处理...")

                main(wx, last_msg.content)

           

标签:Python,微信,answers,content,print,msg,wxauto,response
From: https://blog.csdn.net/m0_66980894/article/details/141217696

相关文章

  • Amazing-Py-Scripts:用Python代码脚本实现一键自动化,告别重复性工作,提升工作效率
    你是否厌倦了枯燥的重复性工作?是否渴望用代码创造出有趣的工具来提升效率?那么,Amazing-Python-Scripts将会成为你的秘密武器!这个GitHub仓库汇集了大量实用且有趣的Python脚本,涵盖从基础到高级,从自动化任务到娱乐应用,旨在帮助你轻松实现自动化、提高工作效率、并用代码点缀......
  • 不依靠for循环,Python如何对列表进行去重并保留排列顺序
    在python中,我们想要从列表中删除重复元素,并且保留去重之前的先后排列顺序。在这里,我们本文不谈论for循环,我们来谈论其他的更优方法——OrderedDict和set。要知道,OrderedDict可以通过保留插入顺序来实现元素去重;而set集合,则可以直接去除列表中的重复元素。需要注意的是,我们的......
  • Python统计web日志中每天用户访问情况
    背景统计web日志中每天用户访问情况日志目录importosfromconcurrent.futuresimportProcessPoolExecutorfrommultiprocessingimportManager#全局日志目录配置LOG_DIR="/var/log/nginx"defget_log_access(file_name,count_dict):"""处理单个日志文......
  • 【Python快速入门和实践011】Python常用脚本-目标检测之VOC格式转YOLO格式脚本
    一、数据集介绍        NEU-DET数据集是由东北大学(NortheasternUniversity,简称NEU)发布的一个用于钢材表面缺陷检测的数据集。这个数据集特别设计用于支持和促进工业领域中的缺陷检测研究。NEU-DET数据集的一些主要特点包括:多样性和复杂性:数据集包含了多种类型......
  • java毕业设计-基于微信小程序的宠物服务中心平台系统,基于移动端的宠物中心系统,基于jav
    文章目录前言演示视频项目背景项目架构和内容获取(文末获取)具体实现截图用户前台管理后台技术栈具体功能模块设计系统需求分析可行性分析系统测试为什么我?关于我我自己的网站项目相关文件前言博主介绍:✌️码农一枚,专注于大学生项目实战开发、讲解和毕业......
  • 40、Python之面向对象:扩展的对象属性解析顺序(描述符 + MRO)
    引言在上一篇文章中,我们简单回顾了Python中在继承语境下的属性解析顺序,同时补充了能够控制、影响属性解析的3个函数/方法(2个魔术方法+1个内置函数),相信对Python中属性的解析,相较于MRO,有了更进一步的认识。今天这篇文章中,我们将考虑属性描述符存在的情况下,对于Python中的属性......
  • python之numpy (5 分割和复制)
    分割分割指将矩阵分割为几个小部分,以便于后续的计算需要。splitimportnumpyasnpm=np.random.random((3,3))print(m)sp=np.split(m,3,axis=0)ssp=np.split(m,3,axis=1)print(sp,ssp,sep='\n')[[0.373247510.933194940.18961048][0.814330810.377225750.00708......
  • python之numpy(4 选择数据及合并)
    选择数据importnumpyasnpm=np.random.random((3,3))print(m)print(m[0],m[1][1],sep='\n')print(m[1,1])print(m[1,:])print(m[:,1])结果:[[0.25960570.047399260.76332494][0.865032270.290489970.79591841][0.50535280.201822340.19601046]][......
  • windows保姆级的pycharm+anaconda搭建python虚拟环境
    (一)pycharm安装1.下载(1)从官网下载 ,一般来说选择社区版就够用了。我这里选择2024.1.6的windows版本OtherVersions-PyCharmGetpastreleasesandpreviousversionsofPyCharm.https://www.jetbrains.com/pycharm/download/other.html 2.安装(1)双击下载好的pycharm安......
  • PAT-1006 换个格式输出整数 python实现
    1.题目本题较为简单,只需要获取数字的各位数再分别按要求拼接到一起即可。2.代码如下  """输入:23423输出:BBSSS1234SS123"""#本题较为简单,只需要获取数字的各位数再分别按要求拼接到一起即可n=int(input())#获取输入的数字r......