getsentry / getsentry/sentry-javascript

Reducing memory foot print for vercel AI messages

オープン
#21,235 コメント 4 件 リアクション 0 件 担当者 0 名 GitHub で見る
Feature
主要言語
TypeScript
スター
8.7k
フォーク
1.8k
平均マージ
1日 17時間
マージ済み PR(30日)
515

説明

### Problem Statement

When `sendDefaultPii: true`, [requestMessagesFromPrompt](https://github.com/getsentry/sentry-javascript/blob/72346740a44620368fe07478362cd272d14abe3d/packages/core/src/tracing/vercel-ai/utils.ts#L258) parses and re-serializes `ai.prompt.messages` on every AI span, even when no transformation is needed.

For a 4mb prompt, this briefly doubles memory usage and has inside the function another memory footprint (which is unavoidable I guess):
1. Original JSON string on the span attribute
2. Parsed array from `JSON.parse`
3. Re-serialized string from `getJsonString`/`getTruncatedJsonString`

The parse + reserialize is only necessary when:
- System instructions need to be extracted (messages contain role: "system")
- Truncation is enabled

In the common case (no system messages, no truncation), we could skip parsing entirely and reuse the original string.

### Solution Brainstorm

Not sure if there is a good solution for it or if it is worth fixing as 4mb is unusually big, but if there is a high traffic this could spike real fast.

### Additional Context

_No response_

### Priority

React with 👍 to help prioritize this issue. Please use comments to provide useful context, avoiding `+1` or `me too`, to help us triage it.

コントリビューションガイド

コントリビューションガイドを開く

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。