接口与配置

API 参考

面向客户端的 Backend HTTP 接口:默认工作区、项目、会话、数据集、构图、文件、记忆与技能。示例请求发送到已运行的 iGraph 服务,文档站本身不执行 API。

#基础约定

本指南默认使用 Compose 的公共入口 http://localhost:21108;单独运行 Backend 时,可改为 http://localhost:21109。所有业务 API 使用 /api 前缀。JSON 请求带 Content-Type: application/json;上传使用 multipart/form-data。运行服务的 /openapi.json 提供完整机器可读定义,/docs 打开 Swagger。

表中的 {sid}、{pid}、{did} 分别代表服务端返回的 session_id、project_id、dataset_id;{rid} 为 run_id,{jid} 为 job_id。路径缩写只用于阅读,实际调用时替换为对应标识。以下为主要入口索引,字段约束与完整响应以同一部署的 /openapi.json 为准。

#单用户工作区

GET/api/workspace

公共 /api/* 请求统一绑定到 IGRAPH_ADMIN_USER_ID 指定的默认工作区归属,默认 admin。客户端无需提交 X-User-ID;旧客户端即使发送该头,也会被服务端替换为固定归属,不能用它切换账号。本接口无请求体,返回工作区状态与可用模型信息,不进行用户认证,也不颁发登录令牌。

json
{
  "valid": true,
  "single_user": true,
  "user_id": "admin",
  "is_admin": true,
  "available_models": [
    "CONFIGURED_MODEL"
  ],
  "default_model": "CONFIGURED_MODEL"
}

上例的 CONFIGURED_MODEL 是占位符,实际模型以工作区响应和 GET /api/models 为准。旧 POST /api/auth/validate 仅保留为隐藏兼容入口,返回相同工作区信息;/api/admin/users 及其用户管理操作已移除。is_admin 是内部兼容字段,不表示存在管理员登录流程。

模型 API Key 和 IGRAPH_CONTROL_SERVICE_KEY 仍分别用于模型供应商连接与内部服务校验。项目、会话、数据集和文件的范围检查仍然生效。单用户应用默认通过本机回环地址或 SSH 隧道访问;没有登录页面并不意味着应把内部服务直接暴露到公网。

#创建会话

POST/api/sessions
字段类型 / 默认值含义
client_session_idUUID string | null可选客户端幂等 UUID,最长 64 字符;非 UUID 返回 400。
modelstring | null可选模型 ID;使用当前工作区可用、已启用且连接配置完整的模型。
project_idstring | null项目归属;null 为非项目会话。
active_dataset_idstring | null可选当前数据集;必须属于会话可访问的工作区和项目范围。
initial_message_previewstring / ""最长 1000 字符;作为会话标题等元信息。
reasoning_mode"direct" | "staged" / "direct"推理模式。
planning_mode"never" | "auto" | "always" / "auto"规划策略。
json
{
  "client_session_id": "799888e3-5ae2-43ad-bec3-5b1e8e64fa25",
  "reasoning_mode": "direct",
  "planning_mode": "auto"
}

成功响应包含 success、session_id,以及当前 model、project_id、active_dataset_id 等信息。复用客户端 ID 时可能返回 reused: true。创建会话后调用 chat/stream 发送消息。

#会话与运行接口

方法路径用途
GET / POST/api/sessions列出 / 创建默认工作区的会话
POST/api/sessions/{sid}/activate激活会话并恢复可用状态
GET/api/sessions/{sid}/messages读取持久化消息与可恢复的界面内容
GET/api/sessions/{sid}/info会话信息、活动数据和运行状态
GET/api/sessions/{sid}/context-usage上下文用量信息
PATCH/api/sessions/{sid}更新会话名称等元数据
PATCH/api/sessions/{sid}/model切换当前工作区可用的模型
PATCH/api/sessions/{sid}/dataset更新会话数据集绑定
PATCH/api/sessions/{sid}/reasoning-mode更新推理模式
PATCH/api/sessions/{sid}/planning-mode更新规划模式
DELETE/api/sessions/{sid}删除会话;活动任务可能要求先停止
POST/api/sessions/{sid}/chat/stream发送问题并接收 SSE
POST/api/sessions/{sid}/feedback/stream提交工具审批决定并继续原运行
POST/api/sessions/{sid}/runs/{rid}/resume从 last_event_index 继续观察已有运行
GET/api/sessions/{sid}/runs/{rid}/snapshot读取阶段快照;检查 snapshot_complete
GET/api/capabilities读取停止与最新一轮编辑的能力开关
POST/api/sessions/{sid}/runs/cancel停止指定运行,需要启用 run_cancel_v1
GET/api/sessions/{sid}/runs/control按 run_id 或 start_request_id 查询控制状态
POST/api/sessions/{sid}/jobs/{jid}/cancel停止指定后台作业,需要启用 job_cancel_v1
GET/api/sessions/{sid}/jobs/{jid}/control查询作业停止与持久化状态

项目和数据集接口保留独立作用域:项目数据使用 /api/projects/{pid}/datasets,个人数据使用 /api/personal-datasets。项目下的会话与训练实验可分别从 conversations 和 training-runs 子路径读取;训练接口提供已记录实验的汇总,不会仅因读取列表而启动训练。

方法路径用途
GET / POST/api/projects列出 / 创建项目
GET / PATCH / DELETE/api/projects/{pid}查看 / 修改 / 删除项目
GET/api/projects/{pid}/conversations项目会话列表
GET/api/projects/{pid}/training-runs项目训练记录与配置、指标、模型信息
GET/api/server-datasets列出服务器预置数据源
POST/api/projects/{pid}/datasets/from-server将可访问的服务器数据源加入项目
GET / POST/api/models/custom列出 / 保存工作区自定义模型配置
DELETE/api/models/custom/{model_id}删除工作区的自定义模型配置
GET/api/models读取模型目录与默认模型
PUT/api/models/default设置默认模型
GET / POST/api/model-providers列出 / 保存模型服务提供商
GET/api/construction-models读取可选构图模型
GET / POST/api/construction-model-settings读取 / 保存独立构图模型连接设置

工作区、记忆与技能也有公共 API。技能上传使用 multipart/form-data 的 file 字段,支持 .md 和 .zip,当前 Backend 限制为 2 MiB。候选批准与工具执行审批是两个不同流程。

方法路径用途
GET/api/sessions/{sid}/workspace/files列出可见上传文件与已发布结果文件
GET/api/sessions/{sid}/workspace/derived/{artifact_path}通过会话与文件范围校验后下载 Derived 结果
GET / POST/api/memory查询 / 创建记忆;GET 支持 scope、query、limit
PATCH / DELETE/api/memory/{memory_id}修改 / 删除记忆
GET/api/memory/events读取记忆相关事件
GET/api/memory/usage读取记忆用量信息
GET / POST/api/skills列出 / 创建技能
POST/api/skills/upload上传技能文件或归档
GET / PUT / DELETE/api/skills/{name}读取全文 / 编辑 / 删除技能
POST/api/skills/{name}/approve批准候选技能
POST/api/skills/{name}/reject拒绝候选技能
GET/api/export/sft导出默认工作区已有会话中的输入输出样本

/api/export/sft 支持 format=alpaca、sharegpt 或 raw,以及 min_turns、require_tool_calls 筛选参数;返回包含 items 的 JSON。它导出已有记录,不代表样本已经经过质量筛选或可以直接用于训练。此接口未在当前前端提供独立的 SFT 导出按钮;文件下载、报告展示和会话样本导出应分别理解。

#上传数据集

POST/api/projects/{project_id}/datasets
POST/api/personal-datasets

数据集上传使用 multipart/form-data。至少提供一个 file 或 files 文件字段;files 可重复用于多文件上传。多表 CSV 可连同描述关系的 schema JSON 组成同一数据集,具体支持的组合以返回的验证结果为准。项目和个人作用域使用各自的上传地址。

字段说明
file / files上传一个或多个文件,至少一项必填
csv_schema可选的 CSV schema JSON 文本
name / description可选的数据集名称和描述
session_id可选关联会话,仍需通过归属校验
set_as_default仅项目上传支持;默认 false
bash
curl -X POST "http://localhost:21108/api/projects/PROJECT_ID/datasets" \
  -F "files=@customers.csv" \
  -F "files=@orders.csv" \
  -F "files=@schema.json" \
  -F "name=Commerce tables"

聊天附件另用 POST /api/sessions/{sid}/upload 的 file 字段。响应中的 file_token 用于后续聊天请求,workspace_path 表示工作区文件位置;不能用浏览器本地路径代替 file_token。CSV、SQL、TXT 附件可登记为待构图数据源。上传成功、源数据预览成功、构图完成和当前会话加载图,是四个不同状态。

源数据预览地址是 /api/projects/{pid}/datasets/{did}/construction/source-preview,个人数据对应 /api/personal-datasets/{did}/construction/source-preview。该只读接口可在构图前调用;CSV 可携带 delimiter。结果中的 tables、text、limits 和 warnings 表示有上限的表格样例或文本片段。SQL 字段说明标明注释、结构信息或未提供说明,不能把结构推断当成业务定义;预览解析成功也不保证 SQL 方言适用于后续构图。

#错误与重试

状态常见含义客户端处理
403内部服务凭据或数据范围检查未通过检查错误 detail、内部服务密钥和项目 / 会话归属;无需重新登录
404资源不存在或不可访问核对资源 ID 与工作区 / 项目 / 会话范围;已移除的用户管理入口也返回 404
409状态或图 revision 冲突重新读取状态后再操作,勿盲目重试写入
422参数验证失败检查响应 detail 与字段类型
429构图容量已满:construction_capacity_exhausted本次未启动,退避后重试。
504构图仍在运行或未确认:construction_running_unconfirmed先读取构图状态,避免超时后立即重复构图。

FastAPI 的 detail 可能是字符串、结构化对象或验证错误数组,不应假定统一错误 envelope。流建立后的失败需结合 SSE 终止事件、快照与 control 状态处理。

iGraph技术文档