Skip to content

Conversation

@alexander-alderman-webb
Copy link
Contributor

@alexander-alderman-webb alexander-alderman-webb commented Jan 21, 2026

Description

For #5359, it is easier to have distinct handling of the messages and input types for completions and responses APIs, respectively.

Set the system instruction attribute, conforming to OTtel structure for OpenAI Completions functions:

https://opentelemetry.io/docs/specs/semconv/registry/attributes/gen-ai/#gen-ai-system-instructions

Issues

Reminders

@github-actions
Copy link
Contributor

github-actions bot commented Jan 21, 2026

Semver Impact of This PR

🟡 Minor (new features)

📋 Changelog Preview

This is how your changes will appear in the changelog.
Entries from this PR are highlighted with a left border (blockquote style).


New Features ✨

Integrations

  • feat(integrations): OpenAI/OpenAI Agents detect and report the time to first token metric (TTFT) as gen_ai.response.time_to_first_token by constantinius in #5348
  • feat(integrations): openai-agents streaming support by constantinius in #5291

Other

  • feat(anthropic): Set system instruction attribute by alexander-alderman-webb in #5353
  • feat(asyncio): Allow to turn task spans off by sentrivana in #5367
  • feat(gen_ai): add function set_conversation_id and managing functions on the Scope and apply it on the Span on .finish() by constantinius in #5362
  • feat(google-genai): Set system instruction attribute by alexander-alderman-webb in #5354
  • feat(langchain): Set system instruction attribute by alexander-alderman-webb in #5357
  • feat(openai): Set system instruction attribute for Completions API by alexander-alderman-webb in #5358
  • feat(openai-agents): Set system instruction attribute by alexander-alderman-webb in #5355
  • feat(pydantic-ai): Set system instruction attribute by alexander-alderman-webb in #5356

Internal Changes 🔧

  • ci(release): Fix changelog-preview permissions by BYK in #5368
  • ci: Fix path in AI integration tests by alexander-alderman-webb in #5347

🤖 This preview updates automatically when you update the PR.

@alexander-alderman-webb alexander-alderman-webb changed the title ref(openai): Separate input handling to improve typing ref(openai): Separate input handling Jan 21, 2026
@alexander-alderman-webb alexander-alderman-webb marked this pull request as ready for review January 22, 2026 13:19
@alexander-alderman-webb alexander-alderman-webb requested a review from a team as a code owner January 22, 2026 13:19
@alexander-alderman-webb alexander-alderman-webb changed the title ref(openai): Separate input handling feat(openai): Set system instruction attribute for Completions API Jan 27, 2026
Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.

message
for message in messages
if not _is_system_instruction_completions(message)
]
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Iterator consumed twice causes silent data loss

Medium Severity

In _set_completions_api_input_data, the messages parameter is iterated over twice: first by _get_system_instructions_completions(messages) at line 332, then by the list comprehension creating non_system_messages at lines 353-357. Since the type hint accepts Iterable (which includes generators), passing a non-rewindable iterator would cause the second iteration to silently produce an empty list, resulting in lost span data for non-system messages.

Fix in Cursor Fix in Web

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants