文档/集成

集成

OpenAI 兼容接口

把任意 SAG Agent 作为兼容 Chat Completions 的带引用模型调用。
更新于 2026-07-22适用于 SAG v1.2.2

SAG 为每个 Agent 暴露一个 OpenAI Chat Completions 兼容端点。标准客户端可以把 SAG 当作模型调用,同时获得站内同样的检索范围、流式回答与原文引用。

端点

http
POST /api/v1/openai/{agent_id}/chat/completions
Authorization: Bearer <SAG_JWT>
Content-Type: application/json

这是自托管接口,不是 SAG 项目方提供的公共云 API。Base URL 应指向你自己的 SAG 实例。

非流式请求

bash
curl -s http://localhost:8000/api/v1/openai/<AGENT_ID>/chat/completions \
  -H "Authorization: Bearer <SAG_JWT>" \
  -H "Content-Type: application/json" \
  -d '{
    "messages": [
      {"role": "user", "content": "这份资料讲了什么?"}
    ]
  }'

响应保持标准 chat.completion 结构,并增加 sag.citations

json
{
  "id": "chatcmpl-...",
  "object": "chat.completion",
  "choices": [
    {
      "index": 0,
      "message": {"role": "assistant", "content": "..."},
      "finish_reason": "stop"
    }
  ],
  "sag": {
    "citations": [
      {"chunk_id": "...", "source_id": "...", "title": "..."}
    ]
  }
}

不了解扩展字段的标准客户端会忽略 sag,不会影响基本兼容性。

流式请求

在请求体中设置 "stream": true,服务会通过 SSE 返回增量 chunks。客户端必须持续消费事件直到结束,而不是等待一个完整 JSON 响应。

json
{
  "messages": [{"role": "user", "content": "总结检索架构"}],
  "stream": true
}

Agent 与知识范围

URL 中的 agent_id 决定使用哪一个 SAG Agent。该 Agent 保存的信源绑定会成为默认知识范围;如需不同范围,创建或更新独立 Agent,而不是在客户端伪造来源。

回答需要 LLM、Embedding 和已就绪文档。接口可达但模型未配置时,服务会返回结构化错误,而不是无依据生成答案。

客户端配置

多数 OpenAI 兼容客户端需要三个值:

配置
Base URLhttp://localhost:8000/api/v1/openai/<AGENT_ID> 或客户端要求的上一级路径
API Key当前 SAG JWT
Model客户端若强制要求可填写任意非空标识,实际 Agent 由 URL 决定

不同 SDK 对 Base URL 的拼接方式不同。最终请求必须准确落到 /chat/completions,可先用 curl 验证再配置客户端。

发现内容问题?以当前公开仓库为准。查看 SAG 源码