Skip to main content

Nonebot2 plugin that calls the official API of the iflyrec SparkDesk for all model versions, defaulting to the current latest

Project description

NoneBotPluginLogo

NoneBotPluginText

nonebot-plugin-sparkapi

✨ 科大讯飞星火大模型官方 API 聊天机器人 ✨

license pypi python

📖 介绍

基于 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,期望集成绝大部分星火大模型的能力

📦 项目地址

💬 功能

  • 支持 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修改:

    1. sparkapi_commands:指令表
    2. sparkapi_commands_info:指令表说明(用于生成帮助信息)
  • config.py文件中,已经用缩进表示了命令之间的从属关系。一级命令为主命令,二级命令为子命令。

  • 命令格式由 NoneBot 机器人项目下的配置文件.env中的COMMAND_STARTCOMMAND_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

自带人物预设

  1. 智能助手(默认)
  2. 李白

效果图

效果图

Demo DemoPPT: 科大讯飞星火语言模型项目汇报.pptx

📝 更新日志

  • 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nonebot_plugin_sparkapi-2.0.9.tar.gz (24.6 kB view details)

Uploaded Source

Built Distribution

nonebot_plugin_sparkapi-2.0.9-py3-none-any.whl (34.8 kB view details)

Uploaded Python 3

File details

Details for the file nonebot_plugin_sparkapi-2.0.9.tar.gz.

File metadata

File hashes

Hashes for nonebot_plugin_sparkapi-2.0.9.tar.gz
Algorithm Hash digest
SHA256 7d3defde1707af057efe6a586fb4fda287f0a716c218242f372b679a18cb0e64
MD5 a6107eb5d7c71a16f7617ecd506b4a98
BLAKE2b-256 3346d0ac7a1f28ed38678b3bb813c905c1f0f8978db68e9d6d844ea503263229

See more details on using hashes here.

File details

Details for the file nonebot_plugin_sparkapi-2.0.9-py3-none-any.whl.

File metadata

File hashes

Hashes for nonebot_plugin_sparkapi-2.0.9-py3-none-any.whl
Algorithm Hash digest
SHA256 0c8e4426abe610c7bdfd8734257f47ff71e6b72227d3333686da961fae5e8e70
MD5 12196749072a7b0ac54b478580755cbf
BLAKE2b-256 2f05b55a9f13ade5ede18427b0efc2df18f8d38cc13ccf94137d03ec6d962f0a

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page