【大模型对话】大模型对话送审核心知识点

发布时间:2026/6/1 9:11:25

【大模型对话】大模型对话送审核心知识点 大模型对话送审 — 核心知识点提炼适用于 LLM 流式对话场景用户输入 模型输出异步送审违规时中断响应链路。一、核心概念1.1 什么是「大模型对话送审」在对话流程中将用户提问和模型流式生成的回答提交至内容审核服务通过异步事件回调驱动业务侧中断输出、通知客户端、记录审计日志。送审对象阶段送审内容触发时机输入送审用户问题发起 LLM 请求前输出送审累积的回答文本每个流式 chunk 到达时1.2 关键组件组件职责Audit Client / Service封装审核 API 调用、协程池、超时控制AuditEvent Channel异步接收审核结果通过 / 拒绝 / 异常IsAudit 开关控制当前会话是否启用审核Audit Config审核参数、生效范围、违规类型过滤规则interrupt / done Signal协程间协调审核失败 vs 对话正常结束1.3 审核结果类型PASSED → 审核通过继续正常流程 REFUSED → 审核不通过触发打断 ERROR → 审核服务异常通常仅记录日志不打断对话1.4 典型错误响应客户端收到统一错误标识如AUDIT_NOT_PASS提示用户修改输入后重试。二、实现原理 / 要点2.1 整体流程大模型审核服务对话 Handler客户端大模型审核服务对话 Handler客户端par[审核监听协程][流式输出协程]用户提问SubmitAudit(Question)发起流式请求Event(REFUSED)signal(interrupt)chunkSubmitAudit(accumulatedAnswer)推送内容审核失败 → 中断 提示2.2 审核开关按租户 / 应用灰度审核通常非全局开启通过配置白名单控制ifconfig.IsAuditEnabled(appId){req.IsAudittrue}支持热更新无需重新部署即可调整生效范围。2.3 Audit Client 初始化核心配置项参数含义max_worker_size审核任务协程池大小worker_wait_timeout协程等待超时event_buffer_size结果事件通道缓冲http_timeout审核 API 超时auditor:NewAuditor(WithMaxWorkerPoolSize(conf.MaxWorkers),WithHttpTimeout(conf.HttpTimeout),)result.AuditEventauditor.EventChannel2.4 输入送审语言识别送审前识别文本语言选择对应审核通道lang:DetectLanguage(question)// zh / en / unknownauditor.SubmitTextAudit(ctx,question,requestId,lang)常见策略统计 Unicode 中文字符与英文字母数量占比高者即为检测语言。2.5 输出送审流式增量 多语言处理每个流式 chunk 到达时提交累积全文answerTextchunk.Text auditText:answerText// 非中文回答拼接原问题交由审核侧翻译后识别ifchunk.Language!zh{auditTextauditTextquestion}auditor.SubmitTextAudit(ctx,auditText,requestId,chunk.Language)要点审核模型通常以中文为主非中文输出需附带上下文如原问题才能完成有效识别。2.6 异步协调双 Signal 模式用两个 channel 解耦「审核结果」与「流式输出」interrupt:make(chanstruct{})// 审核失败信号done:make(chanstruct{})// 对话完成信号协程 1 — 监听审核事件forevent:rangeauditEvent{ifevent.ResultREFUSED{if!shouldBlock(event.Reason){// 违规类型过滤continue}close(interrupt)auditor.Shutdown()writeAuditLog(event)return}}协程 2 — 等待打断或完成select{case-interrupt:output-Output{Err:AuditNotPass,IsEnd:true}case-done:close(interrupt)}协程 3 — 流式输出主逻辑deferclose(done)forchunk:rangellmStream{submitAudit(chunk)output-chunkifchunk.IsEnd{auditor.Shutdown()}}2.7 违规类型过滤并非所有「审核不通过」都触发打断可按违规类别配置白名单blockTypes:config.Get(filtered_content_types)// 例[politics, porn, fraud, illegal]if!contains(blockTypes,event.Reason){continue// 非目标类型忽略}close(interrupt)注意匹配方式需与审核服务返回的Reason格式对齐精确匹配 / 前缀匹配 / 包含匹配。2.8 客户端侧审核失败处理Handler 识别审核失败错误后通常执行推送提示消息— 告知用户内容不合规请修改后重试发送专用事件— 携带sensitive_content等标识供前端差异化展示中断输出链路— 停止流式推送、取消业务进程发送结束包— 若已开始分段输出补发isEndtrue收尾2.9 日志与监控场景处理方式审核不通过写审计日志 告警审核通过Info 日志审核异常Warn 日志不打断对话2.10 与主对话流程的关系前置过滤指令/无效输入检测→ 发起 LLM 请求 → 流式输出 ↑ 审核并行运行不阻塞 LLM 发起 ↓ 审核失败 → 异步 interrupt 打断后续输出审核与 LLM并行启动输入送审不等待结果前置过滤如指令识别命中时直接返回跳过审核审核失败通过 Signal异步打断而非同步阻塞 LLM 调用三、总结 / 注意事项3.1 设计要点双端送审— 输入 输出均覆盖降低内容风险漏检异步非阻塞— 审核与流式生成并行事件驱动打断灰度可控— 配置白名单 热更新按应用 / 租户逐步放量多语言适配— 语言检测 非母语输出拼接上下文送审精准过滤— 仅对指定违规类型触发打断减少误杀资源释放— 拒绝或正常结束时均关闭 Audit Client3.2 注意事项项说明审核异常不打断避免审核服务故障影响正常对话体验违规类型匹配规则配置值须与审核服务返回格式一致流式增量送审每 chunk 提交累积全文审核侧需容忍重复提交Shutdown 时机拒绝时立即释放正常IsEnd时也需释放防 goroutine 泄漏interrupt 只 close 一次多处 close 会 panic由唯一协程负责测试代码隔离Mock 敏感词注入逻辑不应进入生产环境配置热更新开关、违规类型、超时参数建议走配置中心支持动态调整3.3 可复用的模块划分模块职责Audit Client初始化、Submit、Shutdown、Event 通道Chat Handler送审触发、事件监听、interrupt 协调Stream Output流式推送、失败中断、结束包补发Config开关白名单、审核参数、违规类型过滤Language Utils语言检测、非中文翻译策略Audit Logger审计日志、告警、监控指标

相关新闻