Skip to content
返回文档

API 参考

后端 SSE 流式接口文档

概述

DeepDiagram 后端基于 FastAPI 构建,提供 SSE(Server-Sent Events)流式接口。前端通过 POST 请求发送消息,后端以 SSE 事件流返回 AI 生成结果。

Base URL: http://localhost:8000

接口列表

方法路径说明
POST/api/chat/completions发送消息并接收 SSE 流式响应
GET/api/sessions获取所有会话列表
GET/api/sessions/:session_id获取指定会话的消息历史
DELETE/api/sessions/:session_id删除指定会话
POST/api/test-model测试模型连接是否可用

聊天接口

POST /api/chat/completions

向 AI 发送消息并接收流式响应。

请求体

{
  "session_id": null,
  "prompt": "帮我画一个微服务架构图",
  "images": [],
  "files": [],
  "history": [],
  "context": {},
  "parent_id": null,
  "is_retry": false,
  "concurrency": 3,
  "model_id": null,
  "api_key": null,
  "base_url": null,
  "agent_id": null
}

参数说明

参数类型必填说明
session_idint | null会话 ID,null 则创建新会话
promptstring用户消息内容
imagesstring[]Base64 编码的图片列表
filesobject[]上传的文件,格式:{"name": "file.xlsx", "data": "base64..."}
historyobject[]对话历史
contextobject附加上下文
parent_idint | null父消息 ID,用于消息分支
is_retryboolean是否重试上一条回复
concurrencyint文档解析并发数,默认 3
model_idstring | null覆盖默认模型
api_keystring | null覆盖默认 API Key
base_urlstring | null覆盖默认 Base URL
agent_idstring | null强制指定 Agent

SSE 响应事件

后端通过 SSE 返回多种事件类型:

会话管理

事件数据说明
session_created{"session_id": 1}新会话已创建
message_created{"id": 1, "role": "user", "turn_index": 0}用户消息已保存

文档解析

事件数据说明
doc_analysis_start{"session_id": 1}开始解析上传文档
doc_analysis_chunk{"content": "...", "index": 0, "status": "running"}文档解析进度
doc_analysis_end{"content": "...", "session_id": 1}文档解析完成

Agent 路由

事件数据说明
agent_selected{"agent": "drawio", "session_id": 1}AI 选择的 Agent

AI 生成

事件数据说明
design_concept_start{"session_id": 1}AI 设计思路流开始
design_concept{"content": "...", "session_id": 1}设计思路内容(流式)
design_concept_end{"session_id": 1}设计思路流结束
tool_start{"tool": "drawio", "input": {}, "session_id": 1}图表代码生成开始
tool_code{"content": "...", "session_id": 1}图表代码(增量流式)
tool_end{"output": "...", "session_id": 1}完整图表代码
thought{"content": "...", "session_id": 1}通用 Agent 文本回复(流式)

Agent 类型

系统包含 7 个专业 Agent,由 AI 路由器根据用户意图自动选择:

Agent ID名称输出格式
mindmap思维导图Markdown(# 层级)
flowchart流程图React Flow JSON
charts数据图表ECharts 配置 JSON
drawio架构图mxGraph XML
mermaidMermaid 图Mermaid 语法
infographic信息图AntV DSL
general通用对话纯文本

指定 Agent

你可以在消息中使用 @ 前缀显式指定 Agent:

@mindmap 整理 TypeScript 的类型系统
@charts 画一个饼图,数据:A: 30%, B: 45%, C: 25%
@mermaid 画一个用户登录的时序图
@drawio 设计一个云原生微服务架构

输出格式示例

思维导图(Markdown)

# React 核心概念
## 组件
### 函数组件
### 类组件
## Hooks
### useState
### useEffect
### useContext
## 状态管理
### Context API
### Redux
### Zustand

数据图表(ECharts JSON)

{
  "title": { "text": "季度销售额" },
  "xAxis": { "data": ["Q1", "Q2", "Q3", "Q4"] },
  "yAxis": {},
  "series": [{ "type": "bar", "data": [120, 200, 150, 300] }]
}

架构图(mxGraph XML)

<mxfile>
  <diagram>
    <mxGraphModel>
      <root>
        <mxCell id="0"/>
        <mxCell id="1" parent="0"/>
        <mxCell id="2" value="Web Server" style="rounded=1;" vertex="1" parent="1">
          <mxGeometry x="200" y="100" width="120" height="60" as="geometry"/>
        </mxCell>
      </root>
    </mxGraphModel>
  </diagram>
</mxfile>

Mermaid 图

graph TD
    A[用户请求] --> B{路由分发}
    B -->|API| C[后端服务]
    B -->|静态资源| D[CDN]
    C --> E[数据库]

文件上传

支持以下格式的文件上传和自动解析:

格式说明
PDFPyMuPDF提取文本内容
DOCXpython-docx提取段落和表格
XLSXpandas + openpyxl解析数据表
PPTXpython-pptx提取幻灯片内容
TXT / MD内置纯文本读取

文件以 Base64 编码在 files 字段中传输,AI 会自动解析内容并用于图表生成。

会话管理接口

GET /api/sessions

获取所有会话列表。

响应示例:

[
  {
    "id": 1,
    "title": "微服务架构图",
    "created_at": "2026-01-29T10:00:00Z",
    "updated_at": "2026-01-29T10:05:00Z"
  }
]

GET /api/sessions/:session_id

获取指定会话的消息历史。

响应示例:

{
  "session": { "id": 1, "title": "微服务架构图" },
  "messages": [
    {
      "id": 1,
      "role": "user",
      "content": "帮我画一个微服务架构图",
      "agent": null,
      "turn_index": 0
    },
    {
      "id": 2,
      "role": "assistant",
      "content": "...",
      "agent": "drawio",
      "turn_index": 0
    }
  ]
}

DELETE /api/sessions/:session_id

删除指定会话及其所有消息。

响应: {"status": "success"}

POST /api/test-model

测试模型配置是否可用。

请求体:

{
  "model_id": "gpt-4o",
  "api_key": "sk-xxx",
  "base_url": "https://api.openai.com"
}

响应示例:

{
  "success": true,
  "message": "Model connection successful",
  "response": "OK"
}

错误处理

SSE 流中可能出现以下错误事件:

事件说明
status{"content": "error message"} — 处理状态或错误信息

常见错误原因:

  • API Key 无效或余额不足
  • 模型不支持请求的功能
  • 文件格式不支持或文件损坏