本文档由 g2rain-knowledge 的 docs/api/integration-contracts.md 自动同步生成。
# 接口与集成契约

# Agent Runtime 检索接口

POST /knowledge/retrieve

契约版本为 v1。请求必须携带可被 PrincipalContext 解析的受信服务身份、organ_id 和 trace;organ_id 由该上下文派生,不接受请求体传入。Agent Runtime 只能调用检索用例,不能调用运营管理命令。

标签是可选业务筛选条件,不承担权限或数据隔离职责。请求中的 allTagCodes / anyTagCodes 必须是组织内已存在的 tag_code,服务端校验后构造 Milvus filter:

{
  "query": "会员退款多久到账?",
  "allTagCodes": ["after_sales", "x100"],
  "anyTagCodes": ["refund", "arrival"],
  "topK": 5
}
字段 规则
query 必填,去除首尾空白后不得为空;最大长度由服务配置限制
allTagCodes 可选,全部为 tag_code,必须全部命中;重复值去重
anyTagCodes 可选,全部为 tag_code,至少命中一个;与 allTagCodes 同时存在时为 AND 关系
topK 可选,默认值与最大值由服务配置控制,超出最大值直接拒绝

调用方不得传入 organ_id、revision、collection、Milvus filter、模型、分数阈值或本地文件定位。

响应仅返回可引用的已发布证据:

{
  "answerable": true,
  "trace_id": "trace_xxx",
  "sources": [{
    "knowledge_id": "20001",
    "revision_id": "30088",
    "chunk_id": "900123",
    "content": "退款将在 1—3 个工作日原路退回。",
    "title": "退款政策",
    "section": "退款到账时间",
    "page": 3,
    "version": "3.0",
    "citation": "退款政策 v3.0,第 3 页",
    "score": 0.92
  }]
}

answerable=true 仅表示存在通过组织隔离、MySQL 活动 revision、证据策略和引用完整性校验的候选。无有效证据时返回 HTTP 200 与 answerable=false:

{
  "answerable": false,
  "trace_id": "trace_xxx",
  "reason_code": "NO_EVIDENCE",
  "sources": []
}
情况 协议语义
请求参数不合法或缺少可信主体 使用 G2rain 统一参数/鉴权错误,不返回检索结果
没有通过校验的证据 HTTP 200,answerable=false,reason_code=NO_EVIDENCE
Milvus、Embedding、Rerank 或必要 MySQL 复核超出预算或不可用 HTTP 503,使用统一依赖不可用错误与 trace_id;不得伪装为“无知识”
候选仅来自旧版本、跨组织或无法引用的 chunk 服务丢弃候选;若无剩余证据,按 NO_EVIDENCE 返回

端到端时间预算由 RETRIEVE_TOTAL_TIMEOUT_MS 配置。服务在预算内为瞬时网络错误执行受限重试;Agent Runtime 仅在自身总预算仍允许时重试 HTTP 503,并保持同一 trace 关联。契约测试至少覆盖有效证据、无证据、旧版本、跨组织、标签筛选、依赖超时和引用定位。

# 知识问答接口

POST /knowledge/answer

请求继承检索字段,并可选择服务端固定模板:

{
  "query": "会员退款多久到账?",
  "allTagCodes": ["after_sales"],
  "topK": 5,
  "templateCode": "CUSTOMER_SERVICE"
}

templateCode 只用于从当前机构的 knowledge_answer_template 中获取 ACTIVE 回复模板,不代表模型;省略时查询编码为 DEFAULT 的模板。服务先完成组织、标签和活动版本复核,经 Model Nexus POST /v1/embeddings 向量化与 POST /v1/rerank 重排可信文本块;只有重排序后仍有有效证据才调用 Model Nexus POST /v1/chat/completions。模型只能收到重排序后的可信证据、数据库模板和问题,不能由调用方指定模型或提交提示词正文。没有证据时不调用模型,返回固定的无证据回复以及空 sources。

# 运营管理接口边界

运营管理接口经 App / Gateway 访问,使用受信主体上下文和领域能力校验。以下是目标用例矩阵,不代表现有 HTTP 实现或最终 URL 已冻结。

用例 建议命令或查询 关键规则
知识主题 创建、分页查询、查看详情 knowledge_key 仅在有效 organ_id 内唯一
草稿版本 创建 revision、上传来源文件、编辑 FAQ/标签、查看处理状态 已发布版本不可直接编辑;写入使用乐观锁
标签字典 创建、查询、停用、排序、改展示名 扁平标签;tag_code 创建后冻结;停用或改名不改写历史 revision
处理任务 审核通过后发起 PROCESS、查看任务、人工重试、取消未开始任务 外部调用由 Worker 执行,操作具备幂等键;未审核不得处理
审核 提交审核、通过、拒绝 来源就绪后进入 REVIEWING;仅审原始文件/FAQ 与标签;通过后进入 APPROVED 才可发起 PROCESS;拒绝回 DRAFT 并记录原因
发布 人工发布、回滚、下线、索引对账 以预期 release 与 revision 版本防止并发覆盖;同步维护 Milvus 派生状态;不创建发布任务
反馈 创建反馈、查询、处理、据此创建草稿 修正不直接覆盖已发布 revision

管理接口不直接暴露 Milvus collection、Entity、存储路径、模型服务地址或通用 Mapper/Service CRUD。具体请求/响应字段、错误码和 IAM 资源映射在选定实施需求后冻结。

# 外部依赖

依赖 契约边界
Docling Serve 接收受控文件引用或内容,返回结构化 JSON、Markdown 和 HybridChunker 所需信息
Embedding API 基于配置的模型生成向量;记录模型标识、耗时和失败类别,不记录敏感原文
Rerank API 对限定候选集重排;不可绕过租户/版本过滤
Milvus 仅写入或查询已获准的 chunk Entity;服务端强制组织、发布投影和标签过滤

这些接口的认证方式、超时、重试、幂等键、错误码和版本兼容策略尚未在实现中确定,须在对应需求中补充后再发布。