chore(examples/voice/#486): retire legacy gpt-4o-audio-preview surface, migrate supported audio examples to gpt-audio-mini#612
Conversation
|
[grinder] READY for human review CI: green (zero failing, zero pending) Verified by: |
✅ Review + prove-it: READY (after closing-ref correction)Review: deleting Prove-it:
Fixed before ready: the body said Minor: carries a disclosed cherry-picked contract-count fix to |
…gacy test Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…t file Companion to the delete commit: `test_voice_to_voice_conversation.py` was removed but two references remained: - docs/scripts/mdx-examples-manifest.js: remove sourcePath entry - .github/workflows/voice-integration.yml: remove from pytest command Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ython example The deleted `test_voice_to_voice_conversation.py` was referenced in `docs/docs/pages/examples/multimodal/voice-to-voice.mdx` as: - a generated MDX import (breaking the docs build) - a Python LanguageTabs.CodeTab (now empty) - a prose GitHub link in "Complete Sources" Remove the import, the Python tab, and update the prose link to point to the helper utilities instead with a note about the legacy pattern removal. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The voice-to-voice example helper and the audio-to-text example pinned
`gpt-4o-audio-preview`, which OpenAI has removed (404 model_not_found
since 2026-05-19). Any user running the canonical voice example hit an
immediate 404.
Switch to `gpt-audio-mini` — OpenAI's current cost-efficient GA
audio-chat model — matching the Python twin, which already migrated
(python/scenario/config/voice_models.py:44 OPENAI_AUDIO_CHAT_MODEL,
python/examples/test_audio_to_text.py:157). Verified live: gpt-audio-mini
accepts the identical chat.completions shape (modalities:["text","audio"],
audio:{voice,format}) and returns audio. Re-ran the voice-to-voice e2e
against prod LangWatch — success: true, real 2-turn conversation, traces
landed (project_bZspxwkhCD4POvqmIgOr2).
SDK core was unaffected (OpenAIRealtimeAgentAdapter uses gpt-realtime-mini).
This closes a py↔ts example-parity gap left by #561.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
… refs after model swap Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…e, keep+migrate supported audio examples Cohesive retirement of the legacy gpt-4o-audio-preview voice/audio example surface, folding in the model swap from #607 (cherry-picked) and superseding the unskip plan in #486. Genuinely-dead (retired): - Tombstone docs/docs/pages/examples/multimodal/voice-to-voice.mdx and testing-voice-agents.mdx -> pointer to /voice/getting-started (URLs still 200; the langwatch vocs fork has no redirect layer, so a tombstone is how we avoid 404s on previously-public URLs). - Delete the now-unused LegacyVoiceDeprecation.mdx snippet (no importers left). - (test_voice_to_voice_conversation.py already deleted in an earlier #486 commit.) Supported (kept + migrated to gpt-audio-mini): - audio-to-text.mdx / audio-to-audio.mdx kept and updated: prereq prose now names gpt-audio-mini; LegacyVoiceDeprecation banner removed (these document the CURRENT supported single-call pattern, not a legacy one). - Python test_audio_to_text.py / test_audio_to_audio.py: skip COMMENTS rewritten to the real reason (live E2E -- real OpenAI gpt-audio-mini + LangWatch backend, cost, non-deterministic audio); skipif(CI) markers retained by design. No model literal change (they route through the helper's gpt-audio-mini default). - _generated example partials regenerated to match the migrated test sources. overview.mdx voice-agents link repointed to /voice/getting-started. Why the audio tests stay CI-skipped: they are live end-to-end tests; #486's "unskip to restore CI coverage" premise was never achievable (cost + non-determinism). The right end-state is migrated-and-intentionally-skipped. Docs build: pnpm build exits 0, no broken-link/missing-import errors; tombstone routes render the /voice/getting-started pointer. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
4acb9db to
98d970a
Compare
|
Automated low-risk assessment This PR was evaluated against the repository's Low-Risk Pull Requests procedure and does not qualify as low risk.
This PR requires a manual review before merging. |
What
Cohesive retirement of the legacy
gpt-4o-audio-previewvoice/audio example surface, consolidating three threads into one PR:gpt-4o-audio-preview→gpt-audio-mini) — its commits are cherry-picked here, so fix(examples/voice): swap deleted gpt-4o-audio-preview → gpt-audio-mini #607 is superseded and will be closed.Why we don't unskip (the key correction)
#486 framed the goal as "remove the
skipif(CI)markers and restore CI coverage." That premise was never achievable: these audio/voice example tests are live end-to-end tests — they call real OpenAI (gpt-audio-mini) and the real LangWatch backend, incur cost, and produce non-deterministic audio. They are correctly CI-skipped regardless of model (same class as the other livevoice/*example tests). The deadgpt-4o-audio-previewmodel was only the historical reason for the skip; swapping it doesn't make these CI-runnable.So the right end-state is migrated + intentionally CI-skipped, not "unskipped." We migrate the model so the examples work when run live/locally, keep the skip markers, and fix the stale skip comments to state the real reason.
What changed
Genuinely-dead → retired:
docs/docs/pages/examples/multimodal/voice-to-voice.mdxandtesting-voice-agents.mdx→ a short pointer to/voice/getting-started. The pages' URLs still return 200 (the vocs fork has no redirect layer, so a tombstone avoids 404s on previously-public URLs).LegacyVoiceDeprecation.mdxsnippet (zero importers after the edits).test_voice_to_voice_conversation.pydeleted (it was explicitlyDEPRECATED— the legacy single-call pattern).Supported → kept + migrated to
gpt-audio-mini:audio-to-text.mdx/audio-to-audio.mdxkept and updated (prereq prose now namesgpt-audio-mini;LegacyVoiceDeprecationbanner removed) — these document the current supported single-call pattern, not a legacy one.multimodal-audio-to-text,multimodal-audio-to-audio,multimodal-voice-to-voice-conversation,helpers/openai-voice-agent.ts) migrated togpt-audio-miniwith updated skip-comments (via fix(examples/voice): swap deleted gpt-4o-audio-preview → gpt-audio-mini #607's cherry-picked commits).test_audio_to_text.py/test_audio_to_audio.pyskip-comments rewritten to "live-E2E, not model";skipif(CI)markers retained (no model-literal change — they route through the helper'sgpt-audio-minidefault)._generatedexample partials regenerated to match the migrated test sources.overview.mdxvoice-agents link repointed to/voice/getting-started.Verification
pnpm build(indocs/) exits 0, no broken-link/missing-import errors./voice/getting-startedpointer (confirmed indist/examples/multimodal/voice-to-voice/index.html).audio-to-textbuilt page referencesgpt-audio-mini(x6); no livegpt-4o-audio-previewmodel literal remains anywhere (grepovermodel=/model:is empty — remaining mentions are explanatory comments/tombstone prose only).Closes / supersedes
🤖 Generated with Claude Code