아티팩트에 데이터를 전달하는 방법에 대한 팁이 있을까요? 같은 아티팩트를 포럼의 여러 위치에 붙여넣고 싶고, 각 위치마다 다른 JWT 토큰을 사용하고 싶습니다. 아래와 같은 방법으로 시도해 보았지만 크리에이터가 이를 사용하지 못하게 됩니다:
<div class="ai-artifact" data-jwt-token="my-jwt-token" data-ai-artifact-id="10"></div>
아니면 웹 크리에이터가 현재 어떤 토픽 ID 안에 있는지 파악할 수 있다면, 그것을 활용해서 작업할 수 있을 것 같습니다.
3개의 좋아요
sam
(Sam Saffron)
2월 6, 2025, 4:18오전
2
아, 이건 좀 까다로운 문제네요. 지금은 프레임워크가 이를 지원하지 않습니다. 하지만 매우 흥미로운 사용 사례입니다.
모든 data- 속성을 샌드박스화된 아티팩트로 그대로 전달하는 기능 요청이 아주 우아한 해결책이라고 생각합니다.
한 가지 가능성이 있는 옵션은 쿼리 파라미터를 활용하는 것입니다. 하지만 샌드박스화된 iframe에는 해당 접근 권한이 없었습니다:
https://meta.discourse.org/discourse-ai/ai-bot/artifacts/166?222
@david 외부 세계에 대한 정보를 아티팩트로 전달하는 것에 보안상 문제가 있을까요? (샌드박스를 벗어나는 것이지만, window.location.search를 어떤 형태의 속성으로 에코하는 방식일까요?)
3개의 좋아요
david
(David Taylor)
2월 6, 2025, 11:13오전
3
아티팩트에 쿼리 문자열 접근 권한을 부여하는 것은 괜찮아 보입니다. 가장 쉬운 방법은 Ruby를 사용하여 이를 신뢰할 수 없는 HTML 문서에 주입하는 것입니다. 메타 태그나 유사한 방식으로 처리할 수 있겠네요.
3개의 좋아요
봇의 아이디어였습니다.
Sam Saffron:
매우 흥미로운 사용 사례입니다.
실제 환경의 아티팩트에서 매우 흔한 사용 사례라고 생각합니다. 여러 투자 항목에 대해 실행하고자 하는 재무 분석 아티팩트가 있습니다. 이 아티팩트는 JWT를 사용하여 어떤 투자 항목인지를 식별하고 API에서 성과 데이터를 가져옵니다. 각 아티팩트에 서로 다른 하드코딩된 JWT를 포함하여 수많은 아티팩트를 만드는 것은 현실적으로 불가능합니다.
오래된 요청을 더 드리는 건 아닌지 모르겠지만, 아티팩트에서 사용자 ID와 토픽 ID도 가져올 수 있다면 훨씬 더 많은 애플리케이션이 가능해질 것입니다.
4개의 좋아요
sam
(Sam Saffron)
2월 6, 2025, 8:53오후
5
토픽 ID를 추가하는 것은 쉽지만, 사용자 ID는 약간 더 까다로울 수 있습니다. 아티팩트가 상당히 캐시되므로, 이를 구현하려면 일부 캐싱을 줄여야 하기 때문입니다.
Sam Saffron:
topic id를 추가하는 것은 쉽습니다.
데이터 속성을 전달하는 것보다 제 애플리케이션에 실제로는 더 나은 방법입니다. 토픽과 제 JWT 사이에 1:1 매핑이 있으므로, 각 게시물에서 JWT를 수정할 필요 없이 JWT를 조회할 수 있습니다.
하지만 다른 사용 사례는 처리하지 못할 가능성이 높습니다.
sam
(Sam Saffron)
2월 7, 2025, 9:46오후
7
기술적으로 URL만 전달하면 이 문제를 해결할 수 있습니다. 토픽 ID가 URL의 일부이기 때문이죠.
다음 주에 이 부분을 정리할 예정입니다. 현재 PDF 지원 기능을 작업 중입니다
확인 차问一下, 이 기능이 실제로 구현된 적이 있나요?
sam
(Sam Saffron)
5월 14, 2025, 2:43오전
9
아직은요. 오늘 좀 직접 해보면서 이 정도까지 복잡한지 확인해 볼 거예요.
sam
(Sam Saffron)
5월 18, 2025, 1:54오전
10
main ← various-things
merged 05:44AM - 19 May 25 UTC
Also allow artifact access to current username
Usage inside artifact is:
1… . await window.discourseArtifactReady;
2. access data via window.discourseArtifactData;
```
<div class="ai-artifact" data-ai-artifact-id="482" data-hello="world"></div>
```

이것으로 해결됩니다. 샌드박싱 때문에 여기서 post message를 사용해야 하는 것이 불가피합니다. 그래서 API는 await를 필요로 합니다. 그래도 작동하니까 다행입니다.
7개의 좋아요