> ## Documentation Index
> Fetch the complete documentation index at: https://docs.zerone.run/llms.txt
> Use this file to discover all available pages before exploring further.

# AIGC 合规说明

> 配置 Runtime 的生成式人工智能内容标识与审计记录。

# AIGC 合规配置

Runtime 提供可选的顶层 `aigc` 配置。启用后，每个响应携带隐式 `aigc` 字段，并生成逐次运行的审计记录，用于支持 GB 45438-2025《网络安全技术 人工智能生成合成内容标识方法》相关标识流程。

配置可以由 `ZERONE_AGENT_AIGC_*` 环境变量覆盖。部署方仍需根据服务地区、内容类型和运营主体完成自己的法律与合规评估。

## 隐式标识字段结构

启用后，Runtime 在响应中注入符合 GB 45438-2025 的隐式标识字段：

```json theme={null}
{
  "Label": "1",
  "ContentProducer": "<27 位服务提供者编码>",
  "ProduceID": "20260723103000-a1b2c3d4e5f6",
  "ReservedCode1": "",
  "ContentPropagator": "",
  "PropagateID": "",
  "ReservedCode2": ""
}
```

| 字段                  | 是否必填    | 说明                                              |
| ------------------- | ------- | ----------------------------------------------- |
| `Label`             | 必填      | `1`=属于 AI 生成；`2`=可能；`3`=疑似                      |
| `ContentProducer`   | 必填      | 27 位服务提供者编码（见下文编码规则）                            |
| `ProduceID`         | 必填      | 每次 run 的全局唯一编号                                  |
| `ReservedCode1`     | 可选      | 配置 `signingKey` 时写入 metadata 的 SHA-256 签名，用于防篡改 |
| `ContentPropagator` | 内容传播时必填 | 由下游平台回填                                         |
| `PropagateID`       | 内容传播时必填 | 由下游平台回填                                         |
| `ReservedCode2`     | 可选      | 预留                                              |

### ContentProducer 编码规则（27 位）

依据《网络安全标准实践指南——人工智能生成合成内容标识 服务提供者编码规则》（网安秘字〔2025〕29 号）：

| 位段    | 长度 | 含义      | 取值                |
| ----- | -- | ------- | ----------------- |
| 1–2   | 2  | 标识格式定义码 | 固定 `00`           |
| 3     | 1  | 主体类型    | `1`=组织            |
| 4     | 1  | 主体绑定方式  | `1`=统一社会信用代码      |
| 5–22  | 18 | 主体代码    | 运营本服务的主体的统一社会信用代码 |
| 23    | 1  | 服务类型    | `1`=生成合成服务        |
| 24–27 | 4  | 模型/应用码  | 运营主体自行分配，按上游模型区分  |

`ContentProducer` 绑定的是运营主体（位 1–23 永远不变），模型信息通过 24–27 位区分。切换上游模型只需变更最后 4 位字符；审计日志通过这 4 位即可识别上游模型。

<Note>`ContentProducer` 必须使用运营本服务的主体自身的编码，而不是上游模型方的编码——判定要素是“谁通过 API 对外提供 AI 内容”，而非“谁的模型”。上游模型方的信息仅作为合规旁证材料留档。</Note>

### ProduceID 生成规则

格式：`YYYYMMDDHHmmss-<UUIDv4 前 12 位>`。时间戳保证人眼可读，UUID 段保证全局唯一，例如 `20260723103000-a1b2c3d4e5f6`。

每次 run 生成一条审计记录，最小字段集：

| 字段            | 说明                           |
| ------------- | ---------------------------- |
| `produceId`   | 主键                           |
| `createdAt`   | 生成时间                         |
| `agentId`     | 所属 Agent                     |
| `sessionId`   | 会话 ID                        |
| `model`       | 模型名                          |
| `callerId`    | 调用方标识（从 API Key 或 header 推断） |
| `usage`       | token 用量                     |
| `contentHash` | 输出文本 SHA-256（用于事后比对）         |

## 标识注入点

隐式标识注入到三处，流式响应采用首尾双锚点，应对中途断流：

<Tabs>
  <Tab title="SSE 流首">
    SSE 的 `system` init 事件携带标识：

    ```json theme={null}
    {
      "type": "system",
      "subtype": "init",
      "sessionId": "...",
      "agentId": "...",
      "aigc": { "Label": "1", "ContentProducer": "...", "ProduceID": "..." }
    }
    ```
  </Tab>

  <Tab title="SSE 流尾">
    SSE 的 `result` 事件携带同一份标识，是最关键的取证锚点：

    ```json theme={null}
    {
      "type": "result",
      "subtype": "success",
      "text": "...",
      "usage": {},
      "aigc": { "Label": "1", "ContentProducer": "...", "ProduceID": "..." }
    }
    ```
  </Tab>

  <Tab title="Blocking JSON">
    `stream: false` 的阻塞响应在 JSON 顶层携带同一份标识：

    ```json theme={null}
    {
      "sessionId": "...",
      "text": "...",
      "usage": {},
      "numTurns": 3,
      "durationMs": 1234,
      "aigc": { "Label": "1", "ContentProducer": "...", "ProduceID": "..." }
    }
    ```
  </Tab>
</Tabs>

## 显式标识

显式标识不污染正文文本，改用结构化提示字段 `aigcExplicitHint: true`，由下游消费方据此在 UI 渲染“AI 生成”角标或文末提示。

<Note>在文末追加“本内容由 AI 生成”文本的方案会破坏工具调用、代码块等结构化输出，不推荐。</Note>

## 配置

```yaml theme={null}
aigc:
  enabled: true                    # 默认 false，本地开发不强制开启
  contentProducer: "<27 位编码>"   # 位 1-23 为主体段，位 24-27 为模型码；切换模型只改最后 4 位
  label: "1"                       # 默认 "1"
  serviceName: "agent-runtime"     # 用于日志
  produceIdPrefix: ""              # 可选，多实例部署区分
  signingKey: ""                   # 可选，配置后对 metadata 做 SHA-256 签名写入 ReservedCode1
  explicitHint: true               # 是否输出 aigcExplicitHint
  # 模型 → 模型码（位 24-27）的映射，用于在审计日志中识别上游模型
  modelCodes:
    "claude-sonnet-4-6": "0004"
    "glm-4.5": "0001"
    "qwen-max": "0002"
    "deepseek-chat": "0003"
```

等价的覆盖环境变量为 `ZERONE_AGENT_AIGC_ENABLED`、`ZERONE_AGENT_AIGC_CONTENT_PRODUCER` 等。

切换上游模型时，仅需在 Agent 配置中修改 `model` 字段，Runtime 会根据 `modelCodes` 映射自动刷新 `ContentProducer` 的 24–27 位；主体段保持稳定，不影响下游识别本服务。

## 下游接入要求

下游消费方必须：

1. **核验**响应中的 `aigc` 字段存在且 `Label="1"`。
2. 在用户可见界面添加**显著提示标识**（“AI 生成”角标或文末提示）。
3. 若再分发内容，**回填** `ContentPropagator`（下游平台编码）和 `PropagateID`（下游内容编号）。
4. 保留日志至少 6 个月（《互联网信息服务深度合成管理规定》要求）。

## 运维要点

* 明确内容生产者主体编码与密钥归属。
* 保护审计记录的完整性、访问权限和保留周期。
* 在流式与阻塞响应路径中都验证标识存在。
* 将密钥轮换纳入部署流程，避免在日志中输出密钥。

<Warning>启用技术标识不等于自动满足全部监管义务。公开上线前应由组织的合规负责人确认配置与展示方式。</Warning>

## 参考资料

* [《人工智能生成合成内容标识办法》（2025-09-01 施行）](https://www.cac.gov.cn/2025-03/14/c_1743654684782215.htm)
* [GB 45438-2025《网络安全技术 人工智能生成合成内容标识方法》](https://openstd.samr.gov.cn/bzgk/std/newGbInfo?hcno=F32EA2A561F1886CD8D606513512D547)
* 《网络安全标准实践指南——人工智能生成合成内容标识 服务提供者编码规则》（网安秘字〔2025〕29 号）
* 《互联网信息服务深度合成管理规定》第十六条、第十七条
