프로그램형 도구 호출과 도구 데코레이터 확장
Programmatic Tool Calling과 `@tool` 별칭을 추가하고, 설정·로그·호환성을 전반적으로 다듬었습니다.
교안에 영향
이전 안내 글에서 `@tool` 대신 다른 decorator 이름을 쓰거나, 설정은 특정 형태만 받는다고 적은 부분은 맞지 않게 됩니다.
요약
- Programmatic Tool Calling을 추가해 지원되는 OpenAI Responses 모델이 JavaScript로 도구를 조정할 수 있게 했습니다. - `agents.decorators` 공개 모듈과 `@tool` 별칭을 추가했고, 함수 도구는 async callable object도 지원합니다. - SDK 설정은 typed settings object와 dictionary를 모두 받도록 바뀌었고, 알 수 없는 설정은 검증합니다. - 모델, 도구, MCP, Realtime, 세션, 샌드박스, 트레이싱의 오류·진단 로그를 더 안전하게 처리하도록 개선했습니다. - AnyLLM, LiteLLM, Chat Completions 호환성을 높이고, 세션 기록 보존과 WebSocket 과부하 재시도를 개선했습니다.
바뀐 것
새 기능
- `agents.tool.ProgrammaticToolCallingTool`을 추가해 지원되는 OpenAI Responses 모델이 JavaScript로 eligible tools를 조정할 수 있게 했습니다.
- 공개 `agents.decorators` 모듈과 짧은 `@tool` 별칭을 추가했습니다.
- `VercelCloudBucketMountStrategy`를 추가했습니다.
개선
- SDK 설정이 typed objects와 dictionaries를 일관되게 받도록 바꾸고, 알 수 없는 설정은 검증하도록 했습니다.
수정
- hand off 도구 필터링에서 programmatic transcripts를 제거했습니다.
- 구조화된 programmatic tool 오류를 JSON으로 인코딩하도록 바꿨습니다.
- 응답 시작 전 발생한 WebSocket overload 오류를 재시도하도록 했습니다.
- 민감한 런타임 로그가 노출되지 않도록 오류와 진단 로그를 강화했습니다.
- Realtime과 RunState 진단 로그의 민감한 내용을 가렸습니다.
- model과 tool 오류 로그에서 raw exceptions가 그대로 노출되지 않도록 했습니다.
- 호출 가능한 function tool 호환성을 유지하도록 했습니다.
- async callable objects를 function tools로 지원하도록 했습니다.
- 중첩 handoffs의 히스토리 소유권을 분리했습니다.
- 중첩 handoffs에서 programmatic transcripts를 요약하도록 했습니다.
- AnyLLM과 LiteLLM provider 호환성을 개선했습니다.
- 세션 재시도 시 session history를 보존하도록 했습니다.
- 유효하지 않은 callable approval arguments는 차단하도록 했습니다.
- lazy skill read probes를 올바르게 분류하도록 했습니다.
- verbose stdout logging handler를 재사용하도록 했습니다.
- Chat Completions에서 typed easy input messages를 인식하도록 했습니다.
- `ls` 출력 파싱 시 device nodes를 포함하도록 했습니다.
- `*args`와 `kwargs`의 docstring 설명을 tool schema에 보존하도록 했습니다.
- `function_schema`에서 inspect sentinels를 identity로 비교하도록 했습니다.
- SELinux security-context marker가 있는 `ls` 출력도 파싱하도록 했습니다.
- Modal tar workspace excludes에서 dot-prefixed skip paths를 보존하도록 했습니다.