Files
aiagent/backend/API_DOCUMENTATION.md
2026-01-19 00:09:36 +08:00

11 KiB
Raw Blame History

API 文档

概述

低代码智能体平台提供RESTful API和WebSocket API支持工作流管理、执行管理、数据源管理等功能。

Base URL: http://localhost:8037http://101.43.95.130:8037

API版本: v1

文档地址:

  • Swagger UI: http://localhost:8037/docs
  • ReDoc: http://localhost:8037/redoc

认证

大部分API需要JWT认证。认证流程

  1. 用户注册或登录获取token
  2. 在请求头中添加:Authorization: Bearer <token>

获取Token

POST /api/v1/auth/login
Content-Type: application/x-www-form-urlencoded

username=your_username&password=your_password

响应:

{
  "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "token_type": "bearer"
}

API端点

认证API (/api/v1/auth)

用户注册

POST /api/v1/auth/register
Content-Type: application/json

{
  "username": "testuser",
  "email": "test@example.com",
  "password": "password123"
}

响应: 201 Created

{
  "id": "uuid",
  "username": "testuser",
  "email": "test@example.com",
  "role": "user",
  "created_at": "2024-01-01T00:00:00"
}

用户登录

POST /api/v1/auth/login
Content-Type: application/x-www-form-urlencoded

username=testuser&password=password123

响应: 200 OK

{
  "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "token_type": "bearer"
}

获取当前用户信息

GET /api/v1/auth/me
Authorization: Bearer <token>

响应: 200 OK

{
  "id": "uuid",
  "username": "testuser",
  "email": "test@example.com",
  "role": "user"
}

工作流API (/api/v1/workflows)

获取工作流列表

GET /api/v1/workflows?skip=0&limit=10&search=关键词&status=draft&sort_by=created_at&sort_order=desc
Authorization: Bearer <token>

查询参数:

  • skip: 跳过记录数分页默认0
  • limit: 每页记录数默认100最大100
  • search: 搜索关键词(按名称或描述搜索)
  • status: 状态筛选draft/published/running/stopped
  • sort_by: 排序字段name/created_at/updated_at
  • sort_order: 排序方向asc/desc

响应: 200 OK

[
  {
    "id": "uuid",
    "name": "工作流名称",
    "description": "描述",
    "nodes": [...],
    "edges": [...],
    "version": 1,
    "status": "draft",
    "created_at": "2024-01-01T00:00:00"
  }
]

创建工作流

POST /api/v1/workflows
Authorization: Bearer <token>
Content-Type: application/json

{
  "name": "工作流名称",
  "description": "描述",
  "nodes": [
    {
      "id": "start-1",
      "type": "start",
      "position": {"x": 0, "y": 0},
      "data": {"label": "开始"}
    }
  ],
  "edges": []
}

响应: 201 Created

获取工作流详情

GET /api/v1/workflows/{workflow_id}
Authorization: Bearer <token>

响应: 200 OK

更新工作流

PUT /api/v1/workflows/{workflow_id}
Authorization: Bearer <token>
Content-Type: application/json

{
  "name": "更新后的名称",
  "description": "更新后的描述",
  "nodes": [...],
  "edges": [...]
}

响应: 200 OK

删除工作流

DELETE /api/v1/workflows/{workflow_id}
Authorization: Bearer <token>

响应: 200 OK

{
  "message": "工作流已删除"
}

执行工作流

POST /api/v1/workflows/{workflow_id}/execute
Authorization: Bearer <token>
Content-Type: application/json

{
  "input_data": {
    "key": "value"
  }
}

响应: 201 Created

{
  "id": "execution_id",
  "workflow_id": "workflow_id",
  "status": "pending",
  "task_id": "celery_task_id"
}

验证工作流

POST /api/v1/workflows/validate
Authorization: Bearer <token>
Content-Type: application/json

{
  "name": "工作流名称",
  "nodes": [...],
  "edges": [...]
}

响应: 200 OK

{
  "valid": true,
  "errors": [],
  "warnings": []
}

获取工作流模板列表

GET /api/v1/workflows/templates
Authorization: Bearer <token>

从模板创建工作流

POST /api/v1/workflows/templates/{template_id}/create?name=工作流名称&description=描述
Authorization: Bearer <token>

导出工作流

GET /api/v1/workflows/{workflow_id}/export
Authorization: Bearer <token>

响应: 200 OK

{
  "workflow": {...},
  "exported_at": "2024-01-01T00:00:00"
}

导入工作流

POST /api/v1/workflows/import
Authorization: Bearer <token>
Content-Type: application/json

{
  "workflow": {...}
}

获取工作流版本列表

GET /api/v1/workflows/{workflow_id}/versions
Authorization: Bearer <token>

获取工作流版本详情

GET /api/v1/workflows/{workflow_id}/versions/{version}
Authorization: Bearer <token>

回滚工作流版本

POST /api/v1/workflows/{workflow_id}/versions/{version}/rollback
Authorization: Bearer <token>
Content-Type: application/json

{
  "comment": "回滚原因"
}

执行管理API (/api/v1/executions)

创建执行任务

POST /api/v1/executions
Authorization: Bearer <token>
Content-Type: application/json

{
  "workflow_id": "workflow_id",
  "input_data": {
    "key": "value"
  }
}

响应: 201 Created

获取执行记录列表

GET /api/v1/executions?skip=0&limit=10&workflow_id=uuid&status=completed&search=关键词
Authorization: Bearer <token>

查询参数:

  • skip: 跳过记录数(分页)
  • limit: 每页记录数最大100
  • workflow_id: 工作流ID筛选
  • status: 状态筛选pending/running/completed/failed
  • search: 搜索关键词

响应: 200 OK

[
  {
    "id": "uuid",
    "workflow_id": "uuid",
    "status": "completed",
    "input_data": {...},
    "output_data": {...},
    "execution_time": 1234,
    "created_at": "2024-01-01T00:00:00"
  }
]

获取执行详情

GET /api/v1/executions/{execution_id}
Authorization: Bearer <token>

响应: 200 OK

获取执行状态

GET /api/v1/executions/{execution_id}/status
Authorization: Bearer <token>

响应: 200 OK

{
  "status": "running",
  "progress": 50,
  "current_node": "llm-1"
}

执行日志API (/api/v1/execution-logs)

获取执行日志

GET /api/v1/execution-logs/executions/{execution_id}?level=info&node_id=node-1&skip=0&limit=100
Authorization: Bearer <token>

查询参数:

  • level: 日志级别筛选info/warn/error/debug
  • node_id: 节点ID筛选
  • skip: 跳过记录数
  • limit: 每页记录数

响应: 200 OK

{
  "logs": [
    {
      "id": "uuid",
      "node_id": "node-1",
      "node_type": "llm",
      "level": "info",
      "message": "节点开始执行",
      "timestamp": "2024-01-01T00:00:00",
      "duration_ms": 1234
    }
  ],
  "total": 100,
  "skip": 0,
  "limit": 100
}

获取执行日志摘要

GET /api/v1/execution-logs/executions/{execution_id}/summary
Authorization: Bearer <token>

响应: 200 OK

{
  "total_logs": 100,
  "level_stats": {
    "info": 80,
    "warn": 10,
    "error": 5,
    "debug": 5
  },
  "node_stats": [
    {
      "node_id": "node-1",
      "node_type": "llm",
      "log_count": 10,
      "total_duration_ms": 5000
    }
  ],
  "error_logs": [...]
}

数据源API (/api/v1/data-sources)

获取数据源列表

GET /api/v1/data-sources?skip=0&limit=10&type=mysql&status=active
Authorization: Bearer <token>

创建数据源

POST /api/v1/data-sources
Authorization: Bearer <token>
Content-Type: application/json

{
  "name": "MySQL数据源",
  "type": "mysql",
  "description": "描述",
  "config": {
    "host": "localhost",
    "port": 3306,
    "database": "test",
    "username": "user",
    "password": "password"
  }
}

获取数据源详情

GET /api/v1/data-sources/{data_source_id}
Authorization: Bearer <token>

更新数据源

PUT /api/v1/data-sources/{data_source_id}
Authorization: Bearer <token>
Content-Type: application/json

{
  "name": "更新后的名称",
  "config": {...}
}

删除数据源

DELETE /api/v1/data-sources/{data_source_id}
Authorization: Bearer <token>

测试数据源连接

POST /api/v1/data-sources/{data_source_id}/test
Authorization: Bearer <token>

响应: 200 OK

{
  "status": "success",
  "message": "连接成功"
}

查询数据源数据

POST /api/v1/data-sources/{data_source_id}/query
Authorization: Bearer <token>
Content-Type: application/json

{
  "query": "SELECT * FROM table LIMIT 10"
}

响应: 200 OK

{
  "data": [...],
  "count": 10
}

WebSocket API

连接WebSocket

const ws = new WebSocket('ws://localhost:8037/api/v1/ws/executions/{execution_id}?token=<token>');

接收消息

{
  "type": "status",
  "data": {
    "status": "running",
    "progress": 50,
    "current_node": "llm-1"
  }
}

错误码

状态码 说明
200 成功
201 创建成功
400 请求参数错误
401 未授权(需要登录)
403 禁止访问(权限不足)
404 资源不存在
422 验证错误
500 服务器内部错误

错误响应格式

{
  "detail": "错误描述",
  "error_code": "ERROR_CODE",
  "status_code": 400
}

节点类型

支持的节点类型

  • start - 开始节点
  • input - 输入节点
  • llm - LLM节点调用AI模型
  • condition - 条件节点(条件判断)
  • transform - 转换节点(数据转换)
  • loop - 循环节点(循环处理)
  • agent - Agent节点执行智能Agent
  • output - 输出节点
  • end - 结束节点

LLM节点配置

{
  "id": "llm-1",
  "type": "llm",
  "data": {
    "provider": "deepseek",
    "model": "deepseek-chat",
    "prompt": "请回答:{input}",
    "temperature": 0.7,
    "max_tokens": 1000
  }
}

条件节点配置

{
  "id": "condition-1",
  "type": "condition",
  "data": {
    "expression": "{value} > 10"
  }
}

循环节点配置

{
  "id": "loop-1",
  "type": "loop",
  "data": {
    "items_path": "items",
    "item_variable": "item",
    "error_handling": "continue"
  }
}

数据源类型

支持的数据源类型:

  • mysql - MySQL数据库
  • postgresql - PostgreSQL数据库
  • api - RESTful API
  • json - JSON文件

示例

完整工作流示例

{
  "name": "文本处理工作流",
  "description": "处理用户输入的文本",
  "nodes": [
    {
      "id": "start-1",
      "type": "start",
      "position": {"x": 0, "y": 0},
      "data": {"label": "开始"}
    },
    {
      "id": "llm-1",
      "type": "llm",
      "position": {"x": 200, "y": 0},
      "data": {
        "label": "LLM处理",
        "provider": "deepseek",
        "model": "deepseek-chat",
        "prompt": "请总结以下文本:{input}"
      }
    },
    {
      "id": "end-1",
      "type": "end",
      "position": {"x": 400, "y": 0},
      "data": {"label": "结束"}
    }
  ],
  "edges": [
    {
      "id": "e1",
      "source": "start-1",
      "target": "llm-1"
    },
    {
      "id": "e2",
      "source": "llm-1",
      "target": "end-1"
    }
  ]
}

更多信息

详细的API文档请访问

  • Swagger UI: http://localhost:8037/docs
  • ReDoc: http://localhost:8037/redoc