Skip to content

feat: add Vertex AI support for the Responses API - #4139

Merged
dpiet-oai merged 5 commits into
mainfrom
codex/vertex-python-public
Oct 21, 2026
Merged

dpiet-oai merged 5 commits into
mainfrom
codex/vertex-python-public

Conversation

@dpiet-oai

@dpiet-oai dpiet-oai commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

Changes being requested

Add vertex(...) so the standard OpenAI and AsyncOpenAI clients can send Responses API requests through Google Cloud Vertex AI. Configure a project and location or an explicit API root. Google Application Default Credentials and explicit Google credentials use the optional openai[vertex] extra; application-managed token callbacks work with the base package. Credentials are bound to the configured origin, redirects are disabled, and stored-response routes preserve escaped path segments.

Additional context & links

Validated with 36 focused provider tests, Ruff, targeted mypy, and the CI wheel check with and without the Vertex extra. The opt-in live Vertex acceptance test was not run.

@dpiet-oai
dpiet-oai requested a review from a team as a code owner October 21, 2026 12:34
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 21, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-21T12:54:56.935483Z d85e8aa New commits
🔒 Security Review ✅ Completed 2026-10-21T12:56:49.956732Z d85e8aa New commits
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@github-actions

github-actions Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

Castiron custom code

Evaluated main: ca541462ba20dadb66eea6c67775f186dfb17e33.

Trusted main policy: ca541462ba20dadb66eea6c67775f186dfb17e33.

✅ No new custom-code files detected.

42 mixed files remain; 0 existing customizations changed.

Compared ca541462ba20 → d85e8aa399cd. Generated baselines verified.

42 existing customizations unchanged
  • api.md
  • scripts/castiron/custom_code_budget.py
  • scripts/castiron/test_custom_code_budget.py
  • scripts/castiron/test_custom_code_github.py
  • src/openai/init.py
  • src/openai/_client.py
  • src/openai/resources/audio/transcriptions.py
  • src/openai/resources/audio/translations.py
  • src/openai/resources/beta/agents/environments/files.py
  • src/openai/resources/beta/agents/sessions/artifacts.py
  • src/openai/resources/beta/agents/sessions/sessions.py
  • src/openai/resources/beta/beta.py
  • src/openai/resources/beta/responses/responses.py
  • src/openai/resources/beta/threads/runs/runs.py
  • src/openai/resources/beta/threads/threads.py
  • src/openai/resources/chat/completions/completions.py
  • src/openai/resources/embeddings.py
  • src/openai/resources/files.py
  • src/openai/resources/live/forks.py
  • src/openai/resources/live/live.py
  • src/openai/resources/live/sideband.py
  • src/openai/resources/realtime/api.md
  • src/openai/resources/realtime/realtime.py
  • src/openai/resources/realtime/translations/translations.py
  • src/openai/resources/responses/responses.py
  • src/openai/resources/uploads/uploads.py
  • src/openai/resources/vector_stores/file_batches.py
  • src/openai/resources/vector_stores/files.py
  • src/openai/resources/videos.py
  • src/openai/resources/webhooks/init.py
  • src/openai/resources/webhooks/webhooks.py
  • src/openai/types/decision_input_image_param.py
  • src/openai/types/decision_input_text_param.py
  • src/openai/types/fine_tuning/fine_tuning_job_integration.py
  • src/openai/types/realtime/conversation_item_input_audio_transcription_delta_event.py
  • src/openai/types/realtime/realtime_error_event.py
  • src/openai/types/responses/tool.py
  • src/openai/types/responses/tool_param.py
  • src/openai/types/webhooks/init.py
  • src/openai/types/webhooks/live_call_incoming_webhook_event.py

2 more in the full report.

A changed generated baseline means this report cannot reliably identify which handwritten lines changed.

Inspect the custom-code diff

Download the exact patch produced by this run (requires repository access):

gh run download 39603644511 --repo openai/openai-python \
  --name castiron-custom-code-39603644511-1 --dir /tmp/castiron-custom-code-39603644511-1
git apply --stat /tmp/castiron-custom-code-39603644511-1/custom-code.patch
cat /tmp/castiron-custom-code-39603644511-1/custom-code.patch

Or reproduce it from an SDK checkout containing the vendored reporter:

git fetch --no-tags origin ca541462ba20dadb66eea6c67775f186dfb17e33 d85e8aa399cd6c0a4b6342dbbee720a0897b2af6
python3 scripts/castiron/custom_code_report.py report \
  --base ca541462ba20dadb66eea6c67775f186dfb17e33 \
  --head d85e8aa399cd6c0a4b6342dbbee720a0897b2af6 --target-branch main --fetch --require-head-hash --public \
  --out /tmp/castiron-custom-code-d85e8aa399cd
cat /tmp/castiron-custom-code-d85e8aa399cd/custom-code.patch

This is the current full custom patch for mixed files, not an attribution of only the handwritten lines changed by this PR.

Full report and patch

Comment thread scripts/utils/validate-vertex-wheel.py Fixed
Comment thread src/openai/providers/vertex.py Fixed

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: dc754160d8

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/openai/providers/vertex.py Outdated
Comment thread src/openai/providers/vertex.py Outdated
Comment thread src/openai/providers/vertex.py Outdated
Comment thread src/openai/providers/vertex.py
@dpiet-oai

Copy link
Copy Markdown
Contributor Author

@codex review

@jbeckwith-oai jbeckwith-oai left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Approved after comprehensive static review of all nine changed files, supporting provider/request pipeline, and existing feedback, with an independent runtime review. No actionable findings. Verified lazy optional Google authentication, explicit credential scoping, per-phase timeouts and cancellation behavior, origin/redirect/header boundaries, escaped lifecycle routes, per-attempt tokens, and installed-wheel isolation. The four prior substantive findings are addressed. Hosted checks pass/skip, including build, lint, Python 3.10/3.14, HTTPX2, CodeQL and OkTest. No candidate code or tests ran locally. Live Vertex acceptance remains unverified.

@dpiet-oai
dpiet-oai added this pull request to the merge queue Oct 21, 2026
Merged via the queue into main with commit 3e63d33 Oct 21, 2026
45 of 46 checks passed
@dpiet-oai
dpiet-oai deleted the codex/vertex-python-public branch October 21, 2026 13:13
@openai-sdks openai-sdks Bot mentioned this pull request Oct 21, 2026
github-merge-queue Bot pushed a commit that referenced this pull request Oct 21, 2026
Automated Release PR
---


##
[3.36.0](v3.35.1...v3.36.0)
(2026-10-21)


### Features

* add Vertex AI support for the Responses API
([#4139](#4139))
([3e63d33](3e63d33))
* **api:** add 30-minute cache-write usage counts
([#4111](#4111))
([5589146](5589146))
* **api:** add compaction trigger IDs
([#4122](#4122))
([0e5794d](0e5794d))
* **api:** add custom voice consent management
([#4135](#4135))
([de6d70d](de6d70d))
* **types:** prepare native synchronous WebSocket option type
([#4118](#4118))
([90c0bac](90c0bac))


### Bug Fixes

* **api:** accept canonical batch responses in strict mode
([#4106](#4106))
([6eaa90e](6eaa90e))
* clean up failed WebSocket setup and honor native options
([#4121](#4121))
([b1a1a10](b1a1a10))
* end sync WebSocket recovery when an attempt is interrupted
([#4129](#4129))
([337769b](337769b))
* honor timed Translation receives during terminal cleanup
([#4132](#4132))
([ca54146](ca54146))
* preserve client headers in legacy Beta Realtime connections
([#4130](#4130))
([8a2a2e0](8a2a2e0))
* preserve declared aliases during Pydantic v1 validation
([#4119](#4119))
([8b1cac9](8b1cac9))
* preserve Vertex API root for response lifecycle
([#4140](#4140))
([c2b14f5](c2b14f5))
* preserve WebSocket close across recovery and cancellation
([#4117](#4117))
([4590ff1](4590ff1))
* **realtime:** honor native options for legacy beta sockets
([#4120](#4120))
([8968560](8968560))


### Chores

* **api:** clarify cache-write token totals
([#4136](#4136))
([55b8b8a](55b8b8a))
* **api:** clarify project API key update requirements
([#4131](#4131))
([0e6be9f](0e6be9f))
* **api:** maintain voice consent compatibility
([#4137](#4137))
([07abe06](07abe06))
* **api:** use neutral moderation examples
([#4104](#4104))
([553703e](553703e))
* restore generated Castiron reporting scripts
([#4113](#4113))
([9d12b56](9d12b56))
* support next checkpoints in the trusted reporter
([#4128](#4128))
([ae2a6c2](ae2a6c2))


### Documentation

* plan the Python generated-code transition
([#4114](#4114))
([6a52987](6a52987))
* record Python transition progress and batch follow-up work
([#4116](#4116))
([46e3680](46e3680))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: openai-sdks[bot] <284451331+openai-sdks[bot]@users.noreply.github.com>
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.

2 participants