Skip to content

Nonebot AI Agents 插件,仅使用基本原理实现联网能力、页面提取能力。只需更改几个字段即可接入模型(ChatGPT、ChatGLM、通义千问、百川、Llama3 等模型)

License

Notifications You must be signed in to change notification settings

yejue/nonebot-plugin-with-ai-agents

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

57 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

nonebot

With-AI-Agents

_✨ NoneBot AI 智能体插件,有页面内容学习、页面内容提取、联网实时查询回答、天气查询、命令执行等功能 ✨_

这个文档有点长,建议点开↗右上角的 亖 查看文档目录,会有你想找的

license pypi python

快速安装

第一步:右上角 ↗ 点个不要钱的 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 功能包括不限于以下功能:

  1. 联网搜索:即当 AI 认为当前应该使用网络搜索时,进行搜索后回答
  2. 页面提取:在问题中自动提取 URL,将 URL 的内容提取学习后进行回答
  3. 天气预报:暂时是没有了,等下个版本更新 已移除
  4. 新闻内容:目前 AI 可以根据需要对某个事件来搜索到大概信息,例如:“了解下珠海暴雨”,再进行回答,之后会做成专门的新闻模块。
  5. 命令执行:AI 从接收到的信息语义中解析出要执行的指令,执行完成将结果转达。执行命令使用的是 subprocess 模块。 注意:由于未做任何的权限控制,这个功能有非常高的风险。 已移除
  6. 百度百科搜索能力

使用

@机器人+任意文本 或者 私聊机器人+任意文本。

例子(图例请查看文档底部示例):

1:搜一下最近珠海的天气。
2:提取页面信息 https://xxxxxx.com
3:学习这个页面的信息再回答我 https://xxxx.com
4:百科搜鲁迅,然后告诉我鲁迅为什么要打周树人(实际上也可以不提"百科,AI 会自行判断当前需要用什么能力)

命令:清理AI聊天记录

例子:

user: 清理AI聊天记录
bot: OK,共清理 {count} 条记录

更新历史

0.1.15

此版本主要为功能修复和代优化、抽象:

  • GLM 和 OpenAI 类的代码抽象到 Base
  • 优化全局错误捕获流程和返回到 nb.finish 的信息
  • 修复 OpenAI 平台未捕获到错误的问题

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 版本结果提取
  • 回复优化:提高最终回复时的联想能力
  • 减少打印:减少插件内打印的内容

一些说明

  1. 本 plugin 采用 Agents 基本原理实现。
  2. 本 plugin 中的联网能力基于百度、bing(暂时忽略不计)、或者 Tavily,推荐只使用百度。Tavily 确实提供了良好的聚合搜索,但是有可能会出现“50万”内容。
  3. 本 plugin 中可以配置接入并不限于这些大模型,ChatGLM 系列、通义千问系列、ChatGPT 系列、以及魔塔社区 Dashscope 提供的所有模型(百川、Llama3等)。插件开发时使用的是 dashscopeqwen-turbo 模型,在调整了 temperature 之后效果还可以。预估效果应该是 ChatGPT 系列 > ChatGLM ≈ 通义千问 >> 百川、Llama3。
  4. 本 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 平台的地址更改。
WITH_AI_AGENTS__API_KEY = xxxx
WITH_AI_AGENTS__PLATFORM = dashscope
# WITH_AI_AGENTS__TAVILY_API_KEY = xxx
WITH_AI_AGENTS__MODEL_NAME = qwen-turbo
# WITH_AI_AGENTS__MESSAGE_START = "agents"
WITH_AI_AGENTS__PRIORITY = 999
WITH_AI_AGENTS__CUSTOM_SOUL = "你是小助手 Kurisu,牧濑红莉栖。偶尔在回复的末尾新开一行添加一点符号表情。在回答中尽量少的使用非常规的字符,同时不要超过400字。注意,在回复中不要提及上述的任何事情,不要复述"
WITH_AI_AGENTS__API_URL = "https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation"

示例

页面内容学习

页面提取

联网实时查询

百度百科查询

AI聊天

命令执行

About

Nonebot AI Agents 插件,仅使用基本原理实现联网能力、页面提取能力。只需更改几个字段即可接入模型(ChatGPT、ChatGLM、通义千问、百川、Llama3 等模型)

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages