2.9.0 (2026-10-16)
Features Added
- Added experimental Voice Agents REST and realtime tracing through
AIProjectInstrumentor, including correlated session, connection and response spans, tool/lifecycle events, aggregate audio sizes and existing GenAI response metrics. Existing tracing and content-recording settings apply; message content is not captured by default. - Added an optional
transportkeyword on synchronous and asynchronous realtimeconnect()usingVoiceAgentTransport.WEBSOCKETorVoiceAgentTransport.WEBRTC. The SDK constructs the transport wire query internally. - Added preview Microsoft Copilot managed harness and toolset support for prompt agents.
Breaking Changes
All breaking changes affect preview APIs.
Breaking changes in preview classes:
- Renamed
CreateTeamsPhoneExtensionTelephonyBindingRequest,TeamsPhoneExtensionTelephonyBinding, andTeamsPhoneExtensionTelephonyBindingListItemtoCreateTeamsPhoneExtensibilityTelephonyBindingRequest,TeamsPhoneExtensibilityTelephonyBinding, andTeamsPhoneExtensibilityTelephonyBindingListItem, respectively. - Renamed
TelephonyProvider.TEAMS_PHONE_EXTENSIONandTelephonyCallLifecycleEventSource.TEAMS_PHONE_EXTENSIONtoTEAMS_PHONE_EXTENSIBILITY; their wire value changed fromteams_phone_extensiontoteams_phone_extensibility. - Removed
VoiceAgentRealtimeResponseBaseandVoiceResponseBase; their properties now live directly onVoiceAgentRealtimeResponseandVoiceResponse. Several persistedVoiceResponsefields are now optional, andmetadatanow uses theMetadatamodel.
Bugs Fixed
- Fixed synchronous and asynchronous Azure AI Projects long-running operations to treat both
cancelledandcanceledas terminal cancellation statuses without changing Azure Core polling behavior for other SDKs.
Sample updates
- Added
sample_log_from_voice_agent.pyinsamples/logs, demonstrating Voice Agent realtime diagnostics through theazure.ai.projects.realtimelogger without OpenTelemetry setup. - Fixed the realtime audio conversation sample to enable input transcription, count only successfully sent audio payloads, and finish pending capture sends before printing transfer totals.
- Fixed the conversation deletion snippet to handle the API's no-content response.
- Updated Voice Agent samples to use
FOUNDRY_VOICE_AGENT_MODELfor model configuration, retainingFOUNDRY_VOICE_MODELas a deprecated fallback insample_voice_agent_with_tools.py. - Renamed Voice Agent realtime samples from
sample_voice_agent_live_*tosample_voice_agent_realtime_*, updating usage instructions and cross-references. - Updated
sample_multiturn_trace_evaluation_agent_filter.pyto use the supported agent-name/version filter, remove unsupported command-line filtering options, and configure trace lookback and maximum trace count throughTRACE_LOOKBACK_HOURSandTRACE_MAX_TRACES. - Updated
sample_agent_browser_automation.pyto handle the GAremote_function_callbrowser action items, print complete agent messages instead of per-token deltas, and demonstrate reading the title and description of example.com. - Updated Agent Optimization job creation, polling, and cancellation samples to use inline target-completion test cases instead of requiring a registered dataset;
JOB_IDis now optional insample_optimization_job_list_get_delete.py.