Vercel AI: `gen_ai.system_instructions` is missing when the system prompt is a message object
Mantenedores costumam responder em até 1 dia
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 2/5
- Tempo estimado
- 1-3 horas
- Facilidade para iniciantes
- 73/100
- Tipo de issue
- Bug
- Clareza
- Claramente especificada
- Status de atividade
- Ativa
- Stack de tecnologia
- javascript, node.js, typescript
- Domínio
- observability
Direção de pesquisa
Leia vercel-ai-orchestrion-subscriber.js para v4–v6 e vercel-ai-dc-subscriber.js para v7, com foco no tratamento do prompt do sistema descrito na issue. Reproduza o problema com os exemplos fornecidos de generateText, usando prompts tanto como string quanto como objetos de mensagem. O trabalho estará concluído quando as duas formas preencherem gen_ai.system_instructions nos spans invoke_agent em todas as versões afetadas.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
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.
- Linguagem predominante
- TypeScript
- Estrelas
- 8.8k
- Forks
- 1.9k
- Merge médio
- 1d 19h
- PRs com merge (30d)
- 664
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Tem um modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de getsentry/sentry-javascript
-
Bug Node.js
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
getsentry/sentry-javascript#25950 · 2 comentários ·
Mantenedores costumam responder em até 1 dia
-
Browser Bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 85/100
getsentry/sentry-javascript#25946 · 2 comentários ·
Mantenedores costumam responder em até 1 dia
-
normalize() throws when a getter throws a Symbol or a null-prototype objectTalvez já em andamento @rjmcgee53192 assumiu há 4 dias. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
getsentry/sentry-javascript#25920 · 2 comentários ·
Mantenedores costumam responder em até 1 dia
-
Only create Nuxt database and storage spans when there is a parent spanTalvez já em andamento @nicohrubec assumiu há 6 dias. AbertaImprovement Nuxt
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 83/100
getsentry/sentry-javascript#25805 · 2 comentários ·
Mantenedores costumam responder em até 1 dia
-
Only create Cloudflare storage and D1 db spans when there is a parent spanTalvez já em andamento @nicohrubec assumiu há 6 dias. AbertaCloudflare Workers Improvement Spans
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
getsentry/sentry-javascript#25804 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
Todas as issues de getsentry/sentry-javascript
Issues semelhantes
-
reproduced
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
anomalyco/opencode#61640 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
ai-driven-fuzzing bug Minor
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
Mantenedores costumam responder em até 1 dia
-
ai-driven-fuzzing bug claude Minor
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
linagora/twake-calendar-frontend#1944 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 74/100
Mantenedores costumam responder em até 1 dia
-
Add: Yichang TVAbertacheck:passed streams:add
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 74/100
Mantenedores costumam responder em até 1 dia