Vercel AI: `gen_ai.system_instructions` is missing when the system prompt is a message object
Maintainer antworten meist innerhalb von 1 Tag
Bewertung
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Anfängerfreundlichkeit
- 73/100
- Issue-Typ
- Bug
- Klarheit
- Klar beschrieben
- Aktivitätsstatus
- Aktiv
- Tech-Stack
- javascript, node.js, typescript
- Bereich
- observability
Rechercherichtung
Lies vercel-ai-orchestrion-subscriber.js für v4–v6 und vercel-ai-dc-subscriber.js für v7 und konzentriere dich auf die im Issue beschriebene Verarbeitung des System-Prompts. Reproduziere das Problem mit den bereitgestellten generateText-Beispielen, die sowohl String-Prompts als auch Nachrichtenobjekte verwenden. Fertig ist die Arbeit, wenn beide Formen gen_ai.system_instructions auf invoke_agent-Spans über alle betroffenen Versionen hinweg befüllen.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
SDK: @sentry/node 11.10.0 (also @sentry/nextjs 11.10.0) · ai 6.0.316 and 7.0.162
Steps to reproduce
const Sentry = require('@sentry/node');
Sentry.init({
dsn: '…',
tracesSampleRate: 1,
sendDefaultPii: true,
traceLifecycle: 'stream',
beforeSendSpan: Sentry.withStreamedSpan(span => {
if (span.name.startsWith('invoke_agent')) console.log(span.name, span.attributes['gen_ai.system_instructions'] ?? '(missing)');
return span;
}),
});
const { generateText } = require('ai');
const { MockLanguageModelV3 } = require('ai/test'); // MockLanguageModelV4 on ai v7
const model = () => new MockLanguageModelV3({
doGenerate: async () => ({ content: [{ type: 'text', text: 'ok' }], finishReason: { unified: 'stop', raw: 'stop' }, usage: { inputTokens: { total: 1 }, outputTokens: { total: 1 } }, warnings: [] }),
});
// ai v7: use `instructions` instead of `system`
await generateText({ model: model(), experimental_telemetry: { functionId: 'string' }, system: 'Be brief.', prompt: 'hi' });
await generateText({
model: model(),
experimental_telemetry: { functionId: 'object' },
system: { role: 'system', content: 'Be brief.', providerOptions: { anthropic: { cacheControl: { type: 'ephemeral' } } } },
prompt: 'hi',
});
Expected result
Both invoke_agent spans have gen_ai.system_instructions.
Actual result
invoke_agent string [{"type":"text","content":"Be brief."}]
invoke_agent object (missing)
The same happens on ai v7 with instructions.
Additional context
The AI SDK accepts string | SystemModelMessage | SystemModelMessage[] for the system prompt. The object form is the documented way to set provider options on it, for example Anthropic prompt caching. The integration reads only strings:
- v4–v6:
instructions: util.asString(options.system)invercel-ai-orchestrion-subscriber.js - v7:
util.asString(event.instructions)inbuildInputMessageAttributes(vercel-ai-dc-subscriber.js)
Possible fix: when the value is an object or an array, take each message's content.
Related: #20581 (the "System messages extracted to gen_ai.system_instructions" item).
I can open a PR if this approach works for you.
- Vorherrschende Sprache
- TypeScript
- Sterne
- 8.8k
- Forks
- 1.9k
- Ø Merge
- 1 T. 19 Std.
- Gemergte PRs (30 T.)
- 664
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Hat eine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus getsentry/sentry-javascript
-
fsIntegration crashes in native ESM when patching the read-only fs namespaceEvtl. vergeben Ein verknüpfter Pull Request ist offen oder bereits gemergt. OffenBug Node.js
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
getsentry/sentry-javascript#25950 · 2 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
Browser Bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 85/100
getsentry/sentry-javascript#25946 · 2 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
normalize() throws when a getter throws a Symbol or a null-prototype objectEvtl. vergeben @rjmcgee53192 hat das vor 5 Tagen übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
getsentry/sentry-javascript#25920 · 2 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
Only create Nuxt database and storage spans when there is a parent spanEvtl. vergeben @nicohrubec hat das vor 6 Tagen übernommen. OffenImprovement Nuxt
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 83/100
getsentry/sentry-javascript#25805 · 2 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
Only create Cloudflare storage and D1 db spans when there is a parent spanEvtl. vergeben @nicohrubec hat das vor 6 Tagen übernommen. OffenCloudflare Workers Improvement Spans
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
getsentry/sentry-javascript#25804 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in getsentry/sentry-javascript
Ähnliche Issues
-
bug module:nodes tests
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
rocketride-org/rocketride-server#3020 ·
Maintainer antworten meist innerhalb von 2 Tagen
-
area: dashboard area: tests good first issue size: XS tests
Schwierigkeit 1/5 1-3 Stunden Anfängerfreundlichkeit 88/100
Maintainer antworten meist innerhalb von 1 Tag
-
Read canvas commentsOffenenhancement needs-community-review
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 67/100
shaharia-lab/slackcli#501 · 3 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
[Bug] Pod detail shows CPU usage ten times too high, and throws on decimal memory suffixesEvtl. vergeben @RaphaelFakhri hat das heute übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 84/100
Maintainer antworten meist innerhalb von 11 Tagen
-
`package.json`: build tools listed as runtime dependencies, exact pins causing duplicate installsOffen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
themesberg/flowbite-vue#471 ·