Skip to main content

概述

PAI 提供 24 个内建工具,涵盖时间、视觉、记账、对话、记忆、日程、用户档案等能力。同时通过 MCP(Model Context Protocol)协议接入外部工具,实现地图天气等扩展能力。 工具按节点作用域分配,每个管理节点只能调用被授权的工具子集,确保职责隔离。

工具分类

时间与通用工具

工具名功能
now_time获取当前时间
fetch_url抓取 URL 内容

视觉工具

工具名功能
analyze_image通用图片分析(OCR、内容理解)
analyze_receipt小票/支付截图结构化解析

记账工具

工具名功能
ledger_text2sql自然语言转 SQL 查询
ledger_insert新增记账条目
ledger_update更新记账条目
ledger_delete删除记账条目
ledger_get_latest获取最近一条记录
ledger_list_recent获取最近记录列表
ledger_list按条件查询记录列表

对话工具

工具名功能
conversation_current获取当前对话信息
conversation_list查询历史对话列表

记忆工具

工具名功能
memory_list查询用户长期记忆
memory_save创建或覆盖记忆
memory_append追加内容到已有记忆
memory_delete删除指定记忆

日程工具

工具名功能
schedule_insert创建日程提醒
schedule_update更新日程
schedule_delete删除日程
schedule_get_latest获取最近日程
schedule_list_recent获取最近日程列表
schedule_list按条件查询日程

用户档案工具

工具名功能
update_user_profile更新用户档案
query_user_profile查询用户档案

MCP 外部工具

工具名功能
mcp_list_tools列出可用的 MCP 工具
mcp_call_tool调用指定 MCP 工具
maps_weather地图天气查询(MCP 提供)

节点作用域

每个管理节点被分配特定的工具子集,通过 toolsets.py 统一管理:
# 通用 + 视觉 + MCP + 对话(含记忆)
SHARED + VISION + MCP + CONVERSATION
# 包含: now_time, fetch_url, analyze_image,
#       mcp_list_tools, mcp_call_tool, maps_weather,
#       conversation_current, conversation_list,
#       memory_list, memory_save, memory_append, memory_delete
CONVERSATION_TOOL_NAMES 集合同时包含对话工具和记忆工具,因此 chat_manager 也具备记忆操作能力。三个管理节点都能使用记忆工具。

工具执行流程

工具调用遵循统一的执行路径:
1

LLM 函数调用

LLM 在对话推理中决定调用某工具,输出 function_call 消息(工具名 + 参数 JSON)
2

LangChain 工具分发

LangChain 框架接收函数调用,匹配到对应的 BaseTool 实例
3

能力执行

通过 execute_capability_with_usage 执行实际逻辑,区分 builtin(内建)和 mcp(外部)两种来源
4

结果返回

执行结果序列化为字符串返回给 LLM,包含 ok 状态、output 数据、latency_ms 延迟等信息
用户消息 → LLM 推理 → function_call
        → LangChain BaseTool
        → execute_capability_with_usage(source, name, args)
        → 结果 JSON → LLM 继续推理 → 最终回复

MCP 集成

PAI 通过 MCP 协议接入外部工具服务器:
  • fetch_url:通过 MCP 抓取网页内容
  • maps_weather:地图天气查询服务
工具来源通过 _resolve_tool_source 函数判断:maps_weather 路由到 MCP,其余默认为 builtin。

管理功能

工具开关

管理员可通过 Admin API 控制单个工具的启用/禁用状态,实现运行时工具管理。

使用日志

每次工具调用都会记录审计信息:
字段说明
source工具来源(builtin / mcp)
name工具名称
args调用参数
ok是否成功
latency_ms执行耗时(毫秒)
output输出内容
error错误信息(如有)
通过审计钩子(audit_hook)回调记录,可用于后续分析工具使用频率、延迟分布和错误率。