RAGSpine
参考

HTTP API

精确的 FastAPI 路由族、请求边界、认证、缓存,以及默认关闭的工作流执行。

从源码 checkout 启动可选的 [service] 应用:

RAGSPINE_DB_PATH=data/fact_metric.db \
  .venv/bin/python scripts/run_server.py --port 8000

引擎路由

方法路径请求 / 行为
GET/healthz存活探测
GET/readyz事实存储与可选队列的就绪状态;降级时返回 503
POST/v1/askquestion,可选 reference_date,可选 (role, text) 形式的 history
POST/v1/ask/stream同一个完整守卫后的答案,经 SSE 传输
POST/v1/ingest/structured/jobs.xlsx.xlsm.pptx.pdf 作业
POST/v1/ingest/narrative/jobs.pptx.pdf 作业
GET/v1/jobs/{job_id}队列状态/结果/错误
GET/v1/topology?scope=agent|service静态引擎拓扑;scope 无效返回 400

示例:

curl -s http://127.0.0.1:8000/v1/ask \
  -H 'content-type: application/json' \
  -d '{"question":"China FY2024 revenue","history":[["user","Use the annual report"]]}'

/v1/ask/stream 先计算出完整的守卫后响应,再发送 start、零个或多个 delta,以及 done SSE 帧。因此守卫失败绝不会出现流到一半再撤回的情况。

工作流目录

GET /v1/workflow-templates

查询字段为 offset(默认 0)与 limit(1–100,默认 100)。响应包含 totaloffsetlimit、可为空的 next_offset,以及仅含元数据的 templates。它有意 省略工作流 YAML 与预览数据。

该路由发送弱的、按页区分的 ETagCache-Control: public, max-age=300, stale-while-revalidate=3600。匹配的 If-None-Match 可能 收到 304

GET /v1/workflow-templates/{template_id}

返回目录元数据,外加规范化 workflow、确定性的 Dify yaml,以及仅供展示的 preview(schema 版本 1)。未知标识符返回 404 且不暴露路径。

POST /v1/workflow-scaffold

{ "description": "invoice extraction and approval", "reuse": true }

description 为 1–4,096 个字符。可选的 template_id 必须是小写连字符形式的目录 标识符。禁止额外字段。响应包含 workflowyamlprevieworigintemplate_idconfidencematcherwarningscompatibilityrequirements,以及 可选的事实性 source 元数据。它不会执行该工作流。

Dify 编译器与内部执行

方法路径行为
POST/v1/dify/analyze仅静态建议
POST/v1/dify/compile返回目标为 ragspinespineagent 的 Python 源码;不执行
POST/v1/dify/run仅在启用后编译、过闸并执行
POST/v1/dify/run/jobs同步编译/过闸,然后在启用后入队

analyze、compile 与 run 只接受恰好一种文档形式:

{ "workflow": { "app": { "mode": "workflow" }, "workflow": { "graph": {} } } }

或旧式信封:

{ "yaml": "app:\n  mode: workflow\nworkflow:\n  graph: {}\n" }

未知字段以及同时提供/都不提供这两种形式都会被拒绝。RAGSPINE_DIFY_RUN_ENABLED 默认 为 false,执行会得到 403。provider 仅由服务端配置构建。

n8n 转换与内部执行

方法路径行为
POST/v1/n8n/convertn8n_to_difydify_to_n8n 转换,附带警告
POST/v1/n8n/run先转换,再复用默认关闭的 Dify 运行路径

转换接受一个映射(或转换信封中的 JSON/YAML 字符串),且绝不运行它。

Dify 兼容公开 Workflow API

四条路由全部要求 Authorization: Bearer <app-key>。应用密钥与服务端工作流路径 注册在 RAGSPINE_DIFY_PUBLIC_APPS 中;注册表缺失时返回 401

方法路径
POST/v1/workflows/run
GET/v1/workflows/run/{workflow_run_id}
GET/v1/info
GET/v1/parameters

运行请求必须提供 user,接受 inputs,并将 response_mode 选为 blockingstreaming。密钥选中服务端的工作流;客户端不上传工作流或 provider。执行仍然要求 RAGSPINE_DIFY_RUN_ENABLED=true

n8n 兼容公开 API

每条 /api/v1/* 路由都要求 X-N8N-API-KEYRAGSPINE_N8N_API_KEY 匹配。若服务端密钥 未设置,该面整体以 401 禁用。

方法路径
GETPOST/api/v1/workflows
GETPUTDELETE/api/v1/workflows/{workflow_id}
POST/api/v1/workflows/{workflow_id}/activate
POST/api/v1/workflows/{workflow_id}/deactivate
GET/api/v1/executions
GETDELETE/api/v1/executions/{execution_id}
GETPOST/webhook/{path}

集合分页使用 limit(默认 100,接受并钳制到 1–250)与游标。webhook 是 API 密钥认证的例外:它有意接受未认证的 GET/POST,只 匹配激活工作流,并且仍然处于默认关闭的执行开关之后。

限制、错误与部署安全

脚手架及部分 Dify POST 路由在缓冲之前就拒绝大于 2 MiB 的请求体;解码后的 工作流文档限制为 1 MiB,并有额外的深度/节点/字符串/YAML 别名 限制。校验响应会移除回显的输入/上下文。内部失败返回不透明的错误 对象,不含 traceback。

引擎、目录、编译器、转换器、拓扑与内部 运行路由没有内置认证。公开部署必须增加网络隔离或反向代理。若 URL 的保密性不足, webhook 路由需要入口认证/限流。

本页目录