Skip to main content

nonebot_plugin_with_ai_agents 是一个基于基本原理实现的 AI Agents(智能体),拥有联网搜索能力、页面内容提取并学习回答等功能

Project description

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:百科搜鲁迅,然后告诉我鲁迅为什么要打周树人

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

一些说明

  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 平台的地址更改。

示例

页面内容学习

页面提取

联网实时查询

百度百科查询

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_with_ai_agents-0.1.14.tar.gz (16.8 kB view hashes)

Uploaded Source

Built Distribution

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