nonebot_plugin_with_ai_agents 是一个基于基本原理实现的 AI Agents(智能体),拥有联网搜索能力、页面内容提取并学习回答等功能
Project description
With-AI-Agents
_✨ NoneBot AI 智能体插件,有页面内容学习、页面内容提取、联网实时查询回答、天气查询、命令执行等功能 ✨_
这个文档有点长,建议点开↗右上角的 亖 查看文档目录,会有你想找的
快速安装
第一步:右上角 ↗ 点个不要钱的 star 吧,这是不断维护更新的动力。 这个项目同时提供了不依赖于 nonebot 的普通版本,点击跳转
nb-cli
nb plugin install nonebot-plugin-with-ai-agents
pip
pip install nonebot-plugin-with-ai-agents
git
cd /your-nonebot-project-home/plugins/
git clone https://github.com/yejue/nonebot-plugin-with-ai-agents.git
功能描述
AI Agents 功能包括不限于以下功能:
- 联网搜索:即当 AI 认为当前应该使用网络搜索时,进行搜索后回答
- 页面提取:在问题中自动提取 URL,将 URL 的内容提取学习后进行回答
- 天气预报:暂时是没有了,等下个版本更新 已移除
- 新闻内容:目前 AI 可以根据需要对某个事件来搜索到大概信息,例如:“了解下珠海暴雨”,再进行回答,之后会做成专门的新闻模块。
- 命令执行:AI 从接收到的信息语义中解析出要执行的指令,执行完成将结果转达。执行命令使用的是 subprocess 模块。 注意:由于未做任何的权限控制,这个功能有非常高的风险。 已移除
- 百度百科搜索能力
使用
@机器人+任意文本或者私聊机器人+任意文本。
例子(图例请查看文档底部示例):
1:搜一下最近珠海的天气。
2:提取页面信息 https://xxxxxx.com
3:学习这个页面的信息再回答我 https://xxxx.com
4:百科搜鲁迅,然后告诉我鲁迅为什么要打周树人
TODOs
”!!“ 为近期要做的事情 ”~~“ 为可能会鸽的更新,慢慢来
待解决问题:
-
!!命令执行安全问题,方案:对特定 ID 可用,并提供可关停配置。 - 新闻查询增强,方案:从各类新闻网获取聚合数据。
- Prompt 调整,方案:优化和精简 Prompt。
-
主动清理聊天历史指令,清空AI记录
-
~~知识库,采用 Embeddings + PGVector 完成数据向量化和存储搜索。对于一个插件来说,体量可能过大。不希望增加插件体量 - 百科内容搜索
-
聊天历史过长的问题。方案:策略性选取历史。 -
聊天历史存入优化,方案:压缩存入策略
更新历史
0.1.14
此版本主要为功能增强更新
- 新增百度百科搜索能力,详见文档使用
- 新增了自定义 AI 人格的功能,详见配置项
- 新增了模型 API URL 的配置项,详见文档配置表
- 抽象了智能体类型,以及将许多的功能封装成函数
0.1.13
此版本主要为配置项更新
- 新增配置项 WITH_AI_AGENTS__MESSAGE_START,详见本文配置项
- 新增配置项 WITH_AI_AGENTS__PRIORITY,详见本文配置项
0.1.12
此版本主要为功能容错能力提升,以及优化打印:
BaseModel.model_config
属性:在有这个属性时才进行设置,否则不使用,以提高版本容错- 大部分
print
改用nonebot.log.logge
打印
0.1.10
此版本为修复和功能增强更新
- 联网搜索优化:使用宽泛化的搜索提高搜索成功率和获得更好的搜索答案
- 联网结果提取优化:修复 (Invalid \escape)、增加 V2 版本结果提取
- 回复优化:提高最终回复时的联想能力
- 减少打印:减少插件内打印的内容
一些说明
- 本 plugin 采用 Agents 基本原理实现。
- 本 plugin 中的联网能力基于百度、bing(暂时忽略不计)、或者 Tavily,推荐只使用百度。Tavily 确实提供了良好的聚合搜索,但是有可能会出现“50万”内容。
- 本 plugin 中可以配置接入并不限于这些大模型,ChatGLM 系列、通义千问系列、ChatGPT 系列、以及魔塔社区 Dashscope 提供的所有模型(百川、Llama3等)。插件开发时使用的是 dashscope 的 qwen-turbo 模型,在调整了 temperature 之后效果还可以。预估效果应该是 ChatGPT 系列 > ChatGLM ≈ 通义千问 >> 百川、Llama3。
- 本 plugin 的优先级为 999,因为是任意与机器人相关消息都会响应,所以应尽量在别的插件之后。
可用模型
以下是本插件可以使用的平台和模型配置项,包含但不限于。
openai 的话效果肯定是拔尖的,但是价格也是拔尖的。对于国内大模型来说,GLM 系列算是各方面都比较好的,这个模型在申请之后可以免费使用一个月。本插件在开发时使用的是 qwen-turbo ,这个是阿里云的通义千问系列大模型,在调整了 temperature 之后表现还不错,申请之后可以在一定额度内使用半年。
平台(platform) | 模型(model_name) | 相关文档 |
---|---|---|
openai | gpt-3.5-turbo-0125(推荐,毕竟便宜一点)、gpt-3.5-turbo、gpt-3.5-turbo-16k、gpt-4-turbo、gpt-4-turbo-2024-04-09、gpt-4-32k | openai |
dashscope | qwen-turbo(推荐,开发时使用)、qwen-plus、qwen-max-longcontext、llama3-8b-instruct(不尽人意)、llama3-70b-instruct(不尽人意)、baichuan-7b-v1(不尽人意) | dashscope |
glm | glm-3-turbo(推荐)、glm-4 | glm |
配置项
在 nonebot2 项目的 .env
| .env.prod
| .env.dev
中添加下表中的配置项。
配置项 | 必填 | 默认值 | 说明 |
---|---|---|---|
WITH_AI_AGENTS__API_KEY | 是 | 空字符串 | 你的大模型 API Key |
WITH_AI_AGENTS__PLATFORM | 是 | 空字符串 | 你的 AI 模型平台,支持 ChatGPT 系列,ChatGLM 系列,Llama 系列,百川,通义千问 |
WITH_AI_AGENTS__TAVILY_API_KEY | 否 | 空字符串 | (打算弃用)搜索引擎的 Key,不填使用百度搜索,获取地址:Tavily AI |
WITH_AI_AGENTS__MODEL_NAME | 否 | 空字符串 | 你的 AI 模型名称,不填将根据平台使用默认模型 |
WITH_AI_AGENTS__MESSAGE_START | 否 | 空字符串 | 插件匹配消息前缀,非必填,如果不填则默认空,匹配所有与机器人有关的信息 |
WITH_AI_AGENTS__PRIORITY | 否 | 999 | 插件响应优先级,非必填,如果不填则默认为 999 |
WITH_AI_AGENTS__CUSTOM_SOUL | 否 | kurisu 人格 | 自定义 AI 人格,非必填,默认使用 "Kurisu 人格" |
WITH_AI_AGENTS__API_URL | 否 | default_url | 大模型访问的 API 接口地址,非必填,默认使用平台默认的 URL。主要用于 OPENAI 平台的地址更改。 |
示例
页面内容学习
页面提取
联网实时查询
百度百科查询
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
Hashes for nonebot_plugin_with_ai_agents-0.1.14a1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 81d4d45f9f16a850dc7273999252bcdd15b77f106c56c963a173c3228b30ab98 |
|
MD5 | 411bdae9bd5e6ba67807b3adcef60b56 |
|
BLAKE2b-256 | 6615219dab6d43a01dad7e26ec6c3edebf598c7c373486c3764a7ba3c806da1d |
Hashes for nonebot_plugin_with_ai_agents-0.1.14a1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d5790973346bc79e5fecde3df0c5b805bae38e92c90739e42bd1483623750e76 |
|
MD5 | c7ede0b374db139ab526ed838e948949 |
|
BLAKE2b-256 | e11383b4eae96f24a0e7ca7ff21133a551591ed6fbba602f8325173678d668f6 |