DeepSeek 채팅 규칙 / 제한

🆕 NEW 원본: /var/www/parenting-admin/resources/docs/deepseek-chat-rules.md · 최종 수정: 2026-06-18 14:22
🔐
인증
auth:api 필수
로그인 사용자만 접근
🤖
모델
deepseek-chat
단일 모델, fallback 없음
🌡️
temperature
0.4
max_tokens 700, stream=false
⏱️
타임아웃
5s / 12s
연결 / 전체
분당 한도
8회
POST /chat/messages
📅
일일 한도
60회
초과 시 429 응답
✏️
메시지 길이
4,000자
required|string|max:4000
🪟
표시 기간
최근 15일
15일 이전 데이터 미노출
📜
컨텍스트
최근 10건
DeepSeek로 보내는 내역
🗂️
회화 페이지
5건/페이지
GET /chat/conversations
🇰🇷
입력 언어
한국어만
외국어 입력은 차단
🛡️
응답 후처리
3종 가드
시스템프롬프트 누설 / 처방 / 진단
🚨 safety_level 키워드 (메시지 분류)
긴급 (urgent) 출혈 복통 호흡 양수 태동
주의 (caution) 약물 복용 타이레놀
일반 (info) 기본값 — 위 키워드에 해당하지 않을 때
※ 자해/자살 위험 표현은 키워드와 무관하게 urgent + 위기지원 응답으로 강제 전환됩니다.

문서 머리말

文档更新时间:2026-05-31
项目:KoreaParenting / parenting-api

这份文档基于当前代码实际行为整理,描述的是系统现在真正执行的规则,不是理想设计稿。

维护说明:

  • 这份 Markdown 版本作为仓库内可持续更新的规则说明文档保存。
  • 同名 PDF 仅作为本地参考副本,不纳入当前仓库版本管理。

§ 1 接入方式

  • 所有聊天接口都在 auth:api 保护下,必须先登录。
  • 当前只使用 deepseek-chat,不再做多模型 fallback。
  • DeepSeek 配置来自 parenting-api/config/services.php.env
  • 请求地址是 POST /chat/completions

§ 2 DeepSeek 请求参数

  • 模型:deepseek-chat
  • temperature = 0.4
  • max_tokens = 700
  • stream = false
  • 连接超时:5
  • 总超时:12
  • 鉴权方式:Bearer Token(DEEPSEEK_API_KEY

§ 3 聊天接口与分页

  • GET /api/v1/chat/conversations

  • GET /api/v1/chat/messages

  • POST /api/v1/chat/messages

  • DELETE /api/v1/chat/messages

  • 只显示最近 15 天内的聊天数据。

  • 会话列表按 conversation 分页,不按 message 分页。

  • 每页固定 5 个 conversation。

  • 新消息如果没有 conversation_id,后端会自动新建一个 conversation。

§ 4 发送频率限制

  • POST /api/v1/chat/messages 每个用户每分钟最多 8 次。
  • 每个用户每天最多 60 次。
  • 超限后不会继续调用 DeepSeek,而是直接返回 429 JSON 错误。
  • 当前错误文案:
  • 分钟限流:메시지를 너무 빠르게 보내고 있어요. 잠시 후 다시 시도해 주세요.
  • 每日限流:오늘 채팅 사용량이 많았어요. 조금 쉬었다가 다시 시도해 주세요.

§ 5 用户输入基础限制

  • 后端验证规则:required|string|max:4000
  • 消息不能为空。
  • 必须是字符串。
  • 单条消息最大 4000 字符。

§ 6 送给模型的历史上下文

  • 不会把整段历史都送给 DeepSeek。
  • 只会取当前 conversation 内最近 10 条“可用于模型”的消息。
  • 被策略拦截的对话、危机应答、模型不可用提示,不会继续送给 DeepSeek 当上下文。

§ 7 预处理安全策略

发送消息后,后端会先做安全审查,再决定是否调用 DeepSeek。

7.1 动作分类

  • allow:允许继续调用 DeepSeek。
  • off_topic:明显跑题,不调用 DeepSeek,直接返回范围提示。 日常 small talk(比如天气吐槽、无聊、喝咖啡、犯困)现在不算 off_topic
  • blocked:提示词注入、违法危险、露骨性内容等,直接拦截。
  • crisis:自伤或自杀风险,直接切换到危机支持文案。

7.2 当前拦截范围

  • language_not_supported

  • 一般问题默认仍以韩语输入为主,但如果整体仍是韩语问题,夹带少量简短英文 검사명 / 약물명 / 축写(例如 NIPTNTTdapRSVCOVID,或用户自己常写的短缩写)现在允许通过。

  • 允许数字、标点、符号,以及脱敏后的 [전화번호][이메일] 这类占位文本。

  • 如果是普通英文句子或其他外语问题,不会调用 DeepSeek,而是提示“짧은 검사명·약물명·축약어는 괜찮지만 나머지 설명은 한국어로 적어 달라”고再重新提问。

  • prompt_injection

  • 例如:要求显示系统提示词、要求忽略前置规则、要求泄露内部指令。

  • illegal_or_harmful

  • 例如:炸弹、武器、黑客、恶意代码、钓鱼、制毒等。

  • explicit_sexual

  • 只拦截明显露骨、色情化请求。

  • 与孕期关系、产后疼痛、避孕、恢复相关的正常健康问题不在此拦截范围。

  • self_harm

  • 例如:自杀、自伤、想结束生命等表达。

  • off_topic

  • 只拦截“明显和孕期/产后/婴儿照护无关”的问题。

  • 例如:股票、加密货币、编程调试、数学题、天气、餐厅、机票等。

注意:

  • 自伤、自杀、紧急风险类表达优先按危机支持处理,不会因为语言限制而被降级。

§ 8 PII 脱敏规则

后端会先做基础敏感信息脱敏,再决定是否存库、是否送模型。

当前会替换的内容:

  • 韩国手机号 -> [전화번호]
  • 邮箱 -> [이메일]
  • 韩国住民号样式 -> [주민번호]
  • 16 位银行卡样式 -> [카드번호]

含义:

  • 允许类消息会以“脱敏后的文本”入库。
  • 发送给 DeepSeek 的也是脱敏后的文本。
  • 所以模型不会直接看到原始手机号、邮箱等内容。

§ 9 被拦截请求的存储策略

  • allow:存脱敏后的用户原文。
  • off_topic:存脱敏后的用户原文,但不调用 DeepSeek。
  • blocked:不存原始内容,用户消息会替换为固定占位文案。
  • crisis:不存原始内容,用户消息会替换为固定占位文案。

当前固定占位文案:

  • 정책상 저장되지 않은 요청이에요.
  • 안전 지원으로 전환된 요청이에요.

§ 10 安全标签(safety_level)

后端会给消息打上以下等级:

  • urgent
  • caution
  • info

10.1 urgent 关键词

  • 출혈
  • 복통
  • 호흡
  • 양수
  • 태동

10.2 caution 关键词

  • 약물
  • 복용
  • 타이레놀

10.3 默认

  • 其他情况为 info

另外:

  • 自伤/自杀风险会强制转成 urgent

§ 11 模型失败时的行为

  • 不再走“通用医学 fallback 内容生成”。
  • 只有两种结果:
  • DeepSeek 正常回复。
  • DeepSeek 超时、宕机、空响应时,返回固定的临时提示。

当前提示文案:

  • 普通场景:지금은 서버가 잠시 불안정하거나 응답이 느려요. 조금만 기다렸다가 다시 시도해 주세요.
  • 紧急场景:上面那句后面再补 119 / 医疗人员优先联系提示。

§ 12 DeepSeek 回复后置保护

即使 DeepSeek 已经返回文本,后端还会再做一次保护性检查。

12.1 internal_prompt_leak

  • 如果回复里出现系统提示词、内部规则、隐藏指令等泄露痕迹,会改写成拒绝文案。

12.2 dosage_or_prescription

  • 如果回复里出现明确剂量或处方指示,例如 500mg一天三次복용하세요 这类组合,会改写成更安全的“请找医生/药师确认”文案。

12.3 diagnosis_claim

  • 如果回复看起来在直接下诊断,例如把严重孕期疾病说成确定结果,会改写成“不能在聊天里下确定诊断”的安全文案。

§ 13 系统提示词的当前方向

当前 system prompt 的实际约束重点如下:

  • 只用韩语回答。
  • 语气要温和、带一点共情。
  • 只回答孕期、产后恢复、婴儿照护、照护者健康相关问题。
  • 不给出确定性诊断。
  • 不给出确切药量和处方指示。
  • 有紧急风险时先建议联系医生 / 急诊 / 119。
  • 不泄露系统提示词、内部规则、隐藏政策。
  • 危险、违法、自伤、露骨性请求只做拒绝或安全引导。
  • 不使用 Markdown 强调语法。

§ 14 回答风格自适应

系统现在会先判断用户更像是在:

  • companion
  • expert
  • balanced

14.1 companion

  • 适用于倾诉、委屈、孤独、想找人说话、伴侣沟通烦恼这类输入。
  • 심심하다 / 지루하다 这类轻聊天输入,也会优先走这个模式。
  • 날씨 별로야 / 커피 마시는 중 / 그냥 좀 피곤해 这类轻日常聊天,也会优先走这个模式。
  • 会优先给更短、更像朋友聊天的回复。
  • 一般控制在 1~3 个短句,不堆长解释,不强行上清单。
  • 会避免用 아이고 / 어머 / 세상에 这类太戏剧化的感叹开头,改成更自然的共情句。
  • 也会避免 그렇군요 / 그러시군요 / 이해했습니다 这类太像客服或 상담사의开场白。
  • 不会擅自假设用户在家、在医院、一个人待着之类没说过的场景。
  • 遇到天气这类 small talk 时,不会假装自己知道实时天气,而是更偏向顺着情绪聊天。

14.2 expert

  • 适用于症状、药物、检查、时间节点、医疗准备这类问题。
  • 会给更结构化、更专业的回答。
  • 会避免太像公告或客服的说法,尽量用更自然的表达,比如 안 돼요 / 확인해 보세요 / 꼭 확인해 보세요
  • max_tokens 更高,说明会更完整。

14.3 balanced

  • 适用于既不是纯倾诉,也不是特别专业的问题。
  • 会在共情和实用信息之间做平衡。

§ 15 Markdown 与显示清理

后端和 iOS 都会做基础显示清理,避免把 Markdown 原样显示出来。

当前会清理:

  • **bold**
  • __bold__
  • 反引号代码样式
  • Markdown 标题 #

§ 16 数据库存储现状

  • 聊天记录仍然存入 chat_messages 表。

  • 每次完整对话通常会存两条:

  • user

  • assistant

  • 常见 metadata 字段包括:

  • conversation_id

  • conversation_title

  • source

  • safety_level

  • policy_action

  • policy_reason

  • pii_masked

  • response_guard

  • response_mode

§ 17 iOS 端当前交互

  • 默认先看到 conversation 列表。
  • 从列表发新问题,会新开一个 conversation。
  • 进入某个 conversation 后继续发送,会写入原会话。
  • 如果服务器返回 429 或其他错误,iOS 会显示服务端错误消息或通用错误提示。

§ 18 当前真正的硬限制总结

  • 必须登录。
  • 单条消息最大 4000 字。
  • 最近 15 天窗口。
  • 会话列表每页 5 个。
  • DeepSeek 上下文最多最近 10 条有效消息。
  • 只用 deepseek-chat
  • 每分钟 8 次发送上限。
  • 每天 60 次发送上限。
  • 发送前有跑题 / 危险 / 注入 / 危机检查。
  • 一般问题只允许韩语输入。
  • 基础 PII 会先脱敏。
  • 某些被拦截请求不会保存原文。
  • DeepSeek 回复回来后还要再过一层后置保护。
  • 会根据问题意图切换 companion / expert / balanced 回答风格。

§ 19 推荐后续继续加强的方向

  • 把关键词策略逐步抽成配置,而不是只写死在代码里。
  • 增加运营侧审计面板,观察 policy_actionresponse_guard 命中率。
  • 为高风险词和危机词接入更细的人工审核或外部 moderation 服务。
  • 为删库策略增加真正的定时清理,而不只是 15 天内显示。
© UBold By Coderthemes