当前位置: 首页 > news >正文

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 osfrom openai import OpenAIimport 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.contentprint(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_apiwcf = Wcf()
bot = wcf.get_user_info()def processMsg(msg: WxMsg, wcf: Wcf):if msg.sender == "weixin":returnif 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.contentresult = 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:continueexcept 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

http://www.lryc.cn/news/376618.html

相关文章:

  • 关于接口多态,何时使用接口名创建对象?何时使用子类创建对象?
  • 短视频热恋进行时:成都柏煜文化传媒有限公司
  • springBoot多数据源使用、配置
  • 打破安全设备孤岛,多源威胁检测与响应(XDR)如何构建一体化安全防线
  • Android SurfaceFlinger——概述(一)
  • 工业 web4.0,UI 风格令人赞叹
  • HarmonyOS 角落里的知识 —— 状态管理
  • TDengine数据迁移
  • 使用ZIP包安装MySQL及配置教程
  • Java基础入门day64
  • 高德地图轨迹回放/轨迹播放
  • 像素、像素密度、位图和矢量图
  • 第二证券股市资讯:昨夜!全球新“股王”诞生
  • 自动水位雨量站:用于水库防汛预警
  • 苍穹外卖---新增员工(P16-P20)
  • Windows10 利用QT搭建SOEM开发环境
  • SpringBoot整合H2数据库并将其打包成jar包、转换成exe文件二(补充)
  • 【kyuubi k8s】kyuubi发布k8s执行spark sql
  • 机械装配革新者:3D工艺大师智慧赋能,装配无忧
  • 【C++】const和函数参数
  • 2024zjb
  • 线程池的艺术:深度解析Java多线程并发性能的优化之道
  • Ubuntu server 24 (Linux) 新增磁盘 lvm 动态扩容磁盘空间
  • Linux C编译器从零开发三
  • 02-ES6新语法
  • Vue3中VueRouter基本用法及与Vue2中路由使用差异解析
  • 10.Docker Compose容器编排
  • 【算法——动态规划(从dfs回溯开始推导dp)】
  • 不是所有洗碗机都能空气除菌 友嘉灵晶空气除菌洗碗机评测
  • 【Linux】如何创建yum 组(yum groups)