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-8k 8 k 生成短文本
moonshot-v1-32k 32 k 生成长文本
moonshot-v1-128k 128 k 生成超长文本

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

设置 API Key 管理

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

OpenAI SDK

更新 openai sdk 版本 openai>=1.0

cpp 复制代码
pip install --upgrade 'openai>=1.0'

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

cpp 复制代码
python -c "import openai; print(\"version =\",openai.__version__)"

版本结果

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

配置环境变量 .env

cpp 复制代码
MOONSHOT_API_KEY=sk-4LSbG9qlUDlTkRjGJtbe7BS23SGvDjM42hAUBoF9cWSs····

构建 chat_api.py

cpp 复制代码
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 的接口来执行。

python 复制代码
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

相关推荐
Qspace丨轻空间几秒前
气膜场馆:推动体育文化旅游创新发展的关键力量—轻空间
大数据·人工智能·安全·生活·娱乐
没有不重的名么2 分钟前
门控循环单元GRU
人工智能·深度学习·gru
测试19985 分钟前
2024软件测试面试热点问题
自动化测试·软件测试·python·测试工具·面试·职场和发展·压力测试
love_and_hope5 分钟前
Pytorch学习--神经网络--搭建小实战(手撕CIFAR 10 model structure)和 Sequential 的使用
人工智能·pytorch·python·深度学习·学习
2403_8757368721 分钟前
道品科技智慧农业中的自动气象检测站
网络·人工智能·智慧城市
海阔天空_201334 分钟前
Python pyautogui库:自动化操作的强大工具
运维·开发语言·python·青少年编程·自动化
零意@42 分钟前
ubuntu切换不同版本的python
windows·python·ubuntu
学术头条1 小时前
AI 的「phone use」竟是这样练成的,清华、智谱团队发布 AutoGLM 技术报告
人工智能·科技·深度学习·语言模型
准橙考典1 小时前
怎么能更好的通过驾考呢?
人工智能·笔记·自动驾驶·汽车·学习方法
ai_xiaogui1 小时前
AIStarter教程:快速学会卸载AI项目【AI项目管理平台】
人工智能·ai作画·语音识别·ai写作·ai软件