Nonebot2 plugin that calls the official API of the iflyrec SparkDesk for all model versions, defaulting to the current latest
Project description
📖 介绍
基于 Nonebot2 平台/科大讯飞星火大模型官方 API 的 AI 聊天机器人插件
适用于所有模型版本(默认当前最新 v4.0
),同时支持自定义人物预设、会话管理,兼具 AI 绘图、AI 生成 PPT 等功能
开发环境:Python3.11.8 on Conda, Windows 11
[!important]
为了方便的直接阅读存储的文件,
v2.0.5
版本起,信息编码方式更改为UTF-8
。从旧版本更新到v2.0.5
以上版本时,请务必删除 BOT 项目文件夹下的SparkApi
文件夹,即清除所有缓存文件,否则可能产生错误。由此带来不便敬请谅解!QwQ项目正在准备重写更新到3.x,期望集成绝大部分星火大模型的能力
📦 项目地址
- Github: https://github.com/CCLMSY/nonebot-plugin-sparkapi
- Pypi: https://pypi.org/project/nonebot-plugin-sparkapi/
- NoneBot: https://registry.nonebot.dev/plugin/nonebot-plugin-sparkapi:nonebot_plugin_sparkapi
- 作者主页: https://cclmsy.cc
- 觉得好用的话,请给个 Star⭐️ 谢谢喵~
💬 功能
- 支持 AI 对话(已适配星火 4.0API)
- 支持上下文关联
- 支持自定义预设、预设管理
- 支持会话存储和加载、会话管理
- 支持预设和历史记录持久化(基于 json)
- 完善配置项(有其他需求请发 issue)
- 支持 AI 绘图(Image Generation)
- 支持 AI 生成 PPT(PPT Generation)
- 文档问答(Document QA)
- 用户权限与功能区分(超级用户、普通用户)
💿 安装
使用 nb-cli 安装
在 nonebot2 项目的根目录下打开命令行, 输入以下指令即可安装nb plugin install nonebot-plugin-sparkapi
使用包管理器安装
在 nonebot2 项目的插件目录下, 打开命令行, 根据你使用的包管理器, 输入相应的安装命令pip
pip install nonebot-plugin-sparkapi
pdm
pdm add nonebot-plugin-sparkapi
poetry
poetry add nonebot-plugin-sparkapi
conda
conda install nonebot-plugin-sparkapi
打开 nonebot2 项目根目录下的 pyproject.toml
文件, 在 [tool.nonebot]
部分追加写入
plugins = ["nonebot_plugin_sparkapi"]
⚙️ 配置项
在 nonebot2 项目的.env
文件中添加下列配置项中的必填配置(SPARKAPI_APP_ID, SPARKAPI_API_SECRET, SPARKAPI_API_KEY)
服务接口认证信息 app_id, api_secret, api_key 请前往 讯飞开放平台控制台 获取
AI 绘图、AI 生成 PPT 功能的 API 信息在同一应用下与对话 API 信息相同,开启相应功能前需要在讯飞开放平台申请相应的服务用量
配置项 | 必填 | 默认值 | 说明 |
---|---|---|---|
SPARKAPI_APP_ID | 是 | / | APPID |
SPARKAPI_API_SECRET | 是 | / | APISecret |
SPARKAPI_API_KEY | 是 | / | APIKey |
SPARKAPI_MODEL_VERSION | 否 | "" |
星火大模型的版本,默认为当前最新。 可选值:"default", "v4.0", "v3.5", "v3.0", "v2.0", "v1.5" |
SPARKAPI_MODEL_TOP_K | 否 | 4 |
平衡生成文本的质量和多样性。 较小的 k 值会减少随机性,使得输出更加稳定; 而较大的 k 值会增加随机性,产生更多新颖的输出。 取值范围[1, 6] |
SPARKAPI_MODEL_TEMPERATURE | 否 | 0.5 |
控制结果随机性,取值越高随机性越强,即相同的问题得到的不同答案的可能性越高。 取值范围 (0,1] |
SPARKAPI_MODEL_MAXLENGTH | 否 | 8000 |
单次上下文最大 token 长度,v2.0 以上建议取值范围:[4000,8000]。 详细说明见下文 |
SPARKAPI_PRIORITY | 否 | 80 |
本插件响应事件的优先级,建议设置较大的值。可选值:1~97。 详细说明见下文 |
SPARKAPI_COMMAND_CHAT | 否 | "" |
机器人对话指令,默认为""可直接对话 |
SPARKAPI_FL_NOTICE | 否 | True |
收到对话请求时是否提示“已收到请求” |
SPARKAPI_FL_PRIVATE_CHAT | 否 | True |
是否允许私聊使用 |
SPARKAPI_FL_GROUP_PUBLIC | 否 | False |
群聊启用公共会话 True:所有人共享同一会话 False:每个人的会话各自独立 |
SPARKAPI_FL_INTERFLOW | 否 | False |
对于同一用户,群聊与私聊数据互通(公共会话启用时,群聊仍独立) |
SPARKAPI_FL_GROUP_AT | 否 | True |
群聊回复消息时是否需要@提问者 |
SPARKAPI_FL_IMGGEN | 否 | False |
是否启用 AI 绘图功能 |
SPARKAPI_FL_PPTGEN | 否 | False |
是否启用 AI 生成 PPT 功能 |
SPARKAPI_IG_SIZE | 否 | [1280,720] |
AI 绘图的图片尺寸,[宽,高]。 可选值和 API 消耗见下文 |
SPARKAPI_BOT_NAME | 否 | "" |
机器人的名字 |
SPARKAPI_MODEL_MAXKLENGTH
- 单次上下文最大 token 长度
- 该值越大,对话历史记录保留越长,单次请求消耗 token 的最大值越大
- 1token≈1.5 个中文字 ≈1 个英文单词。保守起见,在本插件中 1token 取 1.25 个字符
- v1.5 建议取值:4000(API 限制不能超过 4000token)
- v2.0 以上建议取值范围:[4000,8000](API 限制不能超过 8000token)
- QQ 单条消息上限 4500 个字符(计 3600token),消息超过最大长度可能导致响应不正确
SPARKAPI_PRIORITY
- 响应事件的优先级,该值越小,事件越先被本插件响应。可选值:1~97
- 本插件中事件的优先级顺序:私聊阻断(=priority)< 功能(=priority+1)< 对话(=priority+2)
- 若触发本插件事件,所有插件中优先级大于此值的事件都将被阻断,因此本插件建议设置较大的值。
SPARKAPI_IG_SIZE
分辨率(可选值) | 消耗图点数 |
---|---|
[512,512] | 6 |
[640,360] | 6 |
[640,480] | 6 |
[640,640] | 7 |
[680,512] | 7 |
[512,680] | 7 |
[768,768] | 8 |
[720,1280] | 12 |
[1280,720] | 12 |
[1024,1024] | 14 |
命令相关:sparkapi_commands、sparkapi_commands_info
-
如有需要,以下命令相关配置项请在
./.venv/Lib/nonebot_plugin_sparkapi/config.py
修改:- sparkapi_commands:指令表
- sparkapi_commands_info:指令表说明(用于生成帮助信息)
-
在
config.py
文件中,已经用缩进表示了命令之间的从属关系。一级命令为主命令,二级命令为子命令。 -
命令格式由 NoneBot 机器人项目下的配置文件
.env
中的COMMAND_START
和COMMAND_SEP
决定(请参考 NoneBot 文档)。默认情况下,COMMAND_START
为["/"]
,COMMAND_SEP
为["."]
。 -
一级命令帮助信息会出现在
help
中,二级命令帮助信息在单独使用一级命令时出现。 -
以二级命令
preset_create
为例,默认配置下:- 预设管理命令
preset
、二级命令create
。 - 完整命令格式为
/preset.create
。 - 这个命令不会出现在
/help
的帮助信息中,但会在发送/preset
时告知用户命令和用法。
- 预设管理命令
🎉 使用
指令表(默认)
以下所有指令均可在 config.py 中修改,且无需重写菜单/指令生成函数
指令(默认配置下) | 说明 |
---|---|
直接发送对话内容 SPARKAPI_COMMAND_CHAT(若不为空)+对话内容 |
与机器人进行对话 |
/help | 显示帮助信息 |
/preset | 显示人物预设菜单和预设相关命令项 |
/preset.create | 创建自定义人物预设 |
/preset.set | 选择人物预设并切换 |
/preset.show | 显示自定义人物预设详情 |
/preset.delete | 删除自定义人物预设 |
/session | 显示保存的对话记录和会话管理相关命令项 |
/session.save | 保存当前对话上下文 |
/session.load | 加载保存的对话上下文 |
/session.show | 显示保存的对话记录 |
/session.delete | 删除保存的对话记录 |
/clear | 清除当前对话上下文 |
/image | AI 绘图 |
/ppt | AI 生成 PPT |
自带人物预设
- 智能助手(默认)
- 李白
效果图
📝 更新日志
- 2024.8.21 v2.0.8
- 感谢开发者wyf7685为本项目整体重写,提供优化功能实现、多平台适配等帮助!
- 修复了FL_IMGGEN和FL_PPTGEN配置项无效的问题
- 新增对 Spark Pro-128K 模型的支持
- 2024.7.12 v2.0.5
- 信息存储改为 UTF-8 编码
- 2024.7.11 v2.0.2
- 尝试通过不验证 SSL 证书规避 SSL 证书验证问题
- 2024.7.10 v2.0.0
- 项目重写
- 支持会话存储和加载、会话管理
- 支持预设和历史记录持久化(基于 json)
- 优化命令、功能的实现方式
- 调整了配置项和指令表
- 2024.6.30 v1.5.0
- 适配星火 4.0API
- 2024.6.25 v1.4.5
使用默认的 SSL 证书
- 2024.6.9 v1.4.4
- 优化项目结构
- 优化部分功能的实现方式
- 2024.5.30 v1.4.1
- 新增 AI 生成 PPT 功能
- 2024.5.29 v1.4.0
- 项目重构
- 新增 AI 绘图功能
- 2024.5.17 v1.2.0
- 简化了初始命令
- 模块结构优化
- 2024.5.16 v1.1.0
存储和加载单次会话(基于 pickle)- 改用异步方式请求 API
- 2024.5.15 v1.0.0
- 支持 AI 对话
- 支持上下文关联
- 支持自定义预设、预设管理
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file nonebot_plugin_sparkapi-2.0.9.tar.gz
.
File metadata
- Download URL: nonebot_plugin_sparkapi-2.0.9.tar.gz
- Upload date:
- Size: 24.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7d3defde1707af057efe6a586fb4fda287f0a716c218242f372b679a18cb0e64 |
|
MD5 | a6107eb5d7c71a16f7617ecd506b4a98 |
|
BLAKE2b-256 | 3346d0ac7a1f28ed38678b3bb813c905c1f0f8978db68e9d6d844ea503263229 |
File details
Details for the file nonebot_plugin_sparkapi-2.0.9-py3-none-any.whl
.
File metadata
- Download URL: nonebot_plugin_sparkapi-2.0.9-py3-none-any.whl
- Upload date:
- Size: 34.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0c8e4426abe610c7bdfd8734257f47ff71e6b72227d3333686da961fae5e8e70 |
|
MD5 | 12196749072a7b0ac54b478580755cbf |
|
BLAKE2b-256 | 2f05b55a9f13ade5ede18427b0efc2df18f8d38cc13ccf94137d03ec6d962f0a |