Skip to content

API参考 ​

目录 ​

  1. 简介
  2. API版本与基础URL
  3. 认证机制
  4. 错误码体系
  5. 用户管理
  6. Agent操作
  7. 对话接口
  8. 知识库管理
  9. 工具调用
  10. 文件上传
  11. 使用示例
  12. 兼容性与扩展

简介 ​

本API参考文档为AgentChat平台提供完整的RESTful API说明。所有API端点均基于FastAPI框架自动生成的OpenAPI规范,按功能模块组织,涵盖用户管理、Agent操作、对话交互、知识库管理、工具集成等核心功能。文档详细说明了每个端点的HTTP方法、请求路径、认证要求、请求体结构和响应格式。

Section sources

API版本与基础URL ​

所有API端点均以/api/v1为前缀,实现API版本控制。基础URL结构如下:

https://<your-domain>/api/v1/<endpoint>

当前版本为v1,未来扩展将通过新增版本前缀(如/api/v2)实现,确保向后兼容。

Section sources

认证机制 ​

系统采用JWT(JSON Web Token)进行认证,通过fastapi_jwt_auth库实现。认证信息通过HTTP请求头传递。

获取令牌 ​

通过/api/v1/user/login端点获取访问令牌和刷新令牌:

json
POST /api/v1/user/login
Content-Type: application/json

{
  "user_name": "your_username",
  "user_password": "your_password"
}

请求头格式 ​

所有需要认证的API请求必须包含以下请求头:

Authorization: Bearer <access_token>

令牌刷新 ​

当访问令牌过期时,可使用刷新令牌获取新的访问令牌(具体刷新端点需参考完整OpenAPI规范)。

Section sources

错误码体系 ​

系统采用统一的响应模型,所有API响应均遵循UnifiedResponseModel结构。

统一响应模型 ​

python
class UnifiedResponseModel(BaseModel, Generic[DataT]):
    status_code: int
    status_message: str
    data: DataT = None

常见状态码 ​

状态码含义说明
200SUCCESS请求成功
500BAD REQUEST通用错误
401UNAUTHORIZED认证失败
403FORBIDDEN权限不足
404NOT FOUND资源不存在

特定错误如用户名重复、应用名称重复等,通过status_message字段提供详细信息。

Section sources

用户管理 ​

提供用户注册、登录、信息查询和更新功能。

注册用户 ​

http
POST /api/v1/user/register

请求体:

json
{
  "user_name": "string",
  "user_email": "string",
  "user_password": "string"
}

验证规则:

  • 用户名长度不超过20字符
  • 用户名不能重复

用户登录 ​

http
POST /api/v1/user/login

请求体:

json
{
  "user_name": "string",
  "user_password": "string"
}

成功响应:

json
{
  "status_code": 200,
  "status_message": "SUCCESS",
  "data": {
    "user_id": "string",
    "access_token": "string"
  }
}

获取用户信息 ​

http
GET /api/v1/user/info?user_id={user_id}

更新用户信息 ​

http
PUT /api/v1/user/update

请求体:

json
{
  "user_id": "string",
  "user_avatar": "string",
  "user_description": "string"
}

Section sources

Agent操作 ​

管理AI助手(Agent)的创建、查询、更新和删除。

创建Agent ​

http
POST /api/v1/agent

请求头:

Authorization: Bearer <access_token>

请求体 (CreateAgentRequest):

json
{
  "name": "Agent名称",
  "description": "Agent描述",
  "tool_ids": ["tool_id1", "tool_id2"],
  "llm_id": "llm_id",
  "mcp_ids": ["mcp_id1"],
  "knowledge_ids": ["knowledge_id1"],
  "enable_memory": true,
  "system_prompt": "系统提示词",
  "logo_url": "logo图片URL"
}

查询用户所有Agent ​

http
GET /api/v1/agent

请求头:

Authorization: Bearer <access_token>

更新Agent ​

http
PUT /api/v1/agent

请求体 (UpdateAgentRequest):

json
{
  "agent_id": "要更新的Agent ID",
  "name": "新名称",
  "description": "新描述",
  "tool_ids": ["new_tool_id"],
  "knowledge_ids": ["new_knowledge_id"],
  "system_prompt": "新系统提示词",
  "logo_url": "新logo URL"
}

删除Agent ​

http
DELETE /api/v1/agent

请求体:

json
{
  "agent_id": "要删除的Agent ID"
}

搜索Agent ​

http
POST /api/v1/agent/search

请求体:

json
{
  "name": "搜索关键词"
}

Section sources

对话接口 ​

与AI助手进行实时对话的核心接口,支持流式响应。

发起对话 ​

http
POST /api/v1/chat

请求头:

Authorization: Bearer <access_token>
Content-Type: application/json

请求体 (ConversationReq):

json
{
  "user_input": "用户的问题",
  "dialog_id": "对话ID",
  "file_url": "上传文件的OSS链接"
}

响应类型: text/event-stream (SSE流式响应)

功能特点:

  • 支持流式输出,实时返回AI生成内容
  • 自动处理历史对话记录
  • 支持附件上传和内容整合
  • 内置断开连接检测和资源清理

Section sources

知识库管理 ​

管理知识库的创建、查询、更新、删除和检索。

创建知识库 ​

http
POST /api/v1/knowledge/create

请求体:

json
{
  "knowledge_name": "知识库名称",
  "knowledge_desc": "知识库描述"
}

查询知识库 ​

http
GET /api/v1/knowledge/select

更新知识库 ​

http
PUT /api/v1/knowledge/update

请求体:

json
{
  "knowledge_id": "知识库ID",
  "knowledge_name": "新名称",
  "knowledge_desc": "新描述"
}

删除知识库 ​

http
DELETE /api/v1/knowledge/delete

请求体:

json
{
  "knowledge_id": "要删除的知识库ID"
}

知识库检索 ​

http
POST /api/v1/knowledge/retrieval

请求体:

json
{
  "query": "用户问题",
  "knowledge_id": "知识库ID或ID列表"
}

Section sources

工具调用 ​

管理工具的创建、查询和删除。

创建工具 ​

http
POST /api/v1/tool/create

请求体:

json
{
  "zh_name": "工具中文名",
  "en_name": "工具英文名",
  "description": "工具描述",
  "logo_url": "logo URL"
}

查询工具 ​

  • GET /api/v1/tool/all: 获取所有工具
  • POST /api/v1/tool/own: 获取用户个人工具
  • POST /api/v1/tool/visible: 获取用户可见工具

更新工具 ​

http
PUT /api/v1/tool/update

请求体:

json
{
  "tool_id": "工具ID",
  "zh_name": "新中文名",
  "en_name": "新英文名",
  "description": "新描述",
  "logo_url": "新logo URL"
}

删除工具 ​

http
DELETE /api/v1/tool/delete

请求体:

json
{
  "tool_id": "要删除的工具ID"
}

Section sources

文件上传 ​

提供文件上传功能,支持常见格式。

上传文件 ​

http
POST /api/v1/upload

请求头:

Authorization: Bearer <access_token>

请求体: multipart/form-data

  • file: 要上传的文件(支持PDF、DOCX、TXT、JPG等)

响应:

json
{
  "status_code": 200,
  "status_message": "SUCCESS",
  "data": "文件的OSS签名URL"
}

上传后的文件URL可用于对话接口中的file_url参数。

Section sources

使用示例 ​

创建Agent的curl命令 ​

bash
curl -X POST "http://localhost:8000/api/v1/agent" \
  -H "Authorization: Bearer your_access_token" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "我的助手",
    "description": "一个智能助手",
    "tool_ids": [],
    "llm_id": "gpt-4",
    "knowledge_ids": [],
    "enable_memory": true,
    "system_prompt": "你是一个有用的助手",
    "logo_url": ""
  }'

Python客户端调用示例 ​

python
import requests

# 登录获取令牌
login_response = requests.post(
    "http://localhost:8000/api/v1/user/login",
    json={"user_name": "test", "user_password": "test"}
)
access_token = login_response.json()["data"]["access_token"]

# 创建对话
headers = {"Authorization": f"Bearer {access_token}"}
chat_response = requests.post(
    "http://localhost:8000/api/v1/chat",
    headers=headers,
    json={
        "user_input": "你好",
        "dialog_id": "dialog-123"
    },
    stream=True
)

# 处理流式响应
for line in chat_response.iter_lines():
    if line:
        print(line.decode('utf-8'))

上传知识库文件 ​

bash
curl -X POST "http://localhost:8000/api/v1/upload" \
  -H "Authorization: Bearer your_access_token" \
  -F "file=@/path/to/document.pdf"

Section sources

兼容性与扩展 ​

版本控制 ​

采用URL前缀/api/v1进行版本控制,确保API的稳定性和向后兼容性。未来功能扩展将通过新增版本实现,不会破坏现有客户端。

扩展考虑 ​

  • 所有API响应采用统一的UnifiedResponseModel,便于添加新字段而不破坏现有解析逻辑
  • Schema定义清晰,支持字段的可选性和默认值,便于未来扩展
  • 错误处理机制统一,通过status_message提供详细的错误信息

Section sources

基于 MIT 许可发布