在AI人设系统提示中添加{username}作为模板参数

这是我第一次参与贡献。如果我在过程中有什么疏漏,我深表歉意,并且非常感谢您的耐心以及任何建议,如果有更好的方法的话。

虽然这微不足道,但我是一名 Pro 用户。

我需要一种可靠的方式来识别与 AI 代理交互的用户。这就是我提出的解决方案。非常感谢您抽出时间考虑,并提供任何建议。

在 AI 角色系统提示中添加 {username} 作为模板参数

我提交了 PR #41446FEATURE: Add {username} template param to BotContext - Pull Request #41446 - discourse/discourse - GitHub ),将 {username} 添加到 BotContext::TEMPLATE_PARAMS 中。

使用场景:作为与外部服务桥梁的角色需要在服务器端解析当前用户的身份,而不是由 LLM 从帖子文本中推断。目前还没有一种干净的方法来实现这一点。{participants} 仅在私信中填充,而要求 LLM 从主题元数据中解析用户名则容易出错且存在注入风险。

此更改很小(新增一个方法,在允许列表中添加一个字符串)且为附加性质。除非现有提示中已经包含字面意义上的 {username},否则它们不会受到影响。

再次感谢!

6 个赞

哦,我也已经完成了CLA签署。我想我已经把所有该做的都考虑到了。再次感谢。

2 个赞

只是打个招呼。如果有什么我可以帮忙的,请告诉我。谢谢 :purple_heart:

1 个赞

感谢提交 PR!

现已合并。

6 个赞

太棒了!非常感谢您 :purple_heart:

3 个赞

我也和 @falco 讨论过这个问题,但我想提醒一下,这是一个非常“锋利”的工具。

特别是我们已经在“User”消息中包含了用户名:

这在 AI API 日志中是可见的。

在系统提示词中插入名字的危险在于,如果在链式交互中存在多用户交互,可能会导致系统提示词频繁变更(thrashing),从而导致缓存失效,这并不理想,可能会导致性能下降。

现在……我注意到我们的 vLLM 模板中有一个问题,即我们丢弃了名字,这就解释了为什么 CDCK 托管的模型缺少此功能。我现在正在编写一个补丁来修复这个问题。

3 个赞