request body 를 직접 만들면 API가 실제로 받는 구조가 보여. model, input, tools, instructions, max_output_tokens, stream, tool_choice 의 정확한 이름과 값을 application 이 모두 책임져. SDK helper가 넣어주던 기본값도 없어.
422 오류는 실제 JSON에서 찾아
SDK 호출은 되지만 직접 만든 호출이 422를 낸다면 field 이름 오타나 tool의 type: "function" 누락을 먼저 확인해. 실제 body를 한 번 만들어보면 SDK 뒤에도 단순한 요청 규칙이 있다는 게 보여.
header 도 직접 구성해
Authorization: Bearer <key>, Content-Type: application/json, beta 기능의 OpenAI-Beta: ...를 필요에 따라 넣어. 조직과 project 범위를 지정하려면 OpenAI-Organization, OpenAI-Project도 직접 보내야 해.
streaming 에는 Accept 를 밝혀
streaming 호출에는 Accept: text/event-stream 을 넣어. 일부 proxy 는 이 header가 없으면 SSE를 모았다가 한꺼번에 보내 streaming 효과를 없앨 수 있어.