custom function tool 은 JSON Schema 형태의 parameters 와 type: "function", name, description 으로 정의해. Responses 에서는 이 필드들이 tool 객체의 최상위에 있고, Chat Completions 에서는 function 하위 객체 안에 있어. parameter schema 자체는 같아.
API 를 옮길 때 wrapper 차이를 확인해
Chat Completions 는 tools[i].function.name, Responses 는 tools[i].name 을 사용해. 두 구조를 섞으면 도구 호출이 깨질 수 있으니 migration 때 가장 먼저 확인해.
description 도 모델이 읽는 지시야
'Get the weather'처럼 모호하게 쓰면 모델이 날씨와 조금만 관련 있어도 도구를 부를 수 있어. '도시의 현재 날씨에만 사용하고 24 시간 이후 예보나 도시가 아닌 장소에는 사용하지 않는다'처럼 사용 범위를 적으면 routing 이 더 정확해져.
parameter 설명에는 의미를 적어
parameters.properties[i].description 도 모델이 읽어. units: 'temperature unit, celsius or fahrenheit' 처럼 값의 의미와 허용 범위를 설명해. 단순히 'required'라고 쓰는 건 schema 가 이미 알려주는 정보를 되풀이할 뿐이야.