Files
aiagent/docs/api-reference.md
renjianbo ab1589921a 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

404 lines
7.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🔌 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)