RagApp_API
  1. 对话 /rag
RagApp_API
  • 概述
  • 息壤大模型名称列表
  • 数据库连接信息
  • MinerU的APIToken仅14天
  • 用户(弃用)
    • 注册
      POST
    • 登录
      POST
    • 验证邮箱
      GET
    • 重发验证邮件
      POST
    • 获取当前用户信息
      GET
    • 测试用户登录状态
      GET
  • 开发测试接口
    • 简单对话
      POST
    • 简单对话+上下文
      POST
    • 网络延迟测试
      POST
  • RAG 聊天
    • [说明] 关于User-ID
    • 文档管理 /documents
      • [说明] 文件上传指南
      • [说明] 新增is_selected
      • 获取预签名上传 URL
      • 确认文件上传
      • (传统)上传文档
      • 查询文档处理状态
      • 重新触发索引
      • 获取文档列表
      • 获取文档详情
      • 更新文档选中状态
      • 删除文档
    • 对话 /rag
      • [说明] 完整使用流程示例
      • [说明] /rag/chat的响应
      • (传统RAG) 多轮对话
        POST
      • (dev|LightRAG) 对话
        POST
  • 数据模型
    • DocumentResponse
  1. 对话 /rag

[说明] /rag/chat的响应

要前端处理的有:400、404、以及sse中不以data:开头的报错

一:请求llm前关于文档的报错#

状态码场景响应体示例
422缺少 X-User-ID 请求头{"detail": [{"loc": ["header", "x-user-id"], ...}]}
422请求体验证失败(question 为空、top_k 超范围等){"detail": [{"loc": ["body", "question"], ...}]}
400指定的文档尚未完成索引{"detail": "以下文档尚未完成索引: [1, 2]"}
404指定的 document_ids 不存在或不属于当前用户{"detail": "文档不存在: [999]"}
两个422无需处理,请求参数错误,除非你前端代码写错了,否则一般不应该触发。

二、SSE 流式响应(HTTP 200)#

响应头:Content-Type: text/event-stream
正常流程:
  data: {"role": "assistant", "content": "第一个"}

  data: {"role": "assistant", "content": "文本块"}

  ...

  data: [DONE]
未检索到相关文档:(模拟成llm消息无需处理,这报错是因为pgsql记录索引完毕、向量数据库却没有索引。一般不可能触发):
data: {"role": "assistant", "content":"抱歉,未能在您的学习资料中找到相关内容。请确保已上传相关文档并完成索引。"}

请求api错误(不以data:开头,且含有err_msg的格式)#

1. 可预料的,带body(即硅基流动的API响应体):#

LLM API 错误(APIError):
{
    "error_msg": "Error code: 400 - {'code': 20012, 'message': 'Model does not exist. Please check it carefully.', 'data': None}",
    "body": {
        "code": 20012,
        "message": "Model does not exist. Please check it carefully.",
        "data": null
    }
}
硅基流动好像没有说明所有的错误返回,所以直接把响应体放到了body里面,而不是提取到根节点。若是把这些code message等提取到根节点,要是属性不存在,我后端就爆炸了

2. 不能预料的:#

其他异常(Pinecone 检索失败、网络超时等):
{"error_msg": "错误信息"}
修改于 2025-12-07 12:09:10
上一页
[说明] 完整使用流程示例
下一页
(传统RAG) 多轮对话
Built with