Files
AI-VideoAssistant/api/docs/tools.md

12 KiB
Raw Blame History

工具与自动测试 (Tools & Autotest) API

工具与自动测试 API 用于管理可用工具列表和自动测试功能。

基础信息

项目
Base URL /api/v1/tools
认证方式 Bearer Token (预留)

可用工具 (Tool Registry)

系统内置以下工具:

工具ID 名称 类别 说明
calculator 计算器 query 执行数学计算
code_interpreter 代码执行 query 安全地执行Python代码
current_time 当前时间 query 获取当前本地时间
turn_on_camera 打开摄像头 system 执行打开摄像头命令
turn_off_camera 关闭摄像头 system 执行关闭摄像头命令
increase_volume 调高音量 system 提升设备音量
decrease_volume 调低音量 system 降低设备音量
voice_message_prompt 语音消息提示 system 播报一条语音提示消息
text_msg_prompt 文本消息提示 system 显示一条文本弹窗提示
voice_choice_prompt 语音选项提示 system 播报问题并展示可选项,等待用户选择
text_choice_prompt 文本选项提示 system 显示文本选项弹窗并等待用户选择

类别说明:

  • query: 查询类工具,需要配置 HTTP URL
  • system: 系统类工具,直接在客户端执行

API 端点

1. 获取可用工具列表

GET /api/v1/tools/list

Response:

{
  "tools": {
    "search": {
      "name": "网络搜索",
      "description": "搜索互联网获取最新信息",
      "parameters": {
        "type": "object",
        "properties": {
          "query": {"type": "string", "description": "搜索关键词"}
        },
        "required": ["query"]
      }
    },
    "calculator": {
      "name": "计算器",
      "description": "执行数学计算",
      "parameters": {
        "type": "object",
        "properties": {
          "expression": {"type": "string", "description": "数学表达式,如: 2 + 3 * 4"}
        },
        "required": ["expression"]
      }
    },
    "weather": {
      "name": "天气查询",
      "description": "查询指定城市的天气",
      "parameters": {
        "type": "object",
        "properties": {
          "city": {"type": "string", "description": "城市名称"}
        },
        "required": ["city"]
      }
    },
    "translate": {
      "name": "翻译",
      "description": "翻译文本到指定语言",
      "parameters": {
        "type": "object",
        "properties": {
          "text": {"type": "string", "description": "要翻译的文本"},
          "target_lang": {"type": "string", "description": "目标语言,如: en, ja, ko"}
        },
        "required": ["text", "target_lang"]
      }
    },
    "knowledge": {
      "name": "知识库查询",
      "description": "从知识库中检索相关信息",
      "parameters": {
        "type": "object",
        "properties": {
          "query": {"type": "string", "description": "查询内容"},
          "kb_id": {"type": "string", "description": "知识库ID"}
        },
        "required": ["query"]
      }
    },
    "code_interpreter": {
      "name": "代码执行",
      "description": "安全地执行Python代码",
      "parameters": {
        "type": "object",
        "properties": {
          "code": {"type": "string", "description": "要执行的Python代码"}
        },
        "required": ["code"]
      }
    }
  }
}

2. 获取工具详情

GET /api/v1/tools/list/{tool_id}

Path Parameters:

参数 类型 说明
tool_id string 工具ID

Response:

{
  "name": "计算器",
  "description": "执行数学计算",
  "parameters": {
    "type": "object",
    "properties": {
      "expression": {"type": "string", "description": "数学表达式,如: 2 + 3 * 4"}
    },
    "required": ["expression"]
  }
}

错误响应 (工具不存在):

{
  "detail": "Tool not found"
}

3. 健康检查

GET /api/v1/tools/health

Response:

{
  "status": "healthy",
  "timestamp": 1705315200.123,
  "tools": ["search", "calculator", "weather", "translate", "knowledge", "code_interpreter"]
}

4. 获取工具资源列表

GET /api/v1/tools/resources

Query Parameters:

参数 类型 必填 默认值 说明
category string - 过滤类别: "query" | "system"
enabled boolean - 过滤启用状态
include_system boolean true 是否包含系统工具
page int 1 页码
limit int 100 每页数量

Response:

{
  "total": 15,
  "page": 1,
  "limit": 100,
  "list": [
    {
      "id": "calculator",
      "user_id": 1,
      "name": "计算器",
      "description": "执行数学计算",
      "category": "query",
      "icon": "Terminal",
      "http_method": "GET",
      "http_url": null,
      "http_timeout_ms": 10000,
      "parameter_schema": {
        "type": "object",
        "properties": {
          "expression": {"type": "string", "description": "数学表达式"}
        },
        "required": ["expression"]
      },
      "parameter_defaults": {},
      "wait_for_response": false,
      "enabled": true,
      "is_system": true,
      "created_at": "2024-01-15T10:30:00Z"
    }
  ]
}

5. 获取工具资源详情

GET /api/v1/tools/resources/{id}

6. 创建工具资源

POST /api/v1/tools/resources

Request Body:

{
  "name": "订单查询",
  "description": "查询用户订单信息",
  "category": "query",
  "icon": "Search",
  "http_method": "POST",
  "http_url": "https://api.example.com/orders",
  "http_headers": {"Authorization": "Bearer {api_key}"},
  "http_timeout_ms": 10000,
  "parameter_schema": {
    "type": "object",
    "properties": {
      "order_id": {"type": "string", "description": "订单ID"}
    },
    "required": ["order_id"]
  },
  "enabled": true
}

Fields 说明:

字段 类型 必填 说明
id string 工具ID默认自动生成
name string 工具名称
description string 工具描述
category string 类别: "query" | "system"
icon string 图标名称
http_method string HTTP 方法,默认 GET
http_url string 否* HTTP 请求地址 (query 类必填)
http_headers object HTTP 请求头
http_timeout_ms int 超时时间(毫秒),默认 10000
parameter_schema object 参数 JSON Schema
parameter_defaults object 默认参数值
wait_for_response boolean 是否等待响应 (仅 system 类)
enabled boolean 是否启用,默认 true

7. 更新工具资源

PUT /api/v1/tools/resources/{id}

8. 删除工具资源

DELETE /api/v1/tools/resources/{id}

自动测试 (Autotest)

4. 运行完整自动测试

POST /api/v1/tools/autotest

Query Parameters:

参数 类型 必填 默认值 说明
llm_model_id string - LLM 模型ID
asr_model_id string - ASR 模型ID
test_llm boolean true 是否测试LLM
test_asr boolean true 是否测试ASR

Response:

{
  "id": "abc12345",
  "started_at": 1705315200.0,
  "duration_ms": 2500,
  "tests": [
    {
      "name": "Model Existence",
      "passed": true,
      "message": "Found model: GPT-4o",
      "duration_ms": 15
    },
    {
      "name": "API Connection",
      "passed": true,
      "message": "Latency: 150ms",
      "duration_ms": 150
    },
    {
      "name": "Temperature Setting",
      "passed": true,
      "message": "temperature=0.7"
    },
    {
      "name": "Streaming Support",
      "passed": true,
      "message": "Received 15 chunks",
      "duration_ms": 800
    }
  ],
  "summary": {
    "passed": 4,
    "failed": 0,
    "total": 4
  }
}

5. 测试单个 LLM 模型

POST /api/v1/tools/autotest/llm/{model_id}

Path Parameters:

参数 类型 说明
model_id string LLM 模型ID

Response:

{
  "id": "llm_test_001",
  "started_at": 1705315200.0,
  "duration_ms": 1200,
  "tests": [
    {
      "name": "Model Existence",
      "passed": true,
      "message": "Found model: GPT-4o",
      "duration_ms": 10
    },
    {
      "name": "API Connection",
      "passed": true,
      "message": "Latency: 180ms",
      "duration_ms": 180
    },
    {
      "name": "Temperature Setting",
      "passed": true,
      "message": "temperature=0.7"
    },
    {
      "name": "Streaming Support",
      "passed": true,
      "message": "Received 12 chunks",
      "duration_ms": 650
    }
  ],
  "summary": {
    "passed": 4,
    "failed": 0,
    "total": 4
  }
}

6. 测试单个 ASR 模型

POST /api/v1/tools/autotest/asr/{model_id}

Path Parameters:

参数 类型 说明
model_id string ASR 模型ID

Response:

{
  "id": "asr_test_001",
  "started_at": 1705315200.0,
  "duration_ms": 800,
  "tests": [
    {
      "name": "Model Existence",
      "passed": true,
      "message": "Found model: Whisper-1",
      "duration_ms": 8
    },
    {
      "name": "Hotwords Config",
      "passed": true,
      "message": "Hotwords: 3 words"
    },
    {
      "name": "API Availability",
      "passed": true,
      "message": "Status: 200",
      "duration_ms": 250
    },
    {
      "name": "Language Config",
      "passed": true,
      "message": "Language: zh"
    }
  ],
  "summary": {
    "passed": 4,
    "failed": 0,
    "total": 4
  }
}

7. 发送测试消息

POST /api/v1/tools/test-message

Query Parameters:

参数 类型 必填 默认值 说明
llm_model_id string - LLM 模型ID
message string "Hello, this is a test message." 测试消息

Response:

{
  "success": true,
  "reply": "Hello! This is a test reply from GPT-4o.",
  "usage": {
    "prompt_tokens": 15,
    "completion_tokens": 12,
    "total_tokens": 27
  }
}

错误响应 (模型不存在):

{
  "detail": "LLM Model not found"
}

测试结果结构

AutotestResult

interface AutotestResult {
  id: string;           // 测试ID
  started_at: number;   // 开始时间戳
  duration_ms: number;  // 总耗时(毫秒)
  tests: TestCase[];    // 测试用例列表
  summary: TestSummary; // 测试摘要
}

interface TestCase {
  name: string;         // 测试名称
  passed: boolean;      // 是否通过
  message: string;      // 测试消息
  duration_ms: number;  // 耗时(毫秒)
}

interface TestSummary {
  passed: number;       // 通过数量
  failed: number;       // 失败数量
  total: number;        // 总数量
}

测试项目说明

LLM 模型测试项目

测试名称 说明
Model Existence 检查模型是否存在于数据库
API Connection 测试 API 连接并测量延迟
Temperature Setting 检查温度配置
Streaming Support 测试流式响应支持

ASR 模型测试项目

测试名称 说明
Model Existence 检查模型是否存在于数据库
Hotwords Config 检查热词配置
API Availability 测试 API 可用性
Language Config 检查语言配置

单元测试

项目包含完整的单元测试,位于 api/tests/test_tools.py

测试用例概览

测试类 说明
TestToolsAPI 工具列表、健康检查等基础功能测试
TestAutotestAPI 自动测试功能完整测试

运行测试

# 运行工具相关测试
pytest api/tests/test_tools.py -v

# 运行所有测试
pytest api/tests/ -v