Custom function tool 은 JSON Schema 의 parameters + 세 필드 — type: "function", name, description. Responses 에선 셋 다 tool object 의 top level. Chat Completions 에선 nested function sub-object 안. Schema body 는 동일.
Migration trip-up 1 위
두 shape 섞으면 silent break. Chat Completions 에서 tools[i].function.name, Responses 에서 tools[i].name. 옮길 때 wrapper 차이를 의식 못하면 호출이 조용히 깨짐.
Description 은 prompt 의 일부
모델은 description 을 읽어. Vague description ('Get the weather') = 모델이 가까운 모든 query 에 호출. Explicit boundary 있는 description ('Get current weather for a city; 24h 너머 forecast 나 "the moon" 같은 non-city 엔 호출 X') = 라우팅 정확.
Per-parameter description 도
parameters.properties[i].description 도 모델이 읽어. units: 'temperature unit, celsius or fahrenheit' 는 OK. units: 'required' 는 X — schema 가 이미 required.