Vercel AI: `gen_ai.system_instructions` is missing when the system prompt is a message object
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 73/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- javascript, node.js, typescript
- Ambito
- observability
Direzione di ricerca
Leggi vercel-ai-orchestrion-subscriber.js per v4–v6 e vercel-ai-dc-subscriber.js per v7, concentrandoti sulla gestione del prompt di sistema descritta nell’issue. Riproduci il problema con gli esempi generateText forniti, usando sia prompt di tipo stringa sia prompt come oggetti messaggio. Il lavoro è completato quando entrambe le forme valorizzano gen_ai.system_instructions sugli span invoke_agent in tutte le versioni interessate.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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.
- Lingua principale
- TypeScript
- Stelle
- 8.8k
- Fork
- 1.9k
- Merge medio
- 1g 19h
- PR unite (30g)
- 664
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di getsentry/sentry-javascript
-
Bug Node.js
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
getsentry/sentry-javascript#25950 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Browser Bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
getsentry/sentry-javascript#25946 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
normalize() throws when a getter throws a Symbol or a null-prototype objectForse già presa @rjmcgee53192 l’ha presa 4 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
getsentry/sentry-javascript#25920 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Only create Nuxt database and storage spans when there is a parent spanForse già presa @nicohrubec l’ha presa 5 giorni fa. ApertaImprovement Nuxt
Difficoltà 2/5 1-3 ore Idoneità per principianti 83/100
getsentry/sentry-javascript#25805 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Only create Cloudflare storage and D1 db spans when there is a parent spanForse già presa @nicohrubec l’ha presa 5 giorni fa. ApertaCloudflare Workers Improvement Spans
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
getsentry/sentry-javascript#25804 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di getsentry/sentry-javascript
Issue simili
-
Add: Yichang TVApertacheck:passed streams:add
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
I maintainer di solito rispondono entro 1 giorno
-
vtselect: data race in Tempo search tags APIs for invalid TraceQL queriesForse già presa @Shubham19032004 l’ha presa oggi. Apertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
VictoriaMetrics/VictoriaTraces#304 ·
I maintainer di solito rispondono entro 1 giorno
-
test: claim-conflict drop leaves both facts active and is never re-proposed (untested review cell)Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 83/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
microsoft/vscode-pull-request-github#9159 ·
I maintainer di solito rispondono entro 1 giorno
-
[Feature]: Usage page should show API-equivalent cost and say when a connected plan shows info onlyApertaenhancement from-x
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
nightly-labs/openbot#4867 ·
I maintainer di solito rispondono entro 1 giorno