群聊配置
880字约3分钟
2024-10-14
Athena 被设计为虚拟群友,因此提供了一系列群聊有关的配置。
聊群白名单
Athena 提供了白名单群聊的机制,当聊群被加入白名单列表时,Bot 才会开始在该群聊发言。易言之,当一个群聊不在白名单时,即使 Bot 在该群聊且未被禁言,它也不会调用 API 进行发言。
注意
当你希望你的 Bot 闭嘴时,请不要尝试禁言它,请你直接将该群聊移出白名单。这是因为即使你的 Bot 被禁言,它仍然会在接收到一定消息时调用 API,从而浪费 API 额度。
Athena 提供了一个列表配置项 Group.AllowedGroups
来设置聊群白名单。你可以直接填入数字群号。
相关信息
即使 Athena 被设计用于群聊,你仍然可以将其用于私聊。做法是在 Group.AllowedGroups
添加一项以 private:
开头的 QQ 号,表示接收来自此账号的 QQ 私聊。例如 private:2445691453
表示接收该账号 2445691453
的消息。
如果你希望接收所有群聊的消息,你可以在 调试工具 配置中启用配置项 Debug.DisableGroupFilter
来禁用白名单。但这是不推荐的。
群聊消息设置
Athena 使用消息队列来管理上下文。在 Bot 接收到新消息时,消息会被加入到一个队列里。当队列的长度达到一定的数量时,队列将会作为上下文提供给大模型进行决策。这之后,你的 Bot 将会发出消息。
- 配置项
Group.SendQueueSize
用于控制消息队列的长度,即 Bot 所能知道的历史消息的长度。默认为 20。上限取决于你的模型限制; - 配置项
Group.MaxPopNum
用于控制 Bot 每次发言的最大冷却时间; - 配置项
Group.MinPopNum
用于控制 Bot 每次发言的最小冷却时间;
在第一次启动后,Bot 会等待群聊接收的消息数量达到 Group.SendQueueSize
,随后发送一次消息,并冷却 [Group.MaxPopNum
, Group.MinPopNum
] 之间的随机数次消息,再进行下一次发言。
除此之外,还有一个特殊的配置项 Group.AtReactPossibility
,它是一个介于 [0,1] 之间的实数,表示每次 Bot 被 @ 时触发发送消息的概率。需要注意的是,当触发 @ 发言成功后,冷却条数会被重置。
词汇过滤器
有时候有人会使用提示词注入攻击来使聊群中的机器人返回你不希望出现的内容——这时你需要想办法屏蔽某些话术,又或者你希望符合某些特定关键字的消息能被 Bot 忽略,Athena 提供了词汇过滤器来实现这一点。
配置项 Group.Filter
是一个字符串列表,对于每一项,填入你希望屏蔽的关键字。当某条消息包含该关键字时,这条消息将不会被加入消息队列。
相关信息
提示词攻击是一种新型的攻击方式,包括提示词注入、提示词泄露和提示词越狱。这些攻击方式可能会导致模型生成不适当的内容,泄露敏感信息等。Prompt 的构建使得预训练大模型能够输出更加符合人类语言和理解的结果,但是不同的 prompt 的模板依旧有可能会导致一些安全问题和隐私问题的出现。