我如何将数据传递给artifact?

关于如何向工件传递数据,你有什么建议吗?我想在我的论坛中的许多位置粘贴同一个工件,使用不同的JWT令牌在每个位置。我一直在尝试像这样的方法,但不能让创建者使用它:


div class="ai-artifact" data-jwt-token="my-jwt-token" data-ai-artifact-id="10"/div

或者如果网页创建者能弄清楚它在哪个主题ID中,我就可以用那个信息。

3 个赞

这确实是个棘手的问题,目前框架不允许这样做,但这是一个非常有趣的用例。

我喜欢这里提出的功能请求,即仅将所有 data- 属性传递到沙盒化的 artifact 中,这是一个优雅的解决方案。

不过,有一个可能有效的选项是利用查询参数,但沙盒化的 iframe 无法访问它:

https://meta.discourse.org/discourse-ai/ai-bot/artifacts/166?222

@david 你认为将外部世界的信息传递给 artifact 会有什么安全隐患吗?(保持沙盒化,但我猜想是将 window.location.search 回显到某种属性中?)

3 个赞

允许工件访问查询字符串听起来没问题。最简单的方法是使用 Ruby 将其注入不受信任的 HTML 文档。也许可以作为元标签或其他东西。

3 个赞

这是机器人的主意。 :slight_smile:

我认为这是真实世界构件的一个非常常见的用例。我有一个财务分析构件,我想针对许多投资运行它。该构件使用 JWT 来识别哪个投资,并从 API 拉取绩效数据。创建许多不同的构件,每个构件都有不同的硬编码 JWT,这是不可行的。

不是想得寸进尺,但如果我还能在构件中获得用户 ID 和主题 ID,那将为更多应用程序打开大门。

4 个赞

主题 ID 很容易添加,但用户 ID 会有点棘手,因为工件被大量缓存,我们必须减少一些缓存才能实现这一点。

这实际上比传递数据属性更适合我的应用程序。我的 JWT 与主题之间存在一对一的映射,因此我可以查找 JWT,而无需编辑每个帖子中的 JWT。

但这可能无法处理其他用例。

从技术上讲,只需传递 URL 即可解决此问题,因为主题 ID 是 URL 的一部分。

下周会处理好,目前正在处理 PDF 支持 :slight_smile:

只是确认一下,这个是否曾经实现过?

还没有,我今天会玩一玩,看看这个有多复杂。

这将解决此问题。由于沙盒化,这里确实没有简单的选择,只能使用 post message,因此 API 需要 await……不过它确实有效,这很好。

7 个赞

对我来说效果很好!

1 个赞