2024 年 Python 基于 Kimi 智能助手 Moonshot Ai 模型搭建微信机器人(更新中)

注册 Kimi 开放平台

Kimi:https://www.moonshot.cn/

Kimi智能助手是北京月之暗面科技有限公司(Moonshot AI)于2023年10月9日推出的一款人工智能助手,主要为用户提供高效、便捷的信息服务。它具备多项强大功能,包括多语言对话能力、文件阅读与理解、互联网信息访问、搜索能力、信息安全与准确性保障,以及友好的用户交互界面。Kimi是全球首个支持输入20万汉字的智能助手产品,并且已启动200万字无损上下文内测,显著提升了其处理长文本的能力。

Kimi 智能助手:https://kimi.moonshot.cn

在这里插入图片描述

Moonshot 模型

官方文档地址:https://platform.moonshot.cn/docs/intro

Moonshot 的文本生成模型(指moonshot-v1)是训练用于理解自然语言和书面语言的,它可以根据输入生成文本输出。对模型的输入也被称为“prompt”。通常我们建议您提供明确的指令以及给出一些范例,来让模型能够完成既定的任务,设计 prompt 本质上就是学会如何“训练”模型。moonshot-v1模型可以用于各种任务,包括内容或代码生成、摘要、对话、创意写作等。

语言模型推理服务

语言模型推理服务是一个基于我们 (Moonshot AI) 开发和训练的预训练模型的 API 服务。在设计上,我们对外主要提供了一个 Chat Completions 接口,它可以用于生成文本,但是它本身是不支持访问网络、数据库等外部资源,也不支持执行任何代码。

Token 基本单位

文本生成模型以 Token 为基本单位来处理文本。Token 代表常见的字符序列。例如,单个汉字"夔"可能会被分解为若干 Token 的组合,而像"中国"这样短且常见的短语则可能会使用单个 Token。大致来说,对于一段通常的中文文本,1 个 Token 大约相当于 1.5-2 个汉字。

需要注意的是,对于我们的文本模型,Input 和 Output 的总和长度不能超过模型的最大上下文长度。

moonshot 支持模型

模型名称最大文本长度(字符/标记)适用场景
moonshot-v1-8k8 k生成短文本
moonshot-v1-32k32 k生成长文本
moonshot-v1-128k128 k生成超长文本

模型的 8k、32k、128k 在描述 Moonshot-v1 系列语言模型时,具体指的是模型可以处理的最大上下文窗口长度或文本长度。这些数字代表了模型在理解和生成文本时能够考虑的连续文本字符或标记的数量。

设置 API Key 管理

设置管理地址:https://platform.moonshot.cn/console/api-keys

在这里插入图片描述

OpenAI SDK

更新 openai sdk 版本 openai>=1.0

pip install --upgrade 'openai>=1.0'

我们可以这样简单检验下自己库的版本

python -c "import openai; print(\"version =\",openai.__version__)"

版本结果

在这里插入图片描述

注意:输出可能是 version = 1.33.0,表示当前 python 实际使用了 openai 的 v1.33.0 的库

配置环境变量 .env

MOONSHOT_API_KEY=sk-4LSbG9qlUDlTkRjGJtbe7BS23SGvDjM42hAUBoF9cWSs····

构建 chat_api.py

import os

from openai import OpenAI

import dotenv
dotenv.load_dotenv(".env")

client = OpenAI(
    api_key=os.getenv("MOONSHOT_API_KEY"),
    base_url="https://api.moonshot.cn/v1"
)


def chat_answer(content):
    response = client.chat.completions.create(
        model="moonshot-v1-8k",
        messages=[
            {"role": "system", "content": "my name is edgehacker bot"},
            {"role": "user", "content": content}
        ]
    )
    return response.choices[0].message.content

print(chat_answer("hello"))

微信机器人搭建

微信机器人 wcferry 搭建教程:https://wrist.blog.csdn.net/article/details/138536720

基本原理

当微信收到消息时,抢在微信处理(显示到页面)前,先让工具处理,处理完之后再交还给原来的处理模块。需要发送消息时,模拟微信发送消息,组装好消息体,调用微信发送消息的模块。获取联系人,则是遍历一块特定的内存空间。通过好友验证,则是组装好验证信息,调用微信的验证模块。数据库相关功能,则是通过获取到数据库句柄,基于 sqlite3 的接口来执行。

from queue import Empty
from threading import Thread
from wcferry import Wcf, WxMsg
import chat_api


wcf = Wcf()
bot = wcf.get_user_info()


def processMsg(msg: WxMsg, wcf: Wcf):
    if msg.sender == "weixin":
        return
    if msg.from_group():
        content = msg.content.replace(f"@{bot['name']}", "").strip()
        result = chat_api.chat_answer(content)
        wcf.send_text(msg=result, receiver=msg.roomid)
    else:
        content = msg.content
        result = chat_api.chat_answer(content)
        wcf.send_text(msg=result, receiver=msg.sender)


def enableReceivingMsg():
    def innerWcFerryProcessMsg():
        while wcf.is_receiving_msg():
            try:
                msg = wcf.get_msg()
                if msg.sender != bot['wxid']:
                    t = Thread(target=processMsg, args=(msg, wcf))
                    t.start()
            except Empty:
                continue
            except Exception as e:
                print(f"ERROR: {e}")

    wcf.enable_receiving_msg()
    Thread(target=innerWcFerryProcessMsg, name="ListenMessageThread", daemon=True).start()


enableReceivingMsg()
wcf.keep_running()

启动运行:提示登陆微信

python bot.py

自动回复问题预览

在这里插入图片描述

微信版本过低解决方案

问题预览

在这里插入图片描述
解决方案

通过先按提示,升级到最新版本。登录微信。正常使用一下(发发消息、发发图片……)。然后在 WeChat Files 目录下,应该可以看到账号对应 wxid 的目录。这时候,再卸载掉微信但保留数据(可以把 wxid 目录复制一份出来),然后重新安装 3.9.2.23,应该就可以用了。

更新本地微信版本号:https://www.ez4leon.top/archives/skip-wechat-version-check

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/723526.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

04 Pytorch tensor

一:老版本的 variable 二:新版 tensor 曾经:求导相关 如今:数据相关 –dtype: 张量的数据类型,三大类,共9种。torch.FloatTensor, torch.cuda.FloatTensor –shape: 张量的形状。如:&#x…

k8s学习--Kruise Rollouts 基本使用

文章目录 Kruise Rollouts简介什么是 Kruise Rollouts?核心功能 应用环境一、OpenKruise部署1.安装helm客户端工具2. 通过 helm 安装 二、Kruise Rollouts 安装2. kubectl plugin安装 三、Kruise Rollouts 基本使用(多批次发布)1. 使用Deployment部署应用2.准备Roll…

[Cloud Networking] SPDY 协议

文章目录 1. 背景2. SPDY 之前3. SPDY 项目目标4. SPDY 功能特点4.1 SPDY基本功能4.2 SPDY高级功能 1. 背景 TCP是通用的、可靠的传输协议,提供保证交付、重复抑制、按顺序交付、流量控制、拥塞避免和其他传输特性。 HTTP是提供基本请求/响应语义的应用层协议。 不…

网格布局之重复轨道

网格布局之重复轨道 欢迎关注:xssy5431 小拾岁月 参考链接:https://mp.weixin.qq.com/s/FQboZRMhdOFWqVDZ5JScDg 点击查看 使用场景 在网页开发中,我们尝尝会遇到宫格布局,比如:3 * 3,4 * 4布局等等。 …

6月19日(周三)A股行情总结:A股震荡收跌,恒生科技指数大涨3%,10年期国债期货转涨续创新高

内容提要 车路云概念延续昨日涨势,华铭智能20CM 3连板。贵金属及PEEK材料概念全日走强;港股有色金属及能源股走强,紫金矿业涨超3%,中石油涨超3%。国债期货午后全线转涨,10年期主力合约涨0.05%报104.925元,…

7zip安装后压缩包图标显示空白解决办法

记录安装7zip软件后,出现了如下的图标是空白的问题: (虽然我最终解决了但是我不确定是哪一步起的作用,但是我也懒得再情景复现了。) 我的解决过程是: 在开始菜单栏搜索“7zip ”然后点击“打开。 然后点击 &#xf…

HTTP!!!

HTTP 一 : 请求报文1.2 : 首行1.3 :请求头(header)1.4 : 空行1.5 : 正文 body 二: 响应报文2.2 : 首行 三 : URL 一 : 请求报文 一个HTTP 请求报文, 分成四个部分 首行 GET https://cn.bing.com/?FORMZ9FD1 HTTP/1.1请求头(header)空行正文(body) 1.2 : 首行 首行又分为三个…

CobaltStrike后渗透进阶篇

0x01 网络钓鱼攻击 钓鱼攻击简介 钓鱼攻击主要通过生成的木马诱使受害者运行后上线,其中木马一般都伪装成正常的程序。与此同时配合钓鱼网站可帮助攻击者模拟真实网站诱骗受害者访问,达到获取账号密码、上线木马等目的。接下来主要介绍后门程序的生成及…

自动化测试接口测试前的【准备及思路】

1、什么是接口测试 客户端(前端)与服务端(后端)的关系,一般小编会理解为“服务端负责赚钱养家,客户端负责貌美如花”。客户端更注重的是功能呈现及用户体验,怎么将强大的功能精彩的界面呈现给不…

云上战场:ToDesk云电脑、青椒云、顺网云全面对决

前言 记得端午放假期间,我已经在旅游的路上了,老板突然发短信,让我给他画个图,我手上的战斗机已经是十年前的老古董了(平常一直用的公司电脑,也没想过要换),压根满足不了老板的任务要求,不得已&…

系统之家教你安装最新Win10 22H2版本!一看就会!

当前很多用户办公或学习都喜欢使用Win10系统,但很多新手用户不知道怎么操作才能安装上最新的Win10 22H2版本?接下来系统之家小编就给大家带来最简单的安装方法,帮助大家轻松快速给电脑安装上Win10系统最新版本22H2,体验22H2版本带…

Footer组件在home 、search 显示,在登录、注册隐藏

footer组件显示与隐藏 我们可以根据组件身上的$route获取当前路由的信息&#xff0c;通过路由路径判断Footer显示与隐藏。配置的路由的时候&#xff0c;可以给路由添加路由元信息【meta】&#xff0c;路由需要配置对象&#xff0c;它的key不能瞎写、胡写、乱写 <template&…

Python网络爬虫4-实战爬取pdf

1.需求背景 爬取松产品中心网站下的家电说明书。这里以冰箱为例&#xff1a;松下电器-冰箱网址 网站分析&#xff1a; 第一步&#xff1a; 点击一个具体的冰箱型号&#xff0c;点击了解更多&#xff0c;会打开此型号电器的详情页面。 第二步&#xff1a;在新打开的详情页面中…

N7745A Keysight 是德 多端口光功率计 简述

N7745A光功率计专为表征多端口光器件而设计&#xff0c;适用于多路复用器、PON分路器、波长选择开关&#xff08;WSS&#xff09;和ROADM等多端口器件的测试。它可以节省通道空间&#xff0c;通过LAN或USB连接进行并行编程&#xff0c;集成多种设备到单一设置&#xff0c;提高了…

用Vue3和ApexCharts打造交互式3D折线图

本文由ScriptEcho平台提供技术支持 项目地址&#xff1a;传送门 Vue.js 中使用 ApexCharts 构建交互式折线图 应用场景 ApexCharts 是一个功能强大的 JavaScript 库&#xff0c;用于创建交互式、可定制的图表。在 Vue.js 中&#xff0c;它可以通过 vue3-apexcharts 插件轻松…

JavaFX HTMLEditor

HTMLEditor控件是一个富文本编辑器&#xff0c;具有以下功能。 粗体斜体下划线删除线字体系列字体大小前景色背景颜色缩进项目符号列表编号列表对齐水平线复制文本片段粘贴文本片段 HTMLEditor类返回HTML字符串中的编辑内容。 创建HTML编辑器 import javafx.application.App…

docker安装使用

文章目录 docker产生的原因传统虚拟机容器化技术 docker组成安装docker镜像加速docker安装过程中遇到的问题以及解决办法Errors during downloading metadata for repository root_:Failed to set locale, defaulting to C.UTF-8 docker产生的原因 传统虚拟机 在不使用docker…

《Linux运维总结:基于ARM64架构CPU使用docker-compose一键离线部署alertmanager v0.27.0高可用集群》

总结&#xff1a;整理不易&#xff0c;如果对你有帮助&#xff0c;可否点赞关注一下&#xff1f; 更多详细内容请参考&#xff1a;《Linux运维篇&#xff1a;Linux系统运维指南》 一、部署背景 由于业务系统的特殊性&#xff0c;我们需要面对不同的客户部署业务系统&#xff0…

基于SpringBoot+Vue农产品管理与销售APP设计和实现(源码+LW+调试文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝1W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f; 感兴趣的可以先收藏起来&#xff0c;还…

刚刚发布!这4本期刊已剔除SCI收录,附完整目录下载

科睿唯安于6月19日更新了SCIE、SSCI、AHCI、ESCI四大数据库最新收录期刊目录。 2024年第一版——2024年1月24日更新 2024年第二版——2024年2月19日更新 2024年第三版——2024年3月18日更新 2024年第四版——2024年4月15日更新 2024年第五版——2024年5月20日更新 2024年…