12 KiB
API 接口文档
认证 /api/auth
POST /api/auth/register
用户注册
请求体:
{
"username": "string",
"email": "user@example.com",
"password": "string"
}
响应:
{
"success": true,
"message": "Registration successful",
"data": {
"id": 1,
"username": "string"
}
}
POST /api/auth/login
用户登录
请求体:
{
"username": "string",
"password": "string"
}
响应:
{
"success": true,
"message": "Login successful",
"data": {
"access_token": "eyJ...",
"token_type": "bearer",
"user": {
"id": 1,
"username": "string",
"email": "user@example.com",
"role": "user",
"permission_level": 1,
"workspace_path": null,
"is_active": true
}
}
}
用户权限级别:
| 级别 | 名称 | 说明 |
|---|---|---|
| 1 | READ_ONLY | 只读权限 |
| 2 | WRITE | 写入权限 |
| 3 | EXECUTE | 执行权限 |
| 4 | ADMIN | 管理员权限 |
POST /api/auth/logout
用户登出
请求头: Authorization: Bearer <token>
响应:
{
"success": true,
"message": "Logout successful"
}
GET /api/auth/me
获取当前用户信息
请求头: Authorization: Bearer <token>
响应:
{
"success": true,
"data": {
"id": 1,
"username": "string",
"email": "user@example.com",
"role": "user",
"permission_level": 1,
"workspace_path": null,
"is_active": true,
"created_at": "2024-01-01T00:00:00"
}
}
GET /api/auth/users
获取所有用户(管理员专用)
请求头: Authorization: Bearer <token>
响应:
{
"success": true,
"data": {
"users": [...]
}
}
PUT /api/auth/users/{user_id}
更新用户权限(管理员专用)
请求体:
{
"permission_level": 2
}
会话 /api/conversations
GET /api/conversations/
获取会话列表
查询参数:
project_id(可选): 项目IDpage(可选): 页码,默认1page_size(可选): 每页数量,默认20
请求头: Authorization: Bearer <token>
响应:
{
"success": true,
"data": {
"items": [...],
"total": 100,
"page": 1,
"page_size": 20
}
}
POST /api/conversations/
创建会话
请求头: Authorization: Bearer <token>
请求体:
{
"project_id": "string (可选)",
"title": "新会话",
"model": "deepseek-chat",
"provider_id": 1,
"system_prompt": "You are a helpful assistant. (可选)",
"temperature": 0.7,
"max_tokens": 2000,
"thinking_enabled": false
}
响应:
{
"success": true,
"message": "会话创建成功",
"data": {
"id": "conv_xxx",
"user_id": 1,
"provider_id": 1,
"title": "新会话",
"model": "deepseek-chat",
"system_prompt": "You are a helpful assistant.",
"temperature": 0.7,
"max_tokens": 2000,
"thinking_enabled": false,
"created_at": "2024-01-01T00:00:00",
"updated_at": "2024-01-01T00:00:00"
}
}
GET /api/conversations/{id}
获取会话详情
路径参数: id: 会话ID
请求头: Authorization: Bearer <token>
PUT /api/conversations/{id}
更新会话
路径参数: id: 会话ID
请求头: Authorization: Bearer <token>
请求体:
{
"title": "新标题",
"model": "gpt-4",
"provider_id": 1,
"system_prompt": "You are...",
"temperature": 0.8,
"max_tokens": 4000,
"thinking_enabled": true
}
DELETE /api/conversations/{id}
删除会话
路径参数: id: 会话ID
请求头: Authorization: Bearer <token>
消息 /api/messages
GET /api/messages/
获取消息列表
查询参数:
conversation_id: 会话ID(必需)limit(可选): 返回数量,默认100
请求头: Authorization: Bearer <token>
响应:
{
"success": true,
"data": {
"messages": [
{
"id": "msg_xxx",
"conversation_id": "conv_xxx",
"role": "user",
"content": "用户消息",
"text": "用户消息",
"attachments": [],
"process_steps": [],
"token_count": 10,
"usage": null,
"created_at": "2024-01-01T00:00:00"
},
{
"id": "msg_yyy",
"conversation_id": "conv_xxx",
"role": "assistant",
"content": "AI 回复文本内容",
"text": "AI 回复文本内容",
"attachments": [],
"process_steps": [
{"id": "step-0", "index": 0, "type": "thinking", "content": "让我思考..."},
{"id": "step-1", "index": 1, "type": "text", "content": "根据搜索结果..."},
{"id": "step-2", "index": 2, "type": "tool_call", "id_ref": "call_xxx", "name": "web_search", "arguments": "..."},
{"id": "step-3", "index": 3, "type": "tool_result", "id_ref": "call_xxx", "name": "web_search", "content": "...", "success": true}
],
"token_count": 100,
"usage": {"prompt_tokens": 50, "completion_tokens": 50, "total_tokens": 100},
"created_at": "2024-01-01T00:00:01"
}
],
"title": "会话标题",
"first_message": "用户的第一条消息..."
}
}
POST /api/messages/
发送消息(非流式)
请求头: Authorization: Bearer <token>
请求体:
{
"conversation_id": "conv_xxx",
"content": "用户消息",
"thinking_enabled": false
}
响应:
{
"success": true,
"data": {
"user_message": {...},
"assistant_message": {...}
}
}
POST /api/messages/stream
发送消息(流式响应 - SSE)
使用 Server-Sent Events (SSE) 返回流式响应。
请求头: Authorization: Bearer <token>
请求体:
{
"conversation_id": "conv_xxx",
"content": "用户消息",
"thinking_enabled": true,
"enabled_tools": ["web_search", "file_read", "python_execute"]
}
SSE 事件类型:
process_step
结构化步骤事件(渲染顺序的唯一数据源)
event: process_step
data: {"step": {"id": "step-0", "index": 0, "type": "thinking", "content": "让我思考一下..."}}
event: process_step
data: {"step": {"id": "step-1", "index": 1, "type": "text", "content": "以下是搜索结果:"}}
event: process_step
data: {"step": {"id": "step-2", "index": 2, "type": "tool_call", "id_ref": "call_abc", "name": "web_search", "arguments": "{\"query\": \"...\"}"}}
event: process_step
data: {"step": {"id": "step-3", "index": 3, "type": "tool_result", "id_ref": "call_abc", "name": "web_search", "content": "{...}", "success": true}}
步骤类型说明:
| type | 说明 | 额外字段 |
|---|---|---|
thinking |
模型思考过程 | content |
text |
文本回复 | content |
tool_call |
工具调用 | id_ref, name, arguments |
tool_result |
工具执行结果 | id_ref, name, content, success |
done
响应完成
event: done
data: {"message_id": "msg_xxx", "token_count": 150, "usage": {"prompt_tokens": 100, "completion_tokens": 50, "total_tokens": 150}}
error
错误信息
event: error
data: {"content": "错误信息描述"}
DELETE /api/messages/{message_id}
删除消息
路径参数: message_id: 消息ID
请求头: Authorization: Bearer <token>
LLM 提供商 /api/providers
GET /api/providers/
获取用户的 LLM 提供商列表
请求头: Authorization: Bearer <token>
响应:
{
"success": true,
"data": {
"providers": [
{
"id": 1,
"user_id": 1,
"name": "DeepSeek",
"provider_type": "openai",
"base_url": "https://api.deepseek.com/v1",
"default_model": "deepseek-chat",
"max_tokens": 8192,
"is_default": true,
"enabled": true,
"created_at": "2024-01-01T00:00:00",
"updated_at": "2024-01-01T00:00:00"
}
],
"total": 1
}
}
POST /api/providers/
创建 LLM 提供商
请求头: Authorization: Bearer <token>
请求体:
{
"name": "DeepSeek",
"provider_type": "openai",
"base_url": "https://api.deepseek.com/v1",
"api_key": "sk-xxxx",
"default_model": "deepseek-chat",
"is_default": true
}
provider_type 可选值:
openai- OpenAI/DeepSeek/GLM 兼容 APIanthropic- Anthropic Claude API
GET /api/providers/{provider_id}
获取提供商详情
路径参数: provider_id: 提供商ID
请求头: Authorization: Bearer <token>
PUT /api/providers/{provider_id}
更新提供商
路径参数: provider_id: 提供商ID
请求头: Authorization: Bearer <token>
请求体:
{
"name": "新名称",
"base_url": "https://api.example.com/v1",
"api_key": "sk-yyyy",
"default_model": "gpt-4",
"max_tokens": 16384,
"is_default": false,
"enabled": true
}
DELETE /api/providers/{provider_id}
删除提供商
路径参数: provider_id: 提供商ID
请求头: Authorization: Bearer <token>
POST /api/providers/{provider_id}/test
测试提供商连接
路径参数: provider_id: 提供商ID
请求头: Authorization: Bearer <token>
响应:
{
"success": true,
"message": "HTTP 200: ...",
"data": {
"status_code": 200,
"success": true,
"response_body": "..."
}
}
工具 /api/tools
GET /api/tools/
获取可用工具列表
查询参数:
category(可选): 工具分类(code/file/shell/crawler/data)
请求头: Authorization: Bearer <token>
响应:
{
"success": true,
"data": {
"tools": [
{
"name": "python_execute",
"description": "Execute Python code",
"category": "code",
"parameters": {...}
},
...
],
"categorized": {
"code": [...],
"file": [...],
"shell": [...],
"crawler": [...],
"data": [...]
},
"total": 11
}
}
GET /api/tools/{name}
获取工具详情
路径参数: name: 工具名称
请求头: Authorization: Bearer <token>
响应:
{
"success": true,
"data": {
"name": "web_search",
"description": "Search the web using DuckDuckGo",
"category": "crawler",
"parameters": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Search query"
}
},
"required": ["query"]
}
}
}
POST /api/tools/{name}/execute
手动执行工具
路径参数: name: 工具名称
请求头: Authorization: Bearer <token>
请求体:
{
"arg1": "value1",
"arg2": "value2"
}
响应:
{
"success": true,
"data": {
"result": "..."
}
}
公共端点
GET /api/health
健康检查
响应:
{
"status": "ok",
"message": "Luxx API is running"
}
GET /api/
服务信息
响应:
{
"name": "Luxx",
"version": "1.0.0",
"description": "AI Chat API"
}
工具说明
内置工具
代码执行 (code)
| 工具 | 功能 | 权限 |
|---|---|---|
python_execute |
执行 Python 代码 | EXECUTE |
python_eval |
计算表达式 | EXECUTE |
文件操作 (file)
| 工具 | 功能 | 权限 |
|---|---|---|
file_read |
读取文件内容 | READ_ONLY |
file_write |
写入文件内容 | WRITE |
file_list |
列出目录内容 | READ_ONLY |
file_exists |
检查文件是否存在 | READ_ONLY |
file_grep |
正则搜索文件 | READ_ONLY |
Shell 命令 (shell)
| 工具 | 功能 | 权限 |
|---|---|---|
shell_execute |
执行 Shell 命令 | EXECUTE |
网页爬虫 (crawler)
| 工具 | 功能 | 权限 |
|---|---|---|
web_search |
DuckDuckGo 搜索 | READ_ONLY |
web_fetch |
网页抓取 | READ_ONLY |
batch_fetch |
批量并发抓取 | READ_ONLY |
数据处理 (data)
| 工具 | 功能 | 权限 |
|---|---|---|
process_data |
JSON 转换、格式化 | READ_ONLY |
权限检查
工具执行时自动检查用户权限:
工具要求的权限 <= 用户拥有的权限 → 允许执行
工具要求的权限 > 用户拥有的权限 → 返回错误
用户通过 /api/auth/users/{user_id} 接口设置权限级别。