精选85OpenAI Agents SDK Python(GitHub Releases)AI 编程与模型
OpenAI Agents SDK v0.20.0:默认模型改 GPT-5.6 Luna
v0.20.0
推荐理由
OpenAI Agents SDK 是 AI 编程与模型开发的核心工具,本次默认模型变更和 MCP 依赖迁移可能影响现有应用,建议开发者检查自定义 MCP HTTP 传输并迁移到 httpx2 或固定 mcp<2。
Key Changes
Version 0.20.0 is a minor release because it changes the implicit default model and includes a potentially breaking MCP dependency migration for applications with customized local HTTP transports. MCP v1 remains supported, and affected applications can migrate to httpx2 or pin mcp<2.
Highlights:
- The default model is now gpt-5.6-luna; explicit models, run-level overrides, and OPENAI_DEFAULT_MODEL continue to take precedence.
- Local MCP connections support MCP Python SDK v1 and v2 across stdio, SSE, and Streamable HTTP transports.
- Applications using custom MCP HTTP authentication or client factories must use the HTTP types owned by the installed MCP major version, or pin mcp<2.
- RunState.add_input() can stage durable user input before a resumed model call, with guardrail, persistence, and serialization support.
- Sandbox mount validation adds explicit credential-exposure acknowledgements and preserves redacted error contracts without serializing credential authority.
- Realtime input transcription supports the GA transcription settings for gpt-live-transcribe, gpt-transcribe, and gpt-realtime-whisper.
What's Changed
- feat: use GPT-5.6 Luna as the default model by @seratch in #4282
- feat: add durable pending input to RunState by @seratch in #4325
- feat(mcp): support MCP Python SDK v1 and v2 by @seratch in #4106
- feat(sessions): pass run context to custom sessions by @seratch in #4209
- feat(realtime): support GA transcription options by @seratch in #4351
- feat: preserve raw usage payloads by @seratch in #4279
- feat: allow applications to approve unsafe replays by @seratch in #4319
- fix: falsy optional reference handling by @seratch in #4305
- fix: prevent queue consumer deadlocks by @seratch in #4201
- fix: publish completed streamed guardrail results on failure paths by @adityasingh2400 in #4223
- fix: annotate the bare tool guardrail decorator overloads by @adityasingh2400 in #4238
- fix: tool approval is not honored on resume when Runner.run is given a context by @ojassharma7 in #4245
- fix: redact JSON validation errors by @seratch in #4211
- fix: copy raw_responses when building a RunState by @adityasingh2400 in #4237
- fix: keep empty turns in the nested conversation history by @abhay-codes07 in #4230
- fix: keep tool guardrail results when a resumed run interrupts again by @adityasingh2400 in #4239
- fix: work on copies of the lists a resumed run adopts from RunState by @hsusul in #4251
- fix: strip placeholder item IDs without provider_data on the Responses path by @LeSingh1 in #4266
- fix: bind tool approvals to concrete invocations by @seratch in #4257
- fix: normalize optional fields in tool invocation identity by @seratch in #4289
- fix: count requests when providers omit usage by @seratch in #4290
- fix: suppress pydantic serializer warnings by @seratch in #4291
- fix: keep FunctionTool subclasses copyable by @seratch in #4311
- fix: preserve streamed guardrail session state by @seratch in #4312
- fix: keep acknowledged safety checks serializable after restore by @ribhavjain in #4316
- fix: preserve default-valued fields in serialized tool output by @hsusul in #4307
- fix: strip output-only created_by when replaying model output as input by @hsusul in #4308
- fix: preserve local shell outputs across RunState resume by @seratch in #4320
- fix: serialize containers of models and dataclasses as structured data by @ribhavjain in #4339
- fix: reject schemas that exceed safe recursion depth by @seratch in #4358
- fix: reject unsafe strict-schema ref siblings by @seratch in #4356
- fix(sandbox): reject unsafe mount credential configurations by @seratch in #4255
- fix(extensions): settle snapshot directory mount transitions for Modal by @seratch in #4315
- fix(sandbox): preserve sandbox error contracts during mount redaction by @seratch in #4344
- feat(sandbox): add explicit mount credential exposure acknowledgements by @seratch in #4321
- fix(sandbox): cancel sibling env resolvers when one fails by @PranavMishra28 in #4195
- fix(sandbox): encode Blaxel terminal WebSocket URL query values by @abhay-codes07 in #4217
- fix(sandbox): stop splitting Cloudflare SSE events at chunk boundaries by @abhay-codes07 in #4215
- fix(sandbox): keep move_to when coercing apply_patch operation mappings by @hsusul in #4242
- fix(sandbox): retain program items in memory rollouts by @seratch in #4276
- fix(sandbox): restore archived file modes when extracting a workspace tar by @hsusul in #4287
- fix(sandbox): keep source entry metadata when lazily loading a skill by @hsusul in #4294
- fix(mcp): hosted MCP approval identity by @seratch in #4256
- fix(mcp): keep MCP error content when structured output is enabled by @adityasingh2400 in #4224
- fix(mcp): build the active server list without re-consuming the iterable by @adityasingh2400 in #4235
- fix(mcp): preserve free-form MCP object schemas by @seratch in #4310
- fix(mcp): serialize non-text content blocks as JSON instead of Python repr by @ribhavjain in #4338
- fix(mcp): serialize manager lifecycle operations by @seratch in #4340
- fix(mcp): bound lifecycle and CI waits by @seratch in #4342
- fix(chat-completions): keep url citations when converting chat completions output by @adityasingh2400 in #4222
- fix(chat-completions): assemble chat completions content parts in content index order by @adityasingh2400 in #4236
- fix(chat-completions): propagate the OpenAI request ID on the Chat Completions path by @hsusul in #4243
- fix(chat-completions): keep url citations on the streamed chat completions path by @Luccacvb in #4252
- fix(chat-completions): announce the chat completions assistant message once by @hsusul in #4275
- fix(chat-completions): convert input_file items that reference a file_id on the Chat Completions path by @hsusul in #4295
- fix(chat-completions): raise on audio output in the streamed chat completions path by @Luccacvb in #4309
- fix(chat-completions): omit parallel_tool_calls without tools on the Chat Completions path by @Luccacvb in #4359
- fix(sessions): release SQLite engine config entries when engines are collected by @adityasingh2400 in #4210
- fix(sessions): enforce closed state on SQLite session empty add_items by @adityasingh2400 in #4231
- fix(sessions): make session mutations atomic by @seratch in #4212
- fix(sessions): preserve required program item ids for OpenAI conversations by @hsusul in #4253
- fix(sessions): apply the reasoning item id policy to stored session history by @LeSingh1 in #4278
- fix(sessions): preserve DaprSession created_at across writes by @adityasingh2400 in #4213
- fix(sessions): strip placeholder item IDs before Conversations persistence by @hsusul in #4288
- fix(sessions): preserve falsey compaction decision hooks by @hsusul in #4299
- fix(sessions): restore session history when compaction replacement is cancelled by @nothariharan in #4298
- fix(sessions): prune orphaned tool outputs from limited sessions by @seratch in #4324
- fix(realtime): apply tool call item updates to session history by @hsusul in #4284
- fix(realtime): preserve falsey custom models by @hsusul in #4286
- fix(realtime): compute G.711 audio length for typed and mapping format spellings by @abhay-codes07 in #4292
- fix(voice): forward TTSModelSettings.speed to the OpenAI speech API by @adityasingh2400 in #4220
- fix(voice): keep the word separator when flushing streamed sentences by @abhay-codes07 in #4227
- fix(voice): start the dispatcher when a session ends with no turns by @adityasingh2400 in #4259
- fix(voice): report transcription session close failures to the consumer by @Luccacvb in #4343
- fix(tracing): release the trace scope when a generator is closed by @adityasingh2400 in #4221
- fix(tracing): release the span scope when a generator is closed by @adityasingh2400 in #4233
更进一步:量化金融体系
看懂新闻只是起点——沿量化金融路径,把它变成能交付的工程能力