偷窥大猫:聊天机器人监控

在最近的两篇文章中,我介绍了为代理 Cheshire Cat AI 开发的两个插件,这些插件用于一个作为计算机支持网站一级帮助台的 聊天机器人。

其中一个插件引入了守卫,用于过滤输入的问题和输出的回答 [5],另一个则通过 Uptime Kuma 软件监控服务状态 [6]。

系统通过向其提出一系列问题进行测试,这些问题取自实际通过电子邮件发送到帮助台的请求,我们已知其答案,并评估所获得回答的质量。我们很快意识到需要一种方法来跟踪聊天机器人的回答和行为,以便详细分析。

守卫是否完成了它们的任务?工具是否被调用?与 Uptime Kuma 的集成是否正常?回答来自哪些文档?

起初我们尝试了像 Langfuse Connector 和 Ragas Retriever Evaluator 这样的插件,但需要更具体的工具来验证两个自制插件是否按预期工作。于是这个监控系统诞生了。

系统组件

系统由三部分组成:

  • RAG Interaction Logger [2]:一个为 Stregatto 开发的插件,用于记录用户与聊天机器人之间的每次 交互(问题及其对应回答)。它是一个简单的观察者:不修改消息或回答,并在单独线程中写入数据库,因此数据库问题不会减慢或阻塞对话。
  • RAG Interaction Logger Monitor [1]:一个为 WordPress 开发的插件,作为系统的后台管理。它读取记录的数据,计算统计信息,突出异常,并允许检查单个交互。仅执行读取查询,仅对网站管理员开放。
  • 一个 MySQL 或 MariaDB 数据库,包含 ril_interactions 表,第一个插件写入数据,第二个插件读取数据。

系统功能

每次交互,记录器保存一行数据,包括:

  • 日期、持续时间、用户和回合的 结果:由 LLM 生成的回答、由插件直接提供的回答(不经过 LLM)或不完整的回合;
  • 问题、由 LLM 生成的回答 和 交付给用户的回答:如果不同,说明生成和交付之间发生了干预;
  • RAG Guardrails 的存在及守卫对问题和回答的 判定;
  • 从记忆中检索的文档数量、最高得分及 来源 的元数据(标题、URL、WordPress ID、类型),但不包含文本内容;
  • 调用的 工具,如果在设置中启用,还包括每个工具的输入和输出文本。

WordPress 后台添加了 Monitor RAG 菜单,包含以下部分:

  • 仪表盘:回合数、持续时间、指标(生成回答、直接回答、不完整回合、守卫阻止、召回、工具)、每个工具的使用情况及判定阻止次数。测试状态 面板总结了最后一次记录的交互、守卫覆盖率、阻止比例和工具调用比例。
  • 趋势:相同数据的时间变化,按天、周或月分组,取决于所选时间段。
  • 交互:分页显示的交互列表,带过滤和文本搜索功能。
  • 详情:单次交互的所有字段,比较生成回答和交付回答,并列出使用的来源。
  • 异常:预设视图,直接跳转到已过滤列表,例如不完整回合、无守卫回合、输入或输出阻止、无输出阻止却修改回答、无检索文档却生成回答、不完整或被阻止回合中调用工具等。
  • 设置:数据库连接参数。

界面支持意大利语和英语。

MySQL 数据库创建

两个组件通过数据库中名为 ril_interactions 的表交换数据,数据库为 MySQL(8.0 或 8.4)或 MariaDB(10.4 及以上),默认名为 rag-interaction-logger-db。Stregatto 插件中的 database.md 文件描述了数据库、表和用户的创建。表也可以由插件在首次连接时自动创建。

需要两个不同用户:

  • 一个用于记录器(例如 ril_logger),拥有数据库的创建、写入和删除权限;
  • 一个用于监控器(例如 ril_monitor),仅拥有表的读取权限(SELECT)。

配置两个插件时需记录的数据包括:主机、端口、数据库名、表名(默认:ril_interactions)、服务器是否要求 SSL(当然最好启用)、以及两个用户的 用户名 和 密码。

Cheshire Cat AI 插件安装

该插件为 Cheshire Cat AI 1.9.2 版本开发 [4],可在 Stregatto 插件库中找到:

  1. 在管理面板打开 插件 部分,搜索 RAG Interaction Logger;
  2. 安装并激活插件;
  3. 打开插件设置,输入 db_host、db_port、db_name、db_user 和 db_password(对应 ril_logger 用户),如果服务器使用 SSL,保持 db_require_ssl 启用,然后保存;
  4. 检查 Stregatto 日志,确认出现 RAG Interaction Logger: Database check passed 消息;
  5. 向聊天机器人提问,确认记录成功:
    SELECT * FROM ril_interactions ORDER BY id DESC LIMIT 1;

其他设置包括默认关闭的 log_tool_input 和 log_tool_output,用于保存与工具交换的文本,以及 retention_days,用于自动删除超过指定天数的记录(设为 0 则保留全部)。

WordPress 插件安装与配置

该插件要求 WordPress 7.1 或更高版本,PHP 8.3 及带有 sodium 扩展。插件未发布在官方插件目录,因此需从仓库生成安装包(需带有 zip 扩展的 PHP):

git clone https://github.com/ScuolaNormaleSuperiore/rag-interaction-logger-monitor.git
cd rag-interaction-logger-monitor
composer build

该命令会生成文件 dist/rag-interaction-logger-monitor-<version>.zip。接着:

  1. 在 WordPress 中进入 插件 → 添加新插件 → 上传插件,选择该 zip 文件,安装并激活;
  2. 打开 Monitor RAG → 设置,输入主机、端口、数据库名、表名和 ril_monitor 用户的凭据。

密码以加密形式保存,之后不再显示。也可以在 wp-config.php 中定义常量,优先于设置页面的值:

define( 'ICT_RAG_MONITOR_DB_HOST', 'db.example.org' );
define( 'ICT_RAG_MONITOR_DB_USER', 'ril_monitor' );
define( 'ICT_RAG_MONITOR_DB_PASSWORD', '<password>' );

如果数据库用户需要 SSL,还需在 wp-config.php 中定义 MYSQL_CLIENT_FLAGS,因为插件使用网站的连接设置。

总结

该监控系统不依赖于 RAG Guardrails 或 Uptime Kuma Connector,因此可用于任何基于 Cheshire Cat AI 1.9.2 的聊天机器人。如果存在守卫,其判定会被记录;否则相关字段为空。

在我们的案例中,该系统帮助回答了最初的问题:生成回答与交付回答的对比显示了守卫介入的时间和原因,调用的工具列表确认了是否使用了 Uptime Kuma 进行服务检查,检索的来源解释了回答的来源。

该系统设计用于测试和调试阶段,不适合生产环境。写入是异步且无重试机制的,因此 如果数据库不可达,部分交互可能丢失。此外,问题和回答可能包含个人数据,建议限制对表的访问并通过 retention_days 设置数据保留期限。

可以使用 Cheshire Cat AI 的 Docker 版本和安装在 Local 的 WordPress 本地环境轻松测试整个系统。

插件截图

来源与参考

  1. RAG Interaction Logger Monitor,WordPress 插件。
  2. RAG Interaction Logger,Cheshire Cat AI 插件。
  3. Cheshire Cat AI 官方网站。
  4. Cheshire Cat AI 1.9.2 版本仓库(插件开发对应版本)。
  5. RAG Guardrails for the big cat,本博客文章。
  6. Uptime Kuma Connector for the big cat,本博客文章。

*** Note: This article was automatically translated using a workflow built with n8n and OpenAI. The original post is in Italian.

1 day ago

Leave a Reply

Your email address will not be published. Required fields are marked *

评论审核已启用。您的评论可能需要一段时间后才能被显示。