海艺思创

首页/ AI写作教程/ OpenAI Responses API 写作请求怎么设置 safety_identifier

AI写作教程

OpenAI Responses API 写作请求怎么设置 safety_identifier

如果 AI 写作平台需要区分不同用户或任务,建议在 Responses API 请求中单独设置 safety_identifier。它应是稳定的字符串标识,不要直接提交用户名或邮箱等可识别信息。

OpenAI Responses API 写作请求怎么设置 safety_identifier

先理解 safety_identifier 的作用

safety_identifier 是 Responses API 创建请求中的可选字符串字段,用于帮助识别可能违反使用政策的应用用户。资料包显示,该标识应稳定、唯一对应用户,长度最多为 64 个字符,并建议对用户名或邮箱进行哈希处理,避免直接发送身份信息。

它不是文章标题、任务名称或审核结论,也不应把每次请求都随机生成。平台应先确定标识的归属范围,再把同一用户的写作请求保持一致。

准备

  • 确定标识主体:通常是平台用户,而不是单次文章任务。
  • 准备稳定的内部用户键,例如数据库中的用户 UUID。
  • 决定脱敏方式,避免把用户名、邮箱或手机号原文提交给接口。
  • 在自己的任务表中保存用户键、任务 ID、请求参数和返回的 response_id。

如果还需要把文章、批次和任务类型附加到响应对象,可以参考站内文章 OpenAI Responses API 写作任务怎么用 metadata 追踪,将 safety_identifier 与 metadata 分工处理。

分步操作

  1. 确定稳定输入。使用内部用户 UUID 或经过规范化处理的内部用户键,不要把显示昵称当作唯一依据,因为昵称可能修改或重复。
  2. 生成脱敏标识。在服务端使用带版本前缀的哈希值,例如 usr_v1_ 加上 SHA-256 结果的前若干位。截取长度时要保证最终字符串不超过 64 个字符。
  3. 在 Responses 请求中传参。Python SDK 中,safety_identifiermodelinput 等参数处于同一层级。
  4. 同步内部审计记录。数据库保存原始内部用户键与脱敏标识的映射关系,但日志中不要重复输出用户原始身份信息。
  5. 处理响应关联。收到响应后保存 response_id、任务状态和最终正文,使后续审核能够从任务记录回溯到对应请求。

可复制模板

import hashlib
from openai import OpenAI

client = OpenAI()

internal_user_key = "user-uuid-from-your-database"
safety_identifier = "usr_v1_" + hashlib.sha256(
    internal_user_key.encode("utf-8")
).hexdigest()[:24]

response = client.responses.create(
    model="your-model-id",
    instructions="请根据输入资料生成一篇待审核文章。资料不足时明确说明。",
    input="主题:产品更新说明;受众:普通用户;输出:结构清晰的中文初稿。",
    safety_identifier=safety_identifier,
    metadata={
        "task_type": "article_draft",
        "audit_version": "v1"
    }
)

print(response.id)

模板中的模型 ID 需要替换为项目实际可用的模型。metadata 示例只是内部任务追踪字段;真正提交哪些键值,应根据自己的审计设计执行。

怎么组织用户标识脱敏

推荐把三类数据分开保存:第一类是内部用户键,只在自己的数据库中使用;第二类是 safety_identifier,用于请求中的稳定脱敏标识;第三类是任务 ID 和 response_id,用于定位某一次写作任务。这样既能保持同一用户的标识稳定,也不会把文章任务误当成用户身份。

不要使用每次随机生成的值,否则同一用户无法形成连续的安全标识;也不要直接把邮箱、手机号、真实姓名或带有这些信息的拼接字符串放入请求。哈希前应统一大小写、空白和格式,否则同一用户可能得到多个不同结果。

翻车怎么改

  • 故障:同一用户出现多个 safety_identifier。
    原因:使用了昵称、随机数,或哈希前的用户键格式不一致。
    修正:固定内部用户 UUID,统一规范化规则,并保留哈希版本前缀。
  • 故障:请求被参数校验拒绝。
    原因:传入的值不是字符串,或脱敏后长度超过 64 个字符。
    修正:在发送前执行类型检查和长度检查,超长时缩短摘要长度,不要把原始身份信息塞入字段。
  • 故障:能看到安全标识,却找不到对应文章任务。
    原因:只记录了 safety_identifier,没有保存任务 ID、response_id 或请求状态。
    修正:在同一条内部记录中保存用户映射、任务 ID、response_id、状态和最终正文位置。

完成前检查

  • 检查 title、input 或日志中没有误写用户名、邮箱、手机号等身份信息。
  • 检查 safety_identifier 是字符串,且长度不超过 64 个字符。
  • 检查同一内部用户在相同版本规则下能得到稳定标识。
  • 检查任务表已保存 task_id、response_id、请求状态和最终内容位置。
  • 检查文章只有在完成审核和发布验收后,才进入正式发布流程。

下一步

把这篇的方法练一遍

提示词和步骤可以带到创作里直接试做一版。

去创作 看同栏目更多