HappyHorse 1.0 正式上线立即体验
如何为聊天机器人或 AI Agent 接入内容审核
guide

如何为聊天机器人或 AI Agent 接入内容审核

EvoLink Team
EvoLink Team
Product Team
2026年4月29日
12 分钟阅读

为聊天机器人或 AI Agent 加入内容审核,远不止是"屏蔽敏感词"那么简单。一个生产级工作流需要同时检查用户输入、模型输出,以及 Agent 被允许执行的操作。

最清晰的思维模型是:

input moderation
  -> model or agent reasoning
  -> tool-call validation
  -> output moderation
  -> allow / review / block
本文将说明每层审核应部署在哪里、内容审核能解决和不能解决哪些问题,以及如何利用 EvoLink Moderation 1.0 实现简单的风险路由。

要点速览

  • 在用户消息到达聊天机器人或 Agent 之前进行审核。
  • 在模型输出展示给用户之前进行审核。
  • 在 Agent 执行操作之前校验工具调用。
  • 不要把内容审核当作完整的 Prompt 注入防御。
  • 对中等风险或高影响操作启用人工审核。
  • EvoLink 的 evolink_summary.risk_level 可以简化 放行 / 人审 / 拦截 逻辑。

内容审核 ≠ Agent 安全

内容审核的作用是识别有害文本或图片,降低不安全 Prompt、有害输出和违规用户内容的风险。

Agent 安全的范畴更广,包括 Prompt 注入防护、工具权限管控、数据访问控制、人工审批、结构化输出、评测、日志记录和工作流设计。

OpenAI 的 Agent 安全指南建议综合使用护栏、工具审批、链路评分、评测和结构化工作流等手段。OWASP 则将 Prompt 注入列为独立的 LLM 安全风险类别,可能导致数据泄露、意外操作或工具滥用。

参考资料:

结论:审核是护栏之一,但不应是唯一的护栏。

第 1 层:输入审核

输入审核在用户消息到达模型之前进行检查。

适用场景:

  • 明显的有害请求
  • 违反平台政策的用户消息
  • 辱骂或骚扰性文本
  • 不安全的图片上传
  • 要求生成违规内容的 Prompt

输入审核的价值在于,它能在最前端拦截明显不安全的请求,使其根本不会进入模型工作流。

def handle_user_message(user_input: str):
    input_check = client.moderations.create(
        model="evolink-moderation-1.0",
        input=user_input
    )

    if input_check.evolink_summary.risk_level == "high":
        return {
            "status": "blocked",
            "message": "I can't help with that request."
        }

    return run_chatbot(user_input)

重要局限:输入审核不是完整的 Prompt 注入防御。攻击者可以通过间接 Prompt、编码文本、图片、外部文档或工具输出,在工作流的后续环节影响 Agent 行为。

第 2 层:输出审核

输出审核在模型响应展示给用户之前进行检查。

适用场景:

  • 不安全的生成内容
  • 违反政策的回复
  • 在敏感领域给出的有害建议
  • 输入看似安全但仍产生的问题回复
def safe_chat(user_input: str):
    input_check = moderate(user_input)
    if input_check.evolink_summary.risk_level == "high":
        return "I can't help with that request."

    answer = llm.generate(user_input)

    output_check = moderate(answer)
    if output_check.evolink_summary.risk_level == "high":
        return "I generated a response that needs to be revised. Please try rephrasing."

    return answer

输出审核对公开聊天机器人、AI 副驾以及生成内容直接面向用户的工作流尤其重要。

第 3 层:工具调用校验

对 AI Agent 而言,工具调用往往是风险最高的环节。

如果 Agent 能发送邮件、查询数据库、更新工单、调用 API 或写入文件,那么工具调用在执行前必须经过校验。这不仅仅是内容审核,更是权限控制和策略执行。

校验要点:

  • 工具名称
  • 允许的用户或账户范围
  • 是否需要人工审批
  • 允许的参数值
  • 读操作 vs 写操作
  • 外部收件人
  • 破坏性操作
  • 数据外泄风险
def validate_tool_call(tool_name: str, args: dict, user_context: dict):
    if tool_name == "send_email":
        if not args["to"].endswith("@company.com"):
            return False, "External email requires approval."

    if tool_name == "database_query":
        query = args.get("query", "")
        forbidden = ["DROP ", "DELETE ", "TRUNCATE "]
        if any(word in query.upper() for word in forbidden):
            return False, "Destructive database operation blocked."

    if tool_name == "refund_customer":
        if args["amount"] > user_context["approval_limit"]:
            return False, "Refund amount requires human approval."

    return True, None

OpenAI 的 Agent 安全指南同样建议对 MCP 工具保持审批开启,以便终端用户能够审查和确认操作。

第 4 层:放行 / 人审 / 拦截 路由

二元的"安全/不安全"判定通常过于粗暴。更实用的生产模式是:

风险等级动作
放行
排队人审、发出警告或限制分发
拦截或要求申诉
EvoLink Moderation 返回的 evolink_summary.risk_level 字段就是为这种路由设计的。
def route_by_risk(content: str):
    result = client.moderations.create(
        model="evolink-moderation-1.0",
        input=content
    )

    risk = result.evolink_summary.risk_level

    if risk == "high":
        log_block(result)
        return {"action": "block"}

    if risk == "medium":
        queue_for_review(content, result)
        return {"action": "review"}

    return {"action": "allow"}
接口详情请参阅 EvoLink Moderation API 文档

完整的聊天机器人审核模式

以下是一个实用的端到端结构:

def handle_chatbot_turn(user_input: str, user_context: dict):
    # 1. Moderate input
    input_route = route_by_risk(user_input)
    if input_route["action"] == "block":
        return "I can't help with that request."
    if input_route["action"] == "review":
        log_review_event("input", user_input)

    # 2. Generate model response and proposed tool calls
    agent_result = agent.run(user_input, user_context)

    # 3. Validate tool calls before execution
    for call in agent_result.tool_calls:
        ok, reason = validate_tool_call(call.name, call.args, user_context)
        if not ok:
            log_security_event(call, reason)
            return "That action requires additional review."

    # 4. Execute approved tools
    tool_outputs = execute_tool_calls(agent_result.tool_calls)

    # 5. Generate final response
    final_answer = agent.format_response(tool_outputs)

    # 6. Moderate output
    output_route = route_by_risk(final_answer)
    if output_route["action"] == "block":
        return "I need to revise that response."
    if output_route["action"] == "review":
        queue_for_review(final_answer, output_route)

    return final_answer

具体实现因项目而异,但整体结构是稳定的:检查输入、约束操作、检查输出、记录决策。

处理误报

误报不可避免。目标是在减少伤害的同时,不过度拦截正常用户。

以下场景应进入人审队列:

  • 中等风险内容
  • 上下文不明确的内容
  • 政策敏感类别
  • 高价值用户或高影响操作
  • 申诉请求

每次审核决策都应记录足够的上下文以便后续排查:

  • 内容哈希
  • 用户 ID 或账户 ID
  • 风险等级
  • 触发的审核类别
  • 执行的动作
  • 人审覆写结果
  • 时间戳

除非有明确的数据保留和隐私政策,否则避免记录原始敏感内容。

对内部的合理承诺

不要承诺审核能让聊天机器人"100% 安全"。

更务实的承诺是:

  • 有害输入在模型执行前会被检查
  • 模型输出在展示给用户前会被检查
  • Agent 工具调用在执行前会被校验
  • 高风险或模糊的情况可以路由给人工处理
  • 日志和人审结果会用于持续优化阈值

这才是现实的生产安全姿态。

常见错误

错误 1:只审核输入

输入检查有用,但模型仍然可能生成不安全的内容。在展示给用户之前,务必审核输出。

错误 2:把 Prompt 当安全边界

系统 Prompt 能引导模型行为,但不应作为唯一的安全层。应结合工具权限、结构化工作流和审批机制。

错误 3:让 Agent 不经校验就执行工具调用

务必在模型之外校验工具调用。模型应该提议操作,而你的应用来决定该操作是否被允许。

错误 4:凡是不确定就全部拦截

过于严格的系统会造成用户挫败感。对不确定的内容,应该送人审而不是一律拦截。

错误 5:不记录日志

没有日志,你无法调优阈值、调查事故或理解误报。

上线检查清单

  • 在模型调用前审核用户输入。
  • 在展示给用户前审核模型输出。
  • 在执行前校验 Agent 工具调用。
  • 使用 放行 / 人审 / 拦截 路由策略。
  • 将中等风险内容排入人审队列。
  • 在需要时提供用户举报和申诉通道。
  • 记录风险等级、触发类别、执行动作和人审覆写。
  • 除非必要,避免存储原始敏感内容。
  • 用产品中的真实案例进行测试。
  • 上线后根据生产数据重新审视阈值。

FAQ

聊天机器人应该审核输入还是输出?

都要。输入审核在不安全的请求到达模型之前就将其拦截;输出审核在用户看到之前捕获不安全的生成内容。

内容审核能防止 Prompt 注入吗?

不能。审核可以捕获部分不安全或可疑内容,但 Prompt 注入需要更全面的防御手段,包括工具调用校验、结构化输出、最小权限原则、人工审批和工作流隔离。

AI Agent 中应该在哪里部署审核?

在模型处理之前对用户输入做审核,在展示之前对模型输出做审核,同时结合工具调用校验来覆盖 Agent 执行的每一个操作。

EvoLink Moderation 1.0 提供兼容 OpenAI 的审核端点,通过 evolink_summary.risk_level 字段让你更方便地将聊天内容路由到 放行、人审 或 拦截 流程。

还需要人工审核吗?

对于生产系统,是的。人工审核在申诉处理、中等风险判定、政策变更和高影响决策中不可或缺。

相关审核指南

Explore EvoLink Moderation 1.0

准备好把 AI 成本降低 89% 吗?

现在就开始使用 EvoLink,体验智能 API 路由的强大能力。