# Bisheng API 错误码说明文档

## 错误码结构说明

错误码前三位代表具体功能模块，后两位表示模块内部具体的报错。例如：10001

## 基础错误码 (base.py)

| 错误码 | 错误信息   | 说明      |
|-----|--------|---------|
| 403 | 暂无操作权限 | 未授权错误   |
| 404 | 资源不存在  | 资源未找到错误 |
| 500 | 服务器错误  | 服务器内部错误 |

## 模块错误码详情

### 1. 公共 - server.py

| 错误码   | 错误信息                                           | 说明                |
|-------|------------------------------------------------|-------------------|
| 10001 | 未找到SFT服务                                       | SFT服务未配置或不可用      |
| 10002 | 无效操作                                           | 请求的操作不被支持         |
| 10003 | 资源下载失败                                         | 资源文件下载出现问题        |
| 10004 | 未配置知识库embedding模型，请从工作台配置中设置                   | 知识库embedding模型未配置 |
| 10005 | 知识库embedding模型不存在，请从工作台配置中设置                   | embedding模型已被删除   |
| 10006 | 知识库embedding模型类型错误，请从工作台配置中设置                  | embedding模型类型不匹配  |
| 10007 | 请联系管理员检查工作台向量检索模型状态                            | 向量检索模型状态异常        |
| 10008 | 没有找到llm模型配置                                    | LLM模型配置缺失         |
| 10009 | llm模型配置已被删除，请重新配置模型                            | LLM模型配置已被删除       |
| 10010 | 服务提供方配置已被删除，请重新配置llm模型                         | 模型服务提供方被删除        |
| 10011 | 只支持LLM类型的模型，不支持{model_type}类型的模型               | 模型类型不支持           |
| 10012 | {server_name}下的{model_name}模型已下线，请联系管理员上线对应的模型 | 模型已下线             |
| 10013 | 初始化llm失败，请检查配置或联系管理员。错误信息：{exception}          | LLM初始化失败          |

### 2. 模型训练模块 (101) - finetune.py

| 错误码   | 错误信息              | 说明          |
|-------|-------------------|-------------|
| 10100 | 创建训练任务失败          | 微调训练任务创建失败  |
| 10101 | 个人训练集和预置训练集最少选择一个 | 训练数据集未选择    |
| 10102 | 任务不存在             | 训练任务不存在     |
| 10103 | 任务状态错误            | 训练任务状态异常    |
| 10104 | 任务取消失败            | 取消训练任务失败    |
| 10105 | 任务删除失败            | 删除训练任务失败    |
| 10106 | 任务发布失败            | 训练任务发布失败    |
| 10107 | 模型名接口修改失败         | 修改模型名称失败    |
| 10108 | 取消发布失败            | 取消模型发布失败    |
| 10109 | 无效的训练参数           | 训练参数格式错误    |
| 10110 | 模型名已存在            | 模型名称重复      |
| 10120 | 训练文件不存在           | 训练数据文件丢失    |
| 10125 | 获取GPU信息失败         | GPU资源信息获取失败 |
| 10126 | 获取模型列表失败          | 模型列表查询失败    |

### 3. 模型部署模块 (102) - model_deploy.py

| 错误码   | 错误信息  | 说明       |
|-------|-------|----------|
| 10200 | 模型不存在 | 部署的模型不存在 |

### 4. 组件模块 (103) - component.py

| 错误码   | 错误信息  | 说明     |
|-------|-------|--------|
| 10300 | 组件已存在 | 组件名称重复 |
| 10301 | 组件不存在 | 组件未找到  |

### 5. 助手模块 (104) - assistant.py

| 错误码   | 错误信息           | 说明           |
|-------|----------------|--------------|
| 10400 | 助手不存在          | 助手未找到        |
| 10401 | 助手上线失败         | 助手部署失败       |
| 10402 | 助手名称重复         | 助手名称已存在      |
| 10403 | 助手已上线，不可编辑     | 上线状态的助手不允许编辑 |
| 10410 | 工具名称已存在        | 工具类型名称重复     |
| 10411 | 工具下的API不能为空    | 工具必须包含API    |
| 10412 | 工具不存在          | 工具类型不存在      |
| 10413 | 预置工具类别不可删除     | 系统预置工具不允许删除  |
| 10420 | 该助手已被删除        | 助手已被删除       |
| 10421 | 当前助手未上线，无法直接对话 | 助手未上线无法对话    |
| 10422 | 助手推理模型列表为空     | 助手模型配置为空     |
| 10423 | 未配置助手推理模型      | 助手推理模型未配置    |
| 10499 | 助手服务异常         | 助手服务其他错误     |

### 6. 技能服务模块 (105) - flow.py

| 错误码   | 错误信息                  | 说明           |
|-------|-----------------------|--------------|
| 10500 | 未找到技能版本信息             | 技能版本不存在      |
| 10501 | 当前正在使用版本无法删除          | 活跃版本不可删除     |
| 10502 | 版本名已存在                | 版本名称重复       |
| 10503 | 技能名重复                 | 技能名称已存在      |
| 10520 | 技能不存在                 | 技能未找到        |
| 10521 | 技能已上线，不可编辑            | 上线状态技能不可编辑   |
| 10525 | 工作流已上线，不可编辑           | 上线状态工作流不可编辑  |
| 10526 | 工作流初始化失败              | 工作流启动失败      |
| 10527 | 工作流等待用户输入超时           | 用户输入等待超时     |
| 10528 | 节点执行超过最大次数            | 节点重试次数超限     |
| 10529 | 工作流名称重复               | 工作流名称已存在     |
| 10530 | 模板名称已存在               | 模板名称重复       |
| 10531 | <节点名称>功能已升级，需删除后重新拖入。 | 节点版本更新需要重新配置 |
| 10532 | 工作流版本已升级，请联系创建者重新编排   | 工作流版本需要更新    |
| 10540 | 服务器线程数已满，请稍候再试        | 服务器资源不足      |

### 7. 用户模块 (106) - user.py

| 错误码   | 错误信息                                                 | 说明        |
|-------|------------------------------------------------------|-----------|
| 10600 | 账号或密码错误                                              | 用户认证失败    |
| 10601 | 您的密码已过期，请及时修改                                        | 密码过期提醒    |
| 10602 | 用户尚未设置密码，请先联系管理员重置密码                                 | 用户未设置密码   |
| 10603 | 当前密码错误                                               | 当前密码验证失败  |
| 10604 | 您的账户已在另一设备上登录，此设备上的会话已被注销。\n如果这不是您本人的操作，请尽快修改您的账户密码。 | 账户在其他设备登录 |
| 10605 | 用户名已存在                                               | 用户名重复     |
| 10606 | 用户组和角色不能为空                                           | 用户权限配置不完整 |
| 10610 | 用户组内还有用户，不能删除                                        | 用户组非空无法删除 |

### 8. 标签模块 (107) - tag.py

| 错误码   | 错误信息     | 说明     |
|-------|----------|--------|
| 10700 | 标签已存在    | 标签名称重复 |
| 10701 | 未找到对应的标签 | 标签不存在  |

### 9. 模型管理模块 (108) - llm.py

| 错误码   | 错误信息                | 说明          |
|-------|---------------------|-------------|
| 10800 | 服务提供方名称重复，请修改       | 服务提供方名称已存在  |
| 10801 | 模型不可重复              | 模型名称重复      |
| 10802 | 添加服务提供方失败，模型全部初始化失败 | 服务提供方添加完全失败 |
| 10803 | 添加服务提供方失败，部分模型初始化失败 | 服务提供方添加部分失败 |

### 10. 知识库模块 (109) - knowledge.py

| 错误码   | 错误信息                          | 说明             |
|-------|-------------------------------|----------------|
| 10900 | 知识库名称重复                       | 知识库名称已存在       |
| 10901 | 知识库必须选择一个embedding模型          | embedding模型未选择 |
| 10910 | 当前知识库版本不支持修改分段，请创建新知识库后进行分段修改 | 知识库版本不支持分段修改   |
| 10920 | 未配置QA知识库相似问模型                 | QA相似问模型未配置     |
| 10930 | 该问题已存在                        | QA问题重复         |
| 10940 | 当前有文件正在解析，不可复制                | 知识库文件解析中无法复制   |
| 10950 | 不支持多个知识库的文件同时删除               | 批量删除限制         |
| 10951 | 知识库重新构建中，不允许修改embedding模型     | 知识库重构期间无法修改模型  |

### 11. 灵思模块 (110) - linsight.py

| 错误码   | 错误信息                       | 说明         |
|-------|----------------------------|------------|
| 11010 | SOP文件格式不符合要求               | SOP文件格式错误  |
| 11020 | 文件上传失败                     | 灵思文件上传失败   |
| 11030 | 您的灵思使用次数已用完，请使用新的邀请码激活灵思功能 | 灵思使用次数耗尽   |
| 11040 | 提交灵思用户问题失败                 | 用户问题提交失败   |
| 11050 | 请联系管理员检查工作台向量检索模型状态        | 向量检索模型异常   |
| 11060 | 指导手册检索失败，向量检索与关键词检索均不可用    | 检索服务不可用    |
| 11070 | 指导手册检索失败                   | 指导手册查询失败   |
| 11080 | 初始化灵思工作台工具失败               | 工作台工具初始化失败 |
| 11090 | 灵思Bisheng LLM相关错误          | LLM服务错误    |
| 11100 | 生成SOP内容失败                  | SOP内容生成失败  |
| 11110 | 修改SOP内容失败                  | SOP内容修改失败  |
| 11120 | 灵思会话版本已完成或正在执行，无法再次执行      | 会话版本状态冲突   |
| 11130 | 开始执行灵思任务失败                 | 任务启动失败     |
| 11140 | 获取灵思队列排队状态失败               | 队列状态查询失败   |
| 11150 | 添加指导手册失败，向量存储添加数据失败        | 向量存储添加失败   |
| 11160 | 更新指导手册失败，向量存储更新数据失败        | 向量存储更新失败   |
| 11170 | 删除指导手册失败，向量存储删除数据失败        | 向量存储删除失败   |

### 12. 工作台模块 (120) - workstation.py

| 错误码   | 错误信息            | 说明         |
|-------|-----------------|------------|
| 12040 | 未找到web_search工具 | web搜索工具不存在 |
| 12041 | 会话不存在           | 会话记录不存在    |
| 12042 | 该智能体已被添加        | 智能体重复添加    |

### 13. 对话聊天模块 (130) - chat.py

| 错误码   | 错误信息                                     | 说明        |
|-------|------------------------------------------|-----------|
| 13001 | 该技能已被删除                                  | 技能已被删除    |
| 13002 | 当前技能未上线，无法直接对话                           | 技能未上线无法对话 |
| 13003 | 当前技能未编译通过，无法直接对话                         | 技能编译失败    |
| 13004 | 后端服务异常                                   | 聊天服务异常    |
| 13005 | LLM 技能执行错误. error={error}                | LLM执行错误   |
| 13006 | 文档解析失败，点击输入框上传按钮重新上传\n\n{error}          | 文档解析失败    |
| 13007 | Input data is parsed fail. error={error} | 输入数据解析失败  |

### 14. QA模块 (140) - qa.py

| 错误码   | 错误信息       | 说明    |
|-------|------------|-------|
| 14001 | 后台处理中，稍后再试 | 后台处理中 |

### 15. 工具模块 (150) - tool.py

| 错误码   | 错误信息   | 说明     |
|-------|--------|--------|
| 15000 | 工具名称重复 | 工具名称重复 |

### 16. 数据集模块 (160) - dataset.py

| 错误码   | 错误信息   | 说明      |
|-------|--------|---------|
| 16000 | 数据集已存在 | 数据集名称重复 |

### 17. 数据看板模块 (170) - telemetry.py

| 错误码   | 错误信息          | 说明            |
|-------|---------------|---------------|
| 17000 | 最多允许创建 20 个看板 | 最多允许创建 20 个看板 |

## 错误码使用说明

### 错误码继承关系

所有错误码类都继承自 `BaseErrorCode` 基类，提供统一的错误处理机制。

### 使用方式

1. **抛出异常**: `raise ComponentExistError()`
2. **返回响应**: `ComponentExistError.return_resp()`
3. **HTTP异常**: `ComponentExistError.http_exception()`
4. **SSE事件**: `ComponentExistError.to_sse_event()`
5. **字典格式**: `error_instance.to_dict()`
6. **WebSocket关闭**: `await error_instance.websocket_close_message(websocket)`

### 自定义错误信息

错误码支持自定义错误信息：

```python
raise ComponentExistError(msg="自定义错误信息")
```

### 错误码扩展

新增错误码时请遵循以下规范：

1. 选择合适的模块代码前缀
2. 错误码递增分配
3. 提供清晰的错误描述
4. 继承 `BaseErrorCode` 基类

### 错误码接受格式

* http_exception

```json
{
  "status_code": 10012,
  "status_message": "{server_name}下的{model_name}模型已下线，请联系管理员上线对应的模型 | 模型已下线",
  "data": {
    "exception": "堆栈错误信息,如果没有则为默认的status_message，# 这个字段必存在",
    #
    自定义字段
    "server_name": "模型服务提供方名称",
    "model_name": "模型名称"
  }
}
```

* sse_event

```json
{
  "event": "error",
  "data": {
    "status_code": 10012,
    "status_message": "{server_name}下的{model_name}模型已下线，请联系管理员上线对应的模型 | 模型已下线",
    "data": {
      "exception": "堆栈错误信息,如果没有则为默认的status_message，# 这个字段必存在",
      #
      自定义字段
      "server_name": "模型服务提供方名称",
      "model_name": "模型名称"
    }
  }
}

```