Files
aiagent/docs/api-reference.md

404 lines
7.2 KiB
Markdown
Raw Normal View History

fix: 修复35个安全与功能缺陷,补全知识进化/数字孪生/行为采集模块 ## 安全修复 (12项) - Webhook接口添加全局Token认证,过滤敏感请求头 - 修复JWT Base64 padding公式,防止签名验证绕过 - 数据库密码/飞书Token从源码移除,改为环境变量 - 工作流引擎添加路径遍历防护 (_resolve_safe_path) - eval()添加模板长度上限检查 - 审批API添加认证依赖 - 前端v-html增强XSS转义,console.log仅开发模式输出 - 500错误不再暴露内部异常详情 ## Agent运行时修复 (7项) - 删除_inject_knowledge_context中未定义db变量的finally块 - 工具执行添加try/except保护,异常不崩溃Agent - LLM重试计入budget计数器 - self_review异常时passed=False - max_iterations截断标记success=False - 工具参数JSON解析失败时记录警告日志 - run()开始时重置_llm_invocations计数器 ## 配置与基础设施 - DEBUG默认False,SQL_ECHO独立配置项 - init_db()补全13个缺失模型导入 - 新增WEBHOOK_AUTH_TOKEN/SQL_ECHO配置项 - 新增.env.example模板文件 ## 前端修复 (12项) - 登录改用URLSearchParams替代FormData - 401拦截器通过Pinia store统一清理状态 - SSE流超时从60s延长至300s - final/error事件时清除streamTimeout - localStorage聊天记录添加24h TTL - safeParseArgCount替代模板中裸JSON.parse - fetchUser 401时同时清除user对象 ## 新增模块 - 知识进化: knowledge_extractor/retriever/tasks - 数字孪生: shadow_executor/comparison模型 - 行为采集: behavior_middleware/collector/fingerprint_engine - 代码审查: code_review_agent/document_review_agent - 反馈学习: feedback_learner - 瓶颈检测/优化引擎/成本估算/需求估算 - 速率限制器 (rate_limiter) - Alembic迁移 015-020 ## 文档 - 商业化落地计划 - 8篇docs文档 (架构/API/部署/开发/贡献等) - Docker Compose生产配置 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-10 19:50:20 +08:00
# 🔌 API 参考文档
> **API Reference**
本文档描述了天工智能体平台后端 RESTful API 接口规范。所有 API 均通过 Nginx 反向代理暴露,前缀为 `/api/v1`
> 💡 **交互式文档**:启动后端服务后,可访问 `http://localhost:8037/docs` 查看 Swagger UI 文档。
---
## 一、通用规范
### 基础 URL
```
生产环境https://your-domain.com/api/v1
开发环境http://localhost:8037/api/v1
```
### 认证方式
所有受保护的接口需在请求头中携带 JWT Token
```http
Authorization: Bearer <access_token>
```
### 响应格式
```json
// 成功响应
{
"code": 200,
"message": "success",
"data": { ... }
}
// 错误响应
{
"code": 40001,
"message": "用户不存在",
"data": null
}
```
### 通用错误码
| 状态码 | 错误码 | 说明 |
|:------|:-------|:------|
| 200 | 200 | 请求成功 |
| 400 | 40000 | 请求参数错误 |
| 401 | 40100 | 未认证Token 缺失或过期) |
| 403 | 40300 | 无权限访问 |
| 404 | 40400 | 资源不存在 |
| 500 | 50000 | 服务器内部错误 |
---
## 二、用户模块
### 2.1 用户注册
注册新用户账号。
```http
POST /api/v1/users/register
```
**请求体:**
| 参数 | 类型 | 必填 | 说明 |
|:-----|:-----|:-----|:------|
| `email` | string | ✅ | 邮箱地址 |
| `password` | string | ✅ | 密码(至少 8 位,含字母和数字) |
| `nickname` | string | ❌ | 用户昵称 |
**请求示例:**
```json
{
"email": "user@example.com",
"password": "Abc12345",
"nickname": "张三"
}
```
**响应示例:**
```json
{
"code": 200,
"message": "success",
"data": {
"id": 1,
"email": "user@example.com",
"nickname": "张三",
"created_at": "2026-05-10T08:00:00Z"
}
}
```
---
### 2.2 用户登录
获取 JWT 访问令牌。
```http
POST /api/v1/users/login
```
**请求体:**
| 参数 | 类型 | 必填 | 说明 |
|:-----|:-----|:-----|:------|
| `email` | string | ✅ | 邮箱地址 |
| `password` | string | ✅ | 密码 |
**响应示例:**
```json
{
"code": 200,
"message": "success",
"data": {
"access_token": "eyJhbGciOiJIUzI1NiIs...",
"refresh_token": "eyJhbGciOiJIUzI1NiIs...",
"token_type": "bearer",
"expires_in": 1800
}
}
```
---
### 2.3 Token 刷新
使用 Refresh Token 获取新的 Access Token。
```http
POST /api/v1/users/refresh
```
**请求体:**
| 参数 | 类型 | 必填 | 说明 |
|:-----|:-----|:-----|:------|
| `refresh_token` | string | ✅ | 登录时获取的 Refresh Token |
**响应示例:**
```json
{
"code": 200,
"message": "success",
"data": {
"access_token": "eyJhbGciOiJIUzI1NiIs...",
"refresh_token": "eyJhbGciOiJIUzI1NiIs...",
"token_type": "bearer",
"expires_in": 1800
}
}
```
---
### 2.4 获取当前用户信息
获取已登录用户的个人信息。
```http
GET /api/v1/users/me
```
**请求头:**
```http
Authorization: Bearer <access_token>
```
**响应示例:**
```json
{
"code": 200,
"message": "success",
"data": {
"id": 1,
"email": "user@example.com",
"nickname": "张三",
"avatar": "https://...",
"created_at": "2026-05-10T08:00:00Z"
}
}
```
---
## 三、智能体模块
### 3.1 创建智能体
创建一个新的 AI 智能体。
```http
POST /api/v1/agents
```
**请求体:**
| 参数 | 类型 | 必填 | 说明 |
|:-----|:-----|:-----|:------|
| `name` | string | ✅ | 智能体名称 |
| `description` | string | ❌ | 智能体描述 |
| `prompt_template` | string | ✅ | 系统提示词模板 |
| `model_config` | object | ✅ | LLM 模型配置 |
**`model_config` 对象:**
| 参数 | 类型 | 必填 | 说明 |
|:-----|:-----|:-----|:------|
| `provider` | string | ✅ | 模型提供商:`openai` / `azure` / `local` |
| `model_name` | string | ✅ | 模型名称:`gpt-4o` / `gpt-3.5-turbo` |
| `temperature` | number | ❌ | 生成温度(默认 0.7 |
| `max_tokens` | integer | ❌ | 最大 Token 数(默认 2048 |
**请求示例:**
```json
{
"name": "智能客服助手",
"description": "用于解答常见产品问题",
"prompt_template": "你是一个专业的客服助手...",
"model_config": {
"provider": "openai",
"model_name": "gpt-4o",
"temperature": 0.5,
"max_tokens": 2048
}
}
```
---
### 3.2 获取智能体列表
获取当前用户的所有智能体。
```http
GET /api/v1/agents?page=1&page_size=20
```
**查询参数:**
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|:-----|:-----|:-----|:-------|:------|
| `page` | integer | ❌ | 1 | 页码 |
| `page_size` | integer | ❌ | 20 | 每页条数(最大 100 |
---
### 3.3 获取智能体详情
```http
GET /api/v1/agents/{agent_id}
```
**路径参数:**
| 参数 | 类型 | 说明 |
|:-----|:-----|:------|
| `agent_id` | integer | 智能体 ID |
---
### 3.4 更新智能体
```http
PUT /api/v1/agents/{agent_id}
```
**请求体:**(部分更新)
| 参数 | 类型 | 必填 | 说明 |
|:-----|:-----|:-----|:------|
| `name` | string | ❌ | 智能体名称 |
| `description` | string | ❌ | 智能体描述 |
| `prompt_template` | string | ❌ | 系统提示词 |
| `model_config` | object | ❌ | 模型配置 |
---
### 3.5 删除智能体
```http
DELETE /api/v1/agents/{agent_id}
```
---
## 四、对话模块
### 4.1 创建对话会话
```http
POST /api/v1/conversations
```
**请求体:**
| 参数 | 类型 | 必填 | 说明 |
|:-----|:-----|:-----|:------|
| `agent_id` | integer | ✅ | 关联的智能体 ID |
| `title` | string | ❌ | 会话标题(可选) |
---
### 4.2 发送消息
向指定对话发送消息支持流式响应SSE
```http
POST /api/v1/conversations/{conversation_id}/messages
```
**请求体:**
| 参数 | 类型 | 必填 | 说明 |
|:-----|:-----|:-----|:------|
| `content` | string | ✅ | 用户消息内容 |
**流式响应SSE**
```
data: {"type": "token", "content": "你好"}
data: {"type": "token", "content": ""}
data: {"type": "token", "content": "请问有什么可以帮您?"}
data: {"type": "done"}
data: {"type": "error", "content": "..."}
```
---
### 4.3 获取对话历史
```http
GET /api/v1/conversations/{conversation_id}/messages?page=1&page_size=50
```
---
## 五、知识库模块
### 5.1 上传文档
```http
POST /api/v1/knowledge/documents/upload
```
**请求格式:** `multipart/form-data`
| 参数 | 类型 | 必填 | 说明 |
|:-----|:-----|:-----|:------|
| `file` | file | ✅ | 支持 PDF / TXT / Markdown |
| `agent_id` | integer | ✅ | 关联的智能体 ID |
---
### 5.2 文档检索
```http
POST /api/v1/knowledge/search
```
**请求体:**
| 参数 | 类型 | 必填 | 说明 |
|:-----|:-----|:-----|:------|
| `query` | string | ✅ | 检索关键词 |
| `agent_id` | integer | ✅ | 限定知识库范围 |
| `top_k` | integer | ❌ | 返回条数(默认 5 |
---
## 六、健康检查
```http
GET /api/v1/health
```
**响应:**
```json
{
"status": "ok",
"version": "1.0.0",
"timestamp": "2026-05-10T08:00:00Z"
}
```
---
> 📎 **相关文档**[快速开始指南](./quickstart.md) | [开发指南](./development-guide.md)