> For the complete documentation index, see [llms.txt](https://docs.ggwp.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ggwp.com/chinese-simplified/api-wen-dang-liao-tian/biao-zhun-tao-can/liao-tian-api-v3.md).

# 聊天 API v3

\[ 基础 URL: `api.ggwp.com`]

`POST` /chat/v3/message

## **描述**

此 API 端点将处理输入消息、会话 ID 和用户 ID，以及可配置的过滤敏感度设置，并在 4 个层级返回信息：

* **消息详情** - 毒性内容存在与严重程度的指示，以及去除毒性后的输入消息的不同变体。
* **玩家详情** - 用于描述该特定用户在对话进行到该点之前行为的属性。这包括玩家情绪、声誉分数和当前状态。
* **对话摘要** - 说明该会话中先前活动的指标。这些包括会话时长、消息数量、参与者数量、对话情绪和检测到的事件总数。
* **建议** - 关于因历史或近期一系列有毒行为而对该特定用户施加的处罚的信息。这包括处罚本身、触发消息和时间，以及处罚时长。该 `recommended_message` 字段在处罚生效期间会返回空字符串。API 输出的这一部分将提供以下处罚：
  * 会话静音：该用户将在本次会话/比赛剩余时间内被静音。
  * 静音：该用户将在特定时长内在所有会话/比赛中被静音。

## **请求头**

配置设置可通过你的 GGWP 账户设置（推荐）或在每次请求时通过 HTTP 请求头动态提供。

<table><thead><tr><th width="219.04296875">请求头</th><th width="116.37890625">必填</th><th>描述</th></tr></thead><tbody><tr><td><strong>x-api-key</strong></td><td>是</td><td>用于身份验证的你的 GGWP API 密钥。</td></tr><tr><td><strong>Content-Type</strong></td><td>是</td><td>必须设置为 <code>application/json</code>.</td></tr><tr><td><strong>x-api-config</strong></td><td>可选</td><td>Base64 编码的 JSON 对象，包含每次请求的过滤敏感度设置。更多详情请参见下文。如果未提供，则使用默认设置或入职时设置。</td></tr></tbody></table>

#### 过滤敏感度设置（通过 `x-api-config`)

对于基于严重程度的类别，敏感度决定哪些严重程度级别会被屏蔽：

* `关闭` — 不过滤该类别
* `低` — 过滤 `高` 仅严重程度
* `中` — 过滤 `中` 和 `高` 严重程度
* `高` — 过滤 `低`, `中`，以及 `高` 严重程度

敏感度与严重程度成反比。敏感度越高，屏蔽的内容越多。

#### 支持的类别

<details>

<summary><code>年龄披露</code> <em>[关闭 | 低 | 中 | 高]</em></summary>

标记用户显式或隐式表明自己年龄的消息。此类别用于信息提示，并支持基于年龄的安全控制，而非有害意图检测。

**严重程度分类**

* `高严重程度` — 表明用户未满 `13`
* `中等严重程度` — 表明用户未满 `18` 但至少 `13`
* `低严重程度` — 表明用户未满 `21`

**按严重程度示例**

* `高严重程度` — `“我 10 岁”`, `“我 12 岁”`, `“我在上小学”`, `“我是个小孩”`
* `中等严重程度` — `“我 15 岁”`, `“我 17 岁”`, `“我在上高中”`, `“我是未成年人”`
* `低严重程度` — `“我 19 岁”`, `“我还不到 21 岁”`, `“我还不能合法饮酒”`, `“我 20 岁”`

</details>

<details>

<summary><code>毒品</code> <em>[关闭 | 低 | 中 | 高]</em></summary>

标记涉及非法毒品、滥用受管制物质或鼓励吸毒行为的语言。

**严重程度分类**

* `高严重程度` — 出售非法毒品或协助获取毒品
* `中等严重程度` — 关于吸毒的鼓励、建议或指导
* `低严重程度` — 对吸毒的随意提及或玩笑，未包含鼓励或说明

**按严重程度示例**

* `高严重程度` — `“私信我买大麻”`, `“我能给你便宜地弄到药片”`, `“我卖可卡因，需要的话找我”`
* `中等严重程度` — `“你应该试试可卡因”`, `“我怎么弄到蘑菇？”`, `“一起嗨起来吧”`
* `低严重程度` — `“420 哈哈”`, `“我现在嗨着呢”`, `“大麻氛围”`

</details>

<details>

<summary><code>极端主义</code> <em>[关闭 | 低 | 中 | 高]</em></summary>

标记支持、歌颂、为现实世界中的极端主义意识形态、组织或大规模暴力行为辩护或宣传的语言。这包括对宣扬针对现实世界群体的暴力、仇恨或歧视的运动进行赞美、宣传、招募或辩护。

**严重程度分类**

* `高严重程度` — 宣传或倡导极端主义意识形态、组织或暴力
* `中等严重程度` — 为极端主义意识形态或大规模暴力辩护或使其常态化
* `低严重程度` — 对极端组织、意识形态或历史事件的随意提及或非支持性提及

**按严重程度示例**

* `高严重程度` — `“希特勒万岁”`, `“犹太人去死”`, `“杀死黑人”`, `“加入三 K 党”`, `“ISIS 是对的”`, `“我们需要再来一次种族灭绝”`, `“巴勒斯坦人都应该被消灭”`, `“见到的每个犹太复国主义者都杀掉”`, `“把乌克兰人全都消灭”`, `“台湾人应该被碾碎”`, `“我们需要通过种族清洗来修复这个国家”`
* `中等严重程度` — `“希特勒被误解了”`, `“种族灭绝也没那么糟”`, `“三 K 党有些想法还是不错的”`, `“白人至上主义有道理”`, `“我觉得哈马斯确实有道理”`, `“那些袭击是不对，但我理解为什么平民会成为目标”`, `“也许为了和平，应该把巴勒斯坦人都消灭掉”`, `“反正伊朗人只懂武力”`, `“乌克兰这个国家就应该被抹去”`, `“台湾不配存在”`, `“把所有穆斯林驱逐出欧洲会解决很多问题”`
* `低严重程度` — `“你是纳粹”`, `“语法纳粹”`, `“三 K 党是个真实存在的组织”`, `“9/11 涉及很多恐怖分子”`, `“那家伙的行为像个独裁者”`

</details>

<details>

<summary><code>游戏表现批评</code> <em>[关闭 | 低 | 中 | 高]</em></summary>

标记关于另一位玩家在游戏中的表现、决策或技术的负面评论。与言语辱骂不同，这里的主要关注点是游戏表现，而不是玩家个人价值。

**严重程度分类**

* `高严重程度` — 由游戏表现引发、并升级为贬低性人身攻击的严重言语辱骂
* `中等严重程度` — 围绕游戏表现展开的人身攻击
* `低严重程度` — 竞争性调侃或对游戏表现的轻微不满，但没有强烈的人身攻击

**按严重程度示例**

* `高严重程度` — `“你玩这游戏就是个一文不值的废物”`, `“你每局都他妈地没用得要死”`, `“你在排位里简直就是人渣”`, `“你玩得就像个彻头彻尾的他妈白痴”`
* `中等严重程度` — `“你没用”`, `“你是垃圾”`, `“你这他妈的菜鸟”`, `“删游戏吧”`, `“这家伙玩得就像没有手一样”`
* `低严重程度` — `“你这点都玩不好”`, `“学学怎么瞄准吧”`, `“那波打得太差了”`, `“你刚才为什么要往那里冲？”`, `“别再送了，你在毁掉这局比赛”`, `“你在故意搞崩比赛”`, `“卧槽，点一下敌人有这么难吗”`

</details>

<details>

<summary><code>基于身份的伤害</code> <em>[关闭 | 低 | 中 | 高]</em></summary>

标记贬低、歧视或针对基于非性别身份属性的个人或群体的语言。这包括种族、族裔、国籍、宗教、种姓、残障、性取向、严重疾病、年龄和移民身份。这些表达会营造敌对或不安全的环境，并可能强化更广泛的歧视、排斥或紧张关系。

**严重程度分类**

* `高严重程度` — 针对受保护群体的辱骂、非人化或暴力号召
* `中等严重程度` — 以身份为基础的攻击，贬低、排斥或赋予负面特征
* `低严重程度` — 轻微偏见、刻板印象或基于身份的随意表达

**按严重程度示例**

* `高严重程度` — 种族辱骂， `“我讨厌同性恋者”`, `“穆斯林都该死”`, `“所有[种族]都是动物”`
* `中等严重程度` — `“移民正在毁掉这个地方”`, `“穆斯林不可信”`, `“同性恋者恶心死了”`
* `低严重程度` — `“那也太基了”`, `“你们亚洲人肯定都很擅长数学”`, `“兄弟，你表现得像个自闭症患者一样”`, `“你是同性恋”`

</details>

<details>

<summary><code>链接</code> <em>[关闭 | 中 | 高]</em></summary>

标记包含外部链接的消息，以防玩家分享不适当的网站、广告、诈骗或其他可能有害的内容。

`中` 过滤与常见不适当或成人内容相关的 URL。 `高` 过滤所有 URL。

</details>

<details>

<summary><code>未成年人安全</code> <em>[关闭 | 低 | 中 | 高]</em></summary>

标记可能使未成年人处于风险中的语言，例如表现出诱骗行为、掠夺性意图、对未成年人进行性化，或试图剥削、操纵或危害儿童。这也包括对儿童剥削或性虐待的提及，但不包括第一人称披露或潜在受害者的陈述。无论对话中是否存在未成年人，此类别都会捕捉对未成年人的风险。

**严重程度分类**

* `高严重程度` — 对未成年人进行性剥削、CSAM，或明确的性化针对
* `中等严重程度` — 诱骗信号或不适当的成人-未成年人互动
* `低严重程度` — 边界测试、未成年人安全问题，或涉及儿童剥削或性虐待的提及

**按严重程度示例**

* `高严重程度` — `“我喜欢小孩的性方面”`, `“应该早点教孩子性知识”`, `“我想和未成年人上床”`, `“小孩子才更适合当伴侣”`, `“我喜欢虐待孩子”`, `“我有 10TB 的 cp”`, `“等不及要看未成年女孩了”`
* `中等严重程度` — `“你看起来比你这个年纪成熟”`, `“别告诉你父母我们在聊天”`, `“你可以比你父母更信任我”`, `“我们去一个大人看不到的地方聊”`, `“你看起来比同龄人更成熟”`
* `低严重程度` — `“你有男朋友吗？”`, `“这事我们自己知道就行”`, `“你上哪个学校？”`, `“你一个人在家吗？”`, `“你到底几岁？”`, `“你是恋童癖”`, `“他因恋童癖被逮捕了”`, `“我无法想象被诱骗针对会是什么感觉”`

</details>

<details>

<summary><code>冒犯性语言</code> <em>[关闭 | 低 | 中 | 高]</em></summary>

标记不针对他人的脏话、粗俗表达或下流词汇。这包括单独的咒骂、情绪爆发，或关于情境、物体或游戏环境的露骨语言。冒犯性语言关注的是语气，而不是对象。

**严重程度分类**

* `高严重程度` — 作为一般表达使用的露骨、极端或性化脏话
* `中等严重程度` — 强烈但不针对任何人的明确咒骂
* `低严重程度` — 用于反应或强调观点的轻微咒骂或随口脏话

**按严重程度示例**

* `高严重程度` — `“他妈的这堆恶心玩意儿”`, `“这 boss 去他妈的吧”`, `“我他妈的好饥渴”`, `“这简直是色情片级别的垃圾”`, `“这到底是什么鬼节目”`
* `中等严重程度` — `“他妈的”`, `“这游戏真他妈蠢”`, `“我气炸了”`, `“这玩意儿完蛋了”`
* `低严重程度` — `“靠”`, `“太好了”`, `“靠”`, `“这太扯了”`, `“搞什么鬼”`, `“卧槽”`

</details>

<details>

<summary><code>个人身份信息</code> <em>[关闭 | 中 | 高]</em></summary>

标记包含个人可识别信息的消息。这包括银行账号、信用卡、电子邮件地址、电话号码和实际地址。

`中` 基于已识别的模式和上下文，过滤那些明显包含个人身份信息的内容。 `高` 过滤所有符合常见个人身份信息格式的内容，不论置信度如何。

</details>

<details>

<summary><code>真实威胁</code> <em>[关闭 | 低 | 中 | 高]</em></summary>

标记表达可信、严重或可能可执行的现实世界暴力计划或意图的语言。这包括涉及武器、爆炸物、学校、工作场所、公共场所、组织或游戏语境之外个人的威胁。与一般暴力不同，真实威胁会显示意图、计划、能力或紧迫性，可能需要紧急升级处理。

**严重程度分类**

* `高严重程度` — 对现实世界暴力的直接、可信或迫近威胁
* `中等严重程度` — 含糊、令人担忧或带有准备性质的陈述，暗示存在计划、能力或目标
* `低严重程度` — 不含可执行细节的推测性或不可信的暴力陈述

**按严重程度示例**

* `高严重程度` — `“我计划明天炸掉这所学校”`, `“我早上要带枪去校园”`, `“我要去把我的工作场所扫射了”`, `“我现在就在做管式炸弹”`, `“我要杀掉那个活动里的所有人”`
* `中等严重程度` — `“我知道怎么用家用材料做炸弹”`, `“如果我想，我可以带枪去学校”`, `“我一直在想明天搞点大事”`, `“我学校里的人很快就不会安全了”`
* `低严重程度` — `“这里说不定会被炸，哈哈”`, `“我感觉想把一切都炸飞”`, `“想象一下要是有人把这个服务器扫射了”`

</details>

<details>

<summary><code>诈骗</code> <em>[关闭 | 低 | 中 | 高]</em></summary>

标记试图通过欺骗、冒充或欺诈性方案获取金钱、数字资产、账号或敏感信息的消息。诈骗依赖误导性声明、虚假权威或操纵手段，诱骗用户交出有价值的东西。

**严重程度分类**

* `高严重程度` — 通过网络钓鱼、冒充或欺诈性指示窃取凭据或进行金融诈骗
* `中等严重程度` — 用于获取金钱、资产或账号的欺诈性方案或虚假优惠
* `低严重程度` — 关于保证奖励、漏洞利用或不现实机会的可疑或误导性说法

**按严重程度示例**

* `高严重程度` — `“这是 Steam 客服，把你的密码发给我来验证账号”`, `“在这里输入你的信用卡来解锁奖品”`, `“把你的双重验证代码发给我，我好帮你找回账号”`, `“登录这里确认你的账号，否则会被封禁”`
* `中等严重程度` — `“我是游戏版主，把你的账号发给我，我来修复它”`, `“把你的皮肤发给我，我可以帮你复制”`, `“登录这个网站领取你的免费奖励”`, `“把你的物品发给我，我给你翻倍”`
* `低严重程度` — `“这个策略保证你每次都赢”`, `“我找到了战胜赌场算法的秘密方法”`, `“用这个技巧总能赢头奖”`, `“这个网站保证每天都能提现”`

</details>

<details>

<summary><code>自残煽动</code> <em>[关闭 | 低 | 中 | 高]</em></summary>

标记鼓励、宣传、歌颂或施压他人进行自残或自杀的语言。这包括直接命令、间接鼓励，或淡化自残严重性的轻蔑说法。

**严重程度分类**

* `高严重程度` — 对自残或自杀的露骨、说明性或可执行的煽动
* `中等严重程度` — 使用常见、非露骨语言的直接煽动
* `低严重程度` — 间接或暗示性的自残或自杀鼓励

**按严重程度示例**

* `高严重程度` — `“割开你的静脉”`, `“上吊自杀”`, `“把这些药吃了你就会死”`, `“这是教你怎么自杀”`, `“割开手腕直到流血身亡”`
* `中等严重程度` — `“去死吧”`, `“kys”`, `“你应该去自杀”`, `“算了，死了对大家都是种帮助”`, `“你还是赶紧结束生命吧”`
* `低严重程度` — `“也许你不在这里会更好”`, `“如果你消失了，没人会在意”`, `“没有你，世界会更好”`, `“你应该永远消失”`

</details>

<details>

<summary><code>色情内容</code> <em>[关闭 | 低 | 中 | 高]</em></summary>

标记不针对其他玩家的性语言、提及或描述。这包括隐晦性暗示、露骨内容，或一般性地表达、关于自己的性讨论。

**严重程度分类**

* `高严重程度` — 广泛分享、没有特定目标的露骨或极端性内容
* `中等严重程度` — 不针对其他用户的露骨性语言
* `低严重程度` — 没有目标的轻微性提及或隐晦暗示

**按严重程度示例**

* `高严重程度` — 详细描述露骨性交行为、重口味色情内容、露骨性幻想
* `中等严重程度` — `“他们整晚都在做爱”`, `“我欲火焚身”`, `“我想做爱”`, `“他说的是口交”`, `“那部电影有很多口交镜头”`
* `低严重程度` — `“性感操作”`, `“大阴茎”`, `“兄弟，那爽到高潮了”`, `“我在给这个角色当舔狗”`, `“这就是她说的那种”`, `“色情片真离谱”`

</details>

<details>

<summary><code>性骚扰</code> <em>[关闭 | 低 | 中 | 高]</em></summary>

标记针对特定个人或其家人的性语言或行为。这包括性评论、性暗示、带有性意味的侮辱，或将目标性化、物化、施压或贬低的冒犯性语言。

**严重程度分类**

* `高严重程度` — 针对某人的胁迫性或性羞辱性语言，但不包含明确的性暴力
* `中等严重程度` — 针对某人或其家人的明确性暗示或性化陈述
* `低严重程度` — 带有性意味的侮辱、调情，或轻微的定向性评论

**按严重程度示例**

* `高严重程度` — `“发裸照，不然……”`, `“我会把你的裸照发给所有人”`, `“你欠我性”`, `“你是我的小荡妇”`, `“为我摸自己”`
* `中等严重程度` — `“我想操你”`, `“给我看看你的胸”`, `“我们约一下吧”`, `“我想操你妈”`, `“让我看看你的身体”`, `“给我发上半身裸照”`
* `低严重程度` — `“你很性感”`, `“天哪，你看起来好辣”`, `“我想和你交往”`, `“你挺可爱的，说实话”`, `“你是个绿帽奴”`, `“你妈很辣”`, `“我想睡你姐”`

</details>

<details>

<summary><code>性暴力</code> <em>[关闭 | 低 | 中 | 高]</em></summary>

标记提及、威胁、歌颂或描述涉及暴力、强迫、胁迫或非自愿的性行为的性语言。这包括针对性和泛指性陈述。

**严重程度分类**

* `高严重程度` — 具象、露骨或可实施的性暴力
* `中等严重程度` — 对性暴力的正常化或支持
* `低严重程度` — 对性暴力的非具象提及

**按严重程度示例**

* `高严重程度` — `"我要强奸你"`, `"我要把你按倒并强行侵犯你"`, `"我想对她进行性虐待"`, `"我要操你直到你流血"`, `"她活该被强奸"`, `"我要割掉你的蛋蛋，看着你流血"`
* `中等严重程度` — `"强奸能让人变好"`, `"他们应该受到性惩罚"`, `"我们刚被强奸了"`, `"作弊者应该被阉割"`
* `低严重程度` — `"强奸在社会中无处不在"`, `"这个故事讲的是性侵"`, `"那个情节涉及强奸"`

</details>

<details>

<summary><code>招揽</code> <em>[关闭 | 低 | 中 | 高]</em></summary>

标记试图获取个人信息、将用户引导至平台外、攫取现实价值或推广未经授权商业活动的消息。这包括直接请求、交易性提议、招募尝试和广告。

招揽侧重于攫取价值或转移互动的意图，而非欺骗；欺骗归入“诈骗”。

**严重程度分类**

* `高严重程度` — 未经授权的商业活动或直接的金钱请求，尤其是平台外
* `中等严重程度` — 涉及服务、资产或外部平台的商业或交易性提议
* `低严重程度` — 轻度的平台外请求或低风险推广消息

**按严重程度示例**

* `高严重程度` — `"通过 PayPal 给我发 100 美元"`, `"先付钱，我再把物品给你"`, `"把钱电汇给我"`, `"把加密货币发到这个钱包"`
* `中等严重程度` — `"我卖便宜的游戏金币"`, `"付我钱，我帮你冲排名"`, `"买我的账号"`, `"加入我的付费 Discord 服务器"`, `"私信我交易皮肤"`
* `低严重程度` — `"我们在 WhatsApp 上聊吧"`, `"在 Discord 上加我"`, `"关注我的主页，获取更好的技巧"`, `"如果你想看不错的配装，就看看我的频道"`, `"我把所有爆料都发在我的 Telegram 里"`, `"加入我的服务器，比这个更好"`

</details>

<details>

<summary><code>垃圾信息</code> <em>[关闭 | 低 | 中 | 高]</em></summary>

标记重复、无关或无意义的消息，这些消息会使聊天内容变得杂乱或受到干扰。这包括高频发布、胡言乱语以及自动化或机器人式行为。

**严重程度分类**

* `高严重程度` — 由于数量、密度或视觉冲击而淹没聊天的过量无意义内容
* `中等严重程度` — 在短时间窗口内的高频或重复性干扰
* `低严重程度` — 轻度重复、乱码或低噪音垃圾信息

**按严重程度示例**

* `高严重程度` — 大段 ASCII 文字墙、表情洪流或长串随机符号
* `中等严重程度` — 由以下任一情况触发：
  * 高频消息—— `10+` 在…… `5` 秒内的消息
  * 完全重复—— `3` 在…… `10` 秒内的消息
* `低严重程度` — `"lol lol lol lol lol"`, `"asdfasdfasdf"`, `"😂😂😂😂😂"`, `"hello world hello world hello world"`

</details>

<details>

<summary><code>言语辱骂</code> <em>[关闭 | 低 | 中 | 高]</em></summary>

标记侮辱、起绰号或旨在贬低、轻视或在情感上伤害另一名用户的语言。这包括针对智力、能力、外貌或个人价值的攻击。与身份仇恨不同，言语辱骂不涉及受保护特征。

**严重程度分类**

* `高严重程度` — 极端骚扰、侮辱性攻击或非人化
* `中等严重程度` — 表达愤怒、轻蔑或攻击性的强烈人身攻击
* `低严重程度` — 针对另一名玩家的轻度辱骂或常见的竞技斗嘴

**按严重程度示例**

* `高严重程度` — `"你就是个一文不值的狗屎"`, `"你简直就是人渣"`, `"你真可悲，没人想让你待在这儿"`, `"你这个他妈的废物，纯粹是浪费空间"`, `"你低等得不配称人"`, `"你活着就是浪费生命"`, `"所有人都讨厌你"`, `"去自杀吧，废物"`, `"你不过是坨狗屎"`
* `中等严重程度` — `"去你妈的"`, `"他妈的闭嘴"`, `"下地狱去吧"`, `"你这个该死的混蛋"`, `"吃屎去吧"`, `"没人喜欢你"`
* `低严重程度` — `"你太烂了"`, `"菜鸟"`, `"你太菜了"`, `"笑死，你就是个垃圾"`

</details>

<details>

<summary><code>暴力</code> <em>[关闭 | 低 | 中 | 高]</em></summary>

标记引用、宣扬、美化或描述针对个人或群体的身体伤害的语言。此类别涵盖不一定构成迫在眉睫或可信威胁的暴力表达。

**严重程度分类**

* `高严重程度` — 具象、残暴或施虐性的暴力
* `中等严重程度` — 露骨的暴力伤害或支持，但不含具象细节
* `低严重程度` — 用于比喻或语境中的非具象暴力表达

**按严重程度示例**

* `高严重程度` — `"我喜欢看人受伤时尖叫"`, `"把他的头骨砸碎，直到脑浆洒满地板"`, `"想象把人切开，看着里面的一切流出来"`, `"我想把他一块一块撕碎"`, `"看着他们流血至死很解压"`
* `中等严重程度` — `"该有人揍你一顿"`, `"你活该挨揍"`, `"我会把你打惨"`, `"我希望你受伤"`, `"你迟早会被狠狠干一顿"`
* `低严重程度` — `"这回合我要把你狠狠干掉"`, `"我会把你们打爆"`, `"我们被血洗了"`, `"那个 boss 又把我杀了"`

</details>

#### **传入配置**

1. 示例 JSON (`config.json`)

   ```json
   {
   	"age_disclosure": "关闭",
   	"drugs": "关闭",
   	"extremism": "高",
   	"gameplay_criticism": "高",
   	"identity_harm": "中",
   	"links": "高",
   	"minor_safety": "低",
   	"offensive_language": "高",
   	"pii": "关闭",
   	"real_threat": "高",
   	"scam": "关闭",
   	"self_harm_incitement": "高",
   	"sexual_content": "低",
   	"sexual_harassment": "高",
   	"sexual_violence": "高",
   	"solicitation": "关闭",
   	"spam": "高",
   	"verbal_abuse": "中",
   	"violence": "关闭"
   }
   ```
2. 将 JSON 进行 Base64 编码

   ```bash
   base64 config.json
   ```
3. 编码后的示例输出

   ```
   <base64-encoded config.json>
   ```
4. 示例 curl 请求

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">curl --request POST 'https://api.ggwp.com/chat/v3/message' \\
     --header 'x-api-key:&#x3C;API_KEY>' \\
     --header 'Content-Type: application/json' \\
     --header 'x-api-config: &#x3C;base64-encoded config.json>' \\
     --data-raw '{
       "session_id": "match_7765", 
       "message": "fucking retards everywhere",
       "user_id": "user989", 
       "username": "nlxdz",
       "timestamp": "2022-01-25 09:44:12"
     }'
   </code></pre>

#### **默认配置**

如果 `x-api-config` 未提供该 header：

```json
{
	"age_disclosure": "高",
	"drugs": "高",
	"extremism": "高",
	"gameplay_criticism": "高",
	"identity_harm": "高",
	"links": "高",
	"minor_safety": "高",
	"offensive_language": "高",
	"pii": "高",
	"real_threat": "高",
	"scam": "高",
	"self_harm_incitement": "高",
	"sexual_content": "高",
	"sexual_harassment": "高",
	"sexual_violence": "高",
	"solicitation": "高",
	"spam": "高",
	"verbal_abuse": "高",
	"violence": "高"
}
```

## **参数**

`请求体`: 包含以下字段的字典：\
(*需要使用 utf-8 编码）*

* **session\_id：** 会话通道的唯一标识符。对于游戏消息，这可以标识在一场比赛中展开的对话。在论坛或留言板上，这可以代表一个独立的主题或讨论。如果你的平台包含多种通道类型（例如：大厅、比赛、私信等），我们建议你在 session\_id 中包含这些信息，以便按对话类型进行进一步分析。建议格式如下：

  ```json
    session_id = "channelType_numericID"
  ```
* **message：** 用户在对话中发送的消息。不能超过 1,000 个字符。
* **user\_id：** 发送该消息的玩家或用户的唯一标识符。
* （可选） **username**：用户选择的友好显示名字符串。
* （可选） **timestamp**：消息发生的时间，采用 UTC 时区的 YYYY-MM-DD HH:MM:SS.SSS 或 YYYY-MM-DD HH:MM:SS 格式。如果未添加，则会由服务器端 UTC 时间戳代替。
* （可选） **language**：要处理的消息语言。如果省略，API 将尝试根据消息内容和先前的用户历史来检测语言。接受标准英语语言名称（例如： `"英语"` 或 `"西班牙语"`），以及 ISO 639-1 两字母语言代码（例如：  `"en"` 或 `"es"`）。完整区域标签，如 `"en-US"`, `"en-GB"`, `"pt-BR"`，以及 `"es-MX"` 目前不支持；请发送 `"en"`, `"pt"`，或 `"es"` 代替。
* （可选） **message\_index**：用于跟踪所发送消息的字符串字段。如果传入，则会包含在输出中的 `message_details` 下。
* （可选） **message\_url**：用于跟踪标记到消息上的 URL 的字符串字段。仅 http 或 https 协议有效。如果有效并且传入，将会在仪表板中可见。
* （可选） **metadata**：用于跟踪与消息相关的任何元数据的字典字段。必须小于 5KB。只有允许的键及其对应类型才有效。支持的键：

  * channel（字符串）- 消息传递到的通信空间。例如 dm、party、guild、local
  * participants（数组\<string>）- 参与该频道的 user\_id
  * map（字符串）- 消息来源的世界、关卡或环境的标识符或名称
  * map\_version（字符串）- 地图的版本标识符，用于跟踪布局等变化。
  * zone（字符串）- 地图内的子区域或命名区域，用于更细粒度的位置上下文
  * coordinates（对象）- 地图或区域内的空间位置
    * x（浮点数）- X 轴方向的位置
    * y（浮点数）- Y 轴方向的位置
    * z（浮点数）- Z 轴方向的位置

  示例：

  ```json
  {
    "metadata": {
      "channel": "dm",
      "participants": ["user989", "user990"],
      "map":"golden_wasteland",
      "map_version":"2026.03.1",
      "zone":"cacti_forest",
      "coordinates":{
         "x":123.45,
         "y":67.89,
         "z":-10.25
      }
    }
  }
  ```

  注意：可以支持更多元数据键。请与你的客户代表合作，定义适用于你平台的具体键。

示例：

```json
{
  "session_id": "match_7765",
  "message": "fucking retards everywhere",
  "user_id": "user989",
  "username": "nlxdz",
  "timestamp": "2022-06-02 16:49:02"
}
```

示例调用：

```bash
curl --request POST 'https://api.ggwp.com/chat/v3/message' \\
--header 'x-api-key: api_key' \\
--header 'Content-Type: application/json' \\
--data-raw '{
  "session_id": "match_7765",
  "message": "fucking retards everywhere",
  "user_id": "user989",
  "username": "nlxdz",
  "timestamp": "2022-06-02 16:49:02"
}'
```

## **输出**

#### 200 响应

返回一个包含以下顶层字段的 JSON 对象：

<details>

<summary><code>message_details</code></summary>

输入载荷的消息级审核结果。

* `message_id` — 分配给该消息的唯一标识符
* `original_message` — 用户发送的原始消息
* `flag` — `true` 如果该消息被任何已配置类别标记
* `严重程度` — 分配给该消息的整体严重程度。可能的取值： `无`, `极低`, `低`, `中`, `高`, `极高`，以及 `自定义`
  * `自定义` 当 GGWP 未标记该消息，但客户端自定义黑名单中的某个词条命中时使用
* `confidence` — 整体消息级检测的置信度。可能的取值： `无`, `低`, `中`，或 `高`
* `filtered_message` — 已过滤掉标记词条后的消息版本
  * 对于像英语这样以空格分隔的语言，会过滤完整单词。示例： `You are a shithead` → `You are a *****`
  * 对于没有明确单词边界的语言，只会过滤检测到的词条。示例： `좆까고 있네` → `*****고 있네`
* `recommended_message` — 建议向客户端展示的消息版本。对于活跃用户，默认值为 `filtered_message`。对于已禁言用户，这将是空字符串
* `language` — 检测到的消息语言
* `flagged_categories` — 消息中发现的类别检测列表。每个项目包括：
  * `category` — 为检测到的内容分配的类别
  * `category_severity` — 该检测的类别特定严重程度。可能的取值： `无`, `低`, `中`，或 `高`
    * 某些类别可以在不附带严重程度的情况下被标记。在这些情况下， `category_severity` 为 `无`
* `custom_flag` — `true` 如果消息包含自定义黑名单词条

</details>

<details>

<summary><code>player_details</code></summary>

当前 session\_id 下该 user\_id 的汇总审核和行为数据 `user_id` 在当前 `session_id`.

* `user_id` — 用户的唯一标识符
* `username` — 用户的显示名称
* `num_messages` — 用户在该会话中发送的消息总数
* `num_incidents` — 与该用户相关的事件总数
* `cumulative_mood` — 用户消息的整体情绪分数
* `min_mood` — 用户消息中观察到的最低情绪值
* `max_mood` — 用户消息中观察到的最高情绪值
* `reputation_score` — 基于先前行为得出的整体声誉分数
* `languages` — 从用户消息中检测到的语言
* `user_status` — 用户当前的审核状态
  * `status` — 当前应用的审核状态，例如 `活跃` 或 `禁言`
  * `expiry_at` — 当前审核状态失效的时间

</details>

<details>

<summary><code>conversation_summary</code></summary>

当前会话的汇总审核和活动数据 `session_id`.

* `start_time` — 对话会话开始时的时间戳
* `session_duration` — 对话总持续时间（秒）
* `num_messages` — 对话中的消息总数
* `num_participants` — 对话中的用户总数
* `num_incidents` — 对话中检测到的事件总数
* `conversation_mood` — 对话的整体情绪分数

</details>

<details>

<summary><code>recommendations</code></summary>

按以下键分类的推荐审核操作 `user_id`。每个 `user_id` 都映射到一个推荐对象数组。

* `<user_id>[].action` — 建议的审核操作，例如 `禁言`
* `<user_id>[].trigger_message` — 触发该建议的违规消息
* `<user_id>[].trigger_time` — 触发消息的时间戳
* `<user_id>[].duration` — 该操作应保持生效的时长，单位为秒

</details>

示例输出：

```json
{
  "message_details": {
    "message_id": "20220602164902.482311-946bb8a9-0766-4c31-995a-d910da8531e5",
    "original_message": "到处都是该死的傻逼基佬",
    "flag": true,
    "severity": "中等",
    "confidence": "高",
    "filtered_message": "*****",
    "recommended_message": "",
    "language": "英语",
    "flagged_categories": [
      {
        "category": "身份伤害",
        "category_severity": "中等"
      },
      {
        "category": "冒犯性语言",
        "category_severity": "高"
      }
    ],
    "custom_flag": false
  },
  "player_details": {
    "user_id": "user989",
    "username": "nlxdz",
    "num_messages": 11,
    "num_incidents": 6,
    "cumulative_mood": 0.748,
    "min_mood": 0.0,
    "max_mood": 0.8615,
    "reputation_score": 245,
    "languages": [
      "英语"
    ],
    "user_status": {
      "status": "已静音",
      "expiry_at": "2022-06-03 16:49:00"
    }
  },
  "conversation_summary": {
    "start_time": "2022-05-27 16:53:03",
    "session_duration": 59,
    "num_messages": 46,
    "num_participants": 3,
    "num_incidents": 16,
    "conversation_mood": 0.9816
  },
  "recommendations": {
    "user989": [
      {
        "action": "静音",
        "trigger_message": "蠢蛋基佬",
        "trigger_time": "2022-06-02 16:49:00",
        "duration": 86400
      }
    ]
  }
}
```

#### 错误响应

<details>

<summary><code>400</code> — 无效或格式错误的请求</summary>

可能的原因：

* 无效的 JSON 输入
* 无效的请求头
* `metadata` 超过 5 KB
* `metadata` 包含不允许的键
* 无效 `x-api-config`
* `x-api-config` 包含不允许的键
* 缺少必需字段： `user_id`, `session_id`, `消息`
* 无效的输入格式，例如无效的时间戳或超过字符限制的消息

</details>

<details>

<summary><code>403</code> — 无效或缺失的 API 密钥</summary>

无法验证该请求。

</details>

<details>

<summary><code>500</code> — 内部服务器错误</summary>

由于意外的服务器端错误，请求失败。

</details>
