# AuraK 开放 API 使用文档 ## 概述 AuraK 提供了一套完整的开放 API,允许外部系统通过 API Key 认证访问知识库功能。 **基础 URL**: `http://localhost:3001` ## 认证方式 支持两种认证方式: ### 方式 1:x-api-key 头(推荐) ```http x-api-key: kb_your_api_key_here x-tenant-id: your_tenant_id # 可选,指定租户 ``` ### 方式 2:Authorization Bearer 头 ```http Authorization: Bearer kb_your_api_key_here x-tenant-id: your_tenant_id # 可选,指定租户 ``` ### 租户说明 - 一个用户可能属于多个租户 - 如果不指定 `x-tenant-id`,将使用用户的默认租户 - 如果指定 `x-tenant-id`,将验证用户是否属于该租户 - 可以通过 `?tenantId=xxx` 查询参数指定租户 ### 获取 API Key 1. 登录 AuraK 系统 2. 进入 **设置** → **API Key** 标签页 3. 复制您的 API Key --- ## API 端点 ### 1. 聊天接口 #### 1.1 RAG 聊天(推荐) 与知识库进行对话,支持流式响应。 ```http POST /api/v1/chat ``` **请求头**: ```http Content-Type: application/json x-api-key: kb_your_api_key_here ``` **请求体**: ```json { "message": "什么是机器学习?", "stream": true, "history": [ { "role": "user", "content": "你好" }, { "role": "assistant", "content": "你好!有什么我可以帮助你的吗?" } ], "userLanguage": "zh" } ``` **参数说明**: | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | `message` | string | ✅ | 用户消息 | | `stream` | boolean | ❌ | 是否使用流式响应,默认 `true` | | `history` | array | ❌ | 历史对话记录 | | `userLanguage` | string | ❌ | 用户语言,支持 `zh`、`en`、`ja` | **响应(流式)**: ``` data: {"type":"status","data":{"stage":"searching","message":"正在搜索知识库..."}} data: {"type":"status","data":{"stage":"search_complete","message":"找到 3 条相关信息"}} data: {"type":"sources","data":[{"fileName":"机器学习入门.pdf","content":"机器学习是人工智能的一个分支...","score":0.95,"chunkIndex":2,"fileId":"xxx"}]} data: {"type":"content","data":"机器学习是"} data: {"type":"content","data":"人工智能的一个"} data: {"type":"content","data":"重要分支..."} data: [DONE] ``` **响应类型说明**: | 类型 | 说明 | |------|------| | `status` | 状态信息(搜索中、搜索完成、生成中) | | `sources` | 引用来源 | | `content` | AI 生成的回答内容 | | `thinking` | 深度思考过程(仅部分模型支持) | | `historyId` | 对话历史 ID | **响应(非流式)**: ```json { "message": "机器学习是人工智能的一个重要分支...", "sources": [ { "fileName": "机器学习入门.pdf", "content": "机器学习是人工智能的一个分支...", "score": 0.95, "chunkIndex": 2, "fileId": "xxx" } ], "historyId": "hist_xxx" } ``` --- #### 1.2 简单聊天 不使用知识库的简单聊天。 ```http POST /chat ``` **请求体**: ```json { "message": "你好", "stream": true } ``` --- ### 2. 知识库搜索 搜索知识库内容。 ```http POST /api/v1/search ``` **请求体**: ```json { "query": "机器学习", "topK": 5, "similarityThreshold": 0.7 } ``` **参数说明**: | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | `query` | string | ✅ | 搜索查询 | | `topK` | number | ❌ | 返回结果数量,默认 5 | | `similarityThreshold` | number | ❌ | 相似度阈值,默认 0.7 | **响应**: ```json { "results": [ { "fileName": "机器学习入门.pdf", "content": "机器学习是人工智能的一个分支...", "score": 0.95, "chunkIndex": 2, "fileId": "xxx" } ], "total": 1 } ``` --- ### 3. 知识库文件管理 #### 3.1 列出文件 获取知识库中的所有文件。 ```http GET /api/v1/knowledge-bases ``` **响应**: ```json { "files": [ { "id": "file_xxx", "name": "机器学习入门.pdf", "size": 1024000, "status": "completed", "createdAt": "2024-01-01T00:00:00.000Z" } ], "total": 1 } ``` --- #### 3.2 上传文件 上传文件到知识库。 ```http POST /api/v1/knowledge-bases/upload ``` **请求头**: ```http Content-Type: multipart/form-data x-api-key: kb_your_api_key_here ``` **请求体**: ``` file: [文件] mode: fast chunkSize: 1000 chunkOverlap: 200 ``` **参数说明**: | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | `file` | File | ✅ | 要上传的文件 | | `mode` | string | ❌ | 处理模式:`fast`(快速)或 `precise`(精确) | | `chunkSize` | number | ❌ | 分块大小,默认 1000 | | `chunkOverlap` | number | ❌ | 分块重叠,默认 200 | **响应**: ```json { "id": "file_xxx", "name": "机器学习入门.pdf", "size": 1024000, "status": "indexing", "message": "文件上传成功,正在处理中" } ``` --- #### 3.3 获取文件详情 ```http GET /api/v1/knowledge-bases/:id ``` **响应**: ```json { "id": "file_xxx", "name": "机器学习入门.pdf", "size": 1024000, "status": "completed", "chunkCount": 50, "createdAt": "2024-01-01T00:00:00.000Z" } ``` --- #### 3.4 删除文件 ```http DELETE /api/v1/knowledge-bases/:id ``` **响应**: ```json { "message": "文件删除成功" } ``` --- ## 错误处理 ### 错误响应格式 ```json { "statusCode": 400, "message": "错误描述", "error": "Bad Request" } ``` ### 常见错误码 | 状态码 | 说明 | |--------|------| | 400 | 请求参数错误 | | 401 | 认证失败(API Key 无效或缺失) | | 403 | 权限不足 | | 404 | 资源不存在 | | 500 | 服务器内部错误 | --- ## 使用示例 ### JavaScript/TypeScript ```javascript // 流式聊天 const response = await fetch('http://localhost:3001/api/v1/chat', { method: 'POST', headers: { 'Content-Type': 'application/json', 'x-api-key': 'kb_your_api_key_here' }, body: JSON.stringify({ message: '什么是机器学习?', stream: true }) }); const reader = response.body.getReader(); const decoder = new TextDecoder(); while (true) { const { done, value } = await reader.read(); if (done) break; const chunk = decoder.decode(value); const lines = chunk.split('\n'); for (const line of lines) { if (line.startsWith('data: ')) { const data = line.slice(6); if (data === '[DONE]') break; const parsed = JSON.parse(data); console.log(parsed); } } } ``` ### Python ```python import requests # 非流式聊天 response = requests.post( 'http://localhost:3001/api/v1/chat', headers={ 'Content-Type': 'application/json', 'x-api-key': 'kb_your_api_key_here' }, json={ 'message': '什么是机器学习?', 'stream': False } ) data = response.json() print(data['message']) ``` ### cURL ```bash # 流式聊天 curl -X POST http://localhost:3001/api/v1/chat \ -H "Content-Type: application/json" \ -H "x-api-key: kb_your_api_key_here" \ -d '{"message": "什么是机器学习?", "stream": true}' # 上传文件 curl -X POST http://localhost:3001/api/v1/knowledge-bases/upload \ -H "x-api-key: kb_your_api_key_here" \ -F "file=@/path/to/file.pdf" \ -F "mode=fast" # 搜索知识库 curl -X POST http://localhost:3001/api/v1/search \ -H "Content-Type: application/json" \ -H "x-api-key: kb_your_api_key_here" \ -d '{"query": "机器学习", "topK": 5}' ``` --- ## 支持的文件格式 上传文件时支持以下格式: - **文档**:PDF、DOCX、DOC、TXT、MD - **表格**:XLSX、XLS、CSV - **演示**:PPTX、PPT - **代码**:JS、TS、PY、JAVA、CPP、C、H、HPP - **其他**:JSON、XML、HTML、YAML --- ## 速率限制 目前暂无速率限制,但建议: - 聊天请求:每分钟不超过 30 次 - 文件上传:每小时不超过 100 个文件 - 搜索请求:每分钟不超过 60 次 --- ## 常见问题 ### Q: API Key 在哪里获取? A: 登录系统后,进入 **设置** → **API Key** 标签页即可查看和复制。 ### Q: 如何重新生成 API Key? A: 在 API Key 管理页面点击"重新生成 API Key"按钮。注意:旧 Key 将立即失效。 ### Q: 支持哪些语言? A: 支持中文(zh)、英文(en)、日文(ja),通过 `userLanguage` 参数指定。 ### Q: 文件上传后多久可以搜索? A: 取决于文件大小和处理模式: - 快速模式:通常 1-5 分钟 - 精确模式:可能需要 5-30 分钟 ### Q: 如何查看文件处理状态? A: 使用 `GET /api/v1/knowledge-bases/:id` 接口查看文件状态。 --- ## 更新日志 ### v1.0.0 (2024-01-01) - 初始版本发布 - 支持 RAG 聊天(流式/非流式) - 支持知识库搜索 - 支持文件上传/删除/查询 - 支持 API Key 认证