Skip to content

工具API

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构概览
  5. 详细组件分析
  6. API端点文档
  7. 工具元数据结构
  8. MCP协议集成
  9. 工具函数编写规范
  10. 自定义工具扩展
  11. 故障排除指南
  12. 结论

简介

AgentChat工具系统提供了一套完整的API接口,用于管理和配置Agent可用的工具集。该系统支持两种主要的工具类型:传统Python工具函数和基于Model Context Protocol (MCP) 的外部服务器工具。通过统一的API接口,开发者可以查询可用工具列表、创建自定义工具、配置工具参数,并将工具与Agent进行集成。

工具系统的核心设计理念是提供灵活的扩展机制,既支持内置的Python工具函数,也支持通过MCP协议集成外部服务。这种设计使得AgentChat能够无缝集成各种第三方服务,同时保持良好的可维护性和扩展性。

项目结构

工具系统的文件组织结构清晰地反映了其分层架构:

图表来源

章节来源

核心组件

工具系统由以下核心组件构成:

API路由器

负责处理HTTP请求和响应,提供RESTful接口。

工具服务层

包含业务逻辑处理,提供工具的增删改查功能。

数据访问对象

封装数据库操作,提供数据持久化能力。

工具模型

定义工具的数据结构和验证规则。

MCP服务器

支持外部服务集成,实现Model Context Protocol协议。

章节来源

架构概览

工具系统采用分层架构设计,确保了良好的可维护性和扩展性:

图表来源

详细组件分析

工具API端点

工具系统提供了完整的RESTful API接口,支持工具的全生命周期管理:

GET /api/v1/tool/all

获取所有可用工具的列表。

POST /api/v1/tool/create

创建新的自定义工具。

POST /api/v1/tool/own

获取当前用户创建的个人工具。

POST /api/v1/tool/visible

获取当前用户可见的所有工具。

PUT /api/v1/tool/update

更新现有工具的配置信息。

DELETE /api/v1/tool/delete

删除指定的工具。

图表来源

章节来源

工具数据模型

工具系统使用SQLModel框架定义数据模型,确保数据的一致性和完整性:

图表来源

章节来源

API端点文档

查询所有工具

端点: GET /api/v1/tool/all

功能: 获取系统中所有可用工具的完整列表。

请求参数: 无

响应格式:

json
{
  "status_code": 200,
  "status_message": "success",
  "data": [
    {
      "tool_id": "uuid",
      "zh_name": "天气查询",
      "en_name": "get_weather",
      "user_id": "0",
      "description": "查询指定城市的天气情况",
      "logo_url": "https://example.com/logo.png"
    }
  ]
}

状态码:

  • 200: 成功获取工具列表
  • 500: 服务器内部错误

创建自定义工具

端点: POST /api/v1/tool/create

功能: 创建新的自定义工具,供用户专用。

请求体:

json
{
  "zh_name": "中文名称",
  "en_name": "english_name",
  "description": "工具描述",
  "logo_url": "https://example.com/logo.png"
}

响应格式:

json
{
  "status_code": 200,
  "status_message": "success",
  "data": {
    "tool_id": "uuid"
  }
}

获取个人工具

端点: POST /api/v1/tool/own

功能: 获取当前登录用户创建的所有个人工具。

响应格式:

json
{
  "status_code": 200,
  "status_message": "success",
  "data": [
    {
      "tool_id": "uuid",
      "zh_name": "个人工具",
      "en_name": "personal_tool",
      "user_id": "user_uuid",
      "description": "个人专用工具",
      "logo_url": "https://example.com/logo.png"
    }
  ]
}

获取可见工具

端点: POST /api/v1/tool/visible

功能: 获取当前用户可见的所有工具,包括系统工具和个人工具。

响应格式:

json
{
  "status_code": 200,
  "status_message": "success",
  "data": [...]
}

更新工具配置

端点: PUT /api/v1/tool/update

功能: 更新现有工具的配置信息。

请求体:

json
{
  "tool_id": "uuid",
  "zh_name": "新中文名称",
  "en_name": "new_english_name",
  "description": "新描述",
  "logo_url": "https://example.com/new_logo.png"
}

删除工具

端点: DELETE /api/v1/tool/delete

功能: 删除指定的工具,仅限工具创建者或管理员操作。

请求参数:

json
{
  "tool_id": "uuid"
}

章节来源

工具元数据结构

工具系统定义了详细的元数据结构,用于描述工具的特性和行为:

基础元数据字段

字段名类型描述必填
tool_idstring工具唯一标识符
zh_namestring工具中文名称,显示给用户
en_namestring工具英文名称,大模型调用
user_idstring工具对应的创建用户ID
logo_urlstring工具对应的Logo地址
descriptionstring大模型将根据此描述识别并调用该工具
create_timedatetime创建时间
update_timedatetime修改时间

输入参数Schema

工具系统支持复杂的输入参数Schema定义,用于描述工具的输入要求:

图表来源

章节来源

MCP协议集成

AgentChat工具系统深度集成了Model Context Protocol (MCP),实现了与外部服务的无缝连接:

MCP架构设计

图表来源

MCP工具实现示例

以天气查询工具为例,展示MCP协议的实现方式:

图表来源

MCP服务器类型

系统支持多种MCP传输协议:

协议类型描述使用场景
stdio标准输入输出模式简单的命令行工具集成
websocketWebSocket连接实时双向通信
streamable-httpHTTP流模式异步数据传输

章节来源

工具函数编写规范

AgentChat提供了标准化的工具函数编写规范,确保工具的一致性和可维护性:

工具函数模板

图表来源

工具函数特征

  1. 装饰器使用: 使用@tool(parse_docstring=True)装饰器
  2. 参数类型注解: 明确的参数类型定义
  3. 文档字符串: 详细的函数说明和参数描述
  4. 错误处理: 完善的异常处理机制
  5. 响应格式: 标准化的返回值格式

工具函数示例

天气查询工具展示了完整的工具函数实现:

图表来源

章节来源

自定义工具扩展

内置工具扩展

系统提供了丰富的内置工具,涵盖了常见的业务场景:

工具类别工具名称功能描述
信息查询get_weather查询指定城市的天气情况
搜索工具tavily_search基于Tavily的网页搜索
搜索工具google_searchGoogle搜索引擎集成
文档处理convert_to_pdf文档格式转换
文档处理convert_to_docxWord文档处理
图像处理text_to_image文本转图像生成
图像处理image_to_text图像内容识别
邮件服务send_email邮件发送功能
物流查询get_delivery_info物流信息追踪

自定义工具开发流程

工具注册机制

系统通过模块导入自动发现和注册工具:

图表来源

章节来源

故障排除指南

常见问题及解决方案

工具调用失败

问题: 工具调用返回错误或超时

排查步骤:

  1. 检查工具函数的参数格式是否正确
  2. 验证外部API的可用性和认证信息
  3. 查看服务器日志获取详细错误信息
  4. 确认网络连接和防火墙设置

MCP服务器连接问题

问题: 无法连接到MCP服务器

排查步骤:

  1. 验证MCP服务器是否正常启动
  2. 检查端口配置和网络可达性
  3. 确认传输协议设置正确
  4. 查看MCP服务器的日志输出

权限验证失败

问题: 用户无法访问某些工具

排查步骤:

  1. 检查用户的权限级别
  2. 验证工具的创建者信息
  3. 确认工具的可见性设置
  4. 检查用户认证状态

性能优化建议

  1. 缓存机制: 对频繁调用的工具结果进行缓存
  2. 异步处理: 使用异步方式处理耗时的工具调用
  3. 批量操作: 尽可能使用批量API减少网络开销
  4. 资源监控: 监控工具的资源使用情况

章节来源

结论

AgentChat工具系统提供了一个完整、灵活且可扩展的工具管理平台。通过统一的API接口,开发者可以轻松地查询、创建、配置和管理各种类型的工具。系统支持传统的Python工具函数和基于MCP协议的外部服务集成,为构建智能Agent提供了强大的基础设施。

工具系统的设计充分考虑了可维护性、可扩展性和易用性,通过清晰的分层架构和标准化的开发规范,确保了系统的稳定性和可靠性。无论是内置工具还是自定义扩展,都能通过统一的接口进行管理,大大简化了Agent的功能扩展过程。

随着AI技术的不断发展,工具系统将继续演进,支持更多的集成方式和更丰富的功能特性,为构建更加智能和实用的AI应用提供坚实的基础。

基于 MIT 许可发布