在最近的两篇文章中,我介绍了为代理 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 插件库中找到:
- 在管理面板打开 插件 部分,搜索 RAG Interaction Logger;
- 安装并激活插件;
- 打开插件设置,输入
db_host、db_port、db_name、db_user和db_password(对应 ril_logger 用户),如果服务器使用 SSL,保持db_require_ssl启用,然后保存; - 检查 Stregatto 日志,确认出现
RAG Interaction Logger: Database check passed消息; - 向聊天机器人提问,确认记录成功:
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。接着:
- 在 WordPress 中进入 插件 → 添加新插件 → 上传插件,选择该 zip 文件,安装并激活;
- 打开 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 本地环境轻松测试整个系统。
插件截图
来源与参考
- RAG Interaction Logger Monitor,WordPress 插件。
- RAG Interaction Logger,Cheshire Cat AI 插件。
- Cheshire Cat AI 官方网站。
- Cheshire Cat AI 1.9.2 版本仓库(插件开发对应版本)。
- RAG Guardrails for the big cat,本博客文章。
- 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.














