AI 초보자 QnA
질문
OpenAI API에서 이번 요청에 쓸 함수만 골라 허용할 수 있나요?
답변
네. Responses API의
tool_choice
에
type
을
allowed_tools
로 지정하고, 이번에 허용할 함수 이름만 목록에 넣습니다. 전체
tools
정의를 유지하면서 요청마다 호출 가능한 함수의 범위를 바꿀 수 있습니다.
이 글은 직접 정의한 함수 중 이번 요청에 필요한 것만 고르는 방법입니다. 병렬 호출 개수, API 키 권한, ChatGPT 앱의 연결 설정과는 구분하세요. 함수가 허용됐다는 사실만으로 실제 실행까지 끝난 것은 아닙니다.
짧게 답하면
전체 함수 정의 확인 → 허용할 이름 선택 → tool_choice에 목록 전달 → 반환된 호출 이름 검토 순서로 시작하세요. 처음에는 공개 자료를 읽는 함수만 시험하고 변경·발송 함수는 제외합니다.
전체 tools
함수의 이름·설명·입력 스키마를 담습니다. 정의 목록과 순서를 유지합니다.
허용 목록
tool_choice 안에서 이번에 호출 가능한 함수만 지정합니다.
mode
auto는 호출 없이 답할 수도 있고 required는 허용 도구 호출을 요구합니다.
처음 쓰는 사람 기준으로 설명하면
예를 들어 날씨 조회와 문서 검색 함수가 이미 있는 앱에서 문서만 찾으려 한다고 해 보세요. 전체 함수 정의를 다시 만들지 않고 이번 요청의 허용 목록에
search_docs
만 넣습니다. 이 이름은 예시이므로 실제 등록한 함수 이름과 맞춰야 합니다.
Function calling 가이드는 제공한 도구의 일부만 허용하는 설정을 안내합니다. 전체 정의는 요청의
tools
에 두고,
tool_choice
객체의
tools
에는 허용할 함수의
type
과
name
을 넣는 구조입니다. 같은 tools라는 이름이어도 위치와 역할이 다릅니다.
API 참조의
mode
는
auto
와
required
를 지원합니다. auto에서는 일반 답변이 나올 수 있습니다. required도 허용 목록의 모든 함수를 전부 실행하라는 뜻은 아닙니다. 프롬프트 캐싱 가이드는 정의와 순서를 안정적으로 유지하며 호출 범위만 바꾸라고 안내하지만, 이 설정만으로 비용 절감을 보장하지는 않습니다.
한 줄 정리: 전체 도구 정의와 이번 요청의 허용 목록을 나눠 관리하고, 실행 직전에는 앱에서도 허용 여부를 확인하세요.
바로 따라 해보기
1단계. 등록된 함수와 허용할 이름을 읽습니다.
함수 호출을 지원하는 모델과 기존 Responses API 요청을 확인하세요. 전체 tools에서 이름·설명·입력 형식을 보고 이번 목적에 맞는 조회 함수 하나를 고릅니다. 연습에 메일 발송·삭제·결제 함수는 쓰지 않습니다.
2단계. 요청에 허용 목록을 넣습니다.
전체 tools는 그대로 두고 tool_choice에 다음 JSON 객체를 전달하세요.
{"type":"allowed_tools","mode":"auto","tools":[{"type":"function","name":"search_docs"}]}
는 등록된 문서 검색 함수만 허용하는 예시입니다. 최상위에 allowed_tools라는 새 항목을 만드는 방식이 아닙니다.
3단계. 함수 호출 이름과 결과를 따로 확인합니다.
응답의
output
에서
function_call
항목을 찾아
name
이 이번 허용 목록에 있는지 봅니다. 호출이 없으면 auto의 일반 답변과 오류를 구분하세요. 호출이 있으면 입력을 검증하고 앱이 실행한 결과를 돌려줍니다. 다음 요청에서도 목적에 맞는 목록을 명시합니다.
주의할 점
허용 목록은 모델이 요청할 수 있는 함수를 제한하는 설정입니다. 함수의 내부 코드나 데이터 접근 권한, 사람 승인까지 대신하지 않습니다. search_docs라는 이름만 보고 읽기 전용이라고 믿지 말고 실제 동작과 입력 대상도 확인하세요.
required면 목록의 함수가 전부 실행되거나 정확히 한 번만 호출된다고 생각합니다. 호출 여부·범위·개수는 각각 확인하세요.
허용 목록을 API 키의 Restricted 권한이나 MCP 도구의 별도 allowed_tools 항목과 섞습니다. 이 글의 설정 위치는 Responses 요청의 tool_choice 안입니다.
앱이 받은 모든 함수 이름을 검사 없이 실행합니다. 허용 이름·인수·사용자 권한을 먼저 검증하고 변경 작업은 사람 승인과 분리하세요.
웹사이트와 앱 중 무엇부터 쓰면 좋을까요?
웹 문서에서 구조부터 확인
공식 Function calling 예제와 API 참조를 함께 읽으세요. 함수 정의의 tools와 tool_choice 안의 허용 목록을 나란히 비교하면 위치를 확인하기 쉽습니다.
앱을 만들 때는 작은 시험 요청
같은 전체 함수 정의로 허용 목록만 바꿔 보고 반환된 이름을 기록하세요. ChatGPT 모바일 앱에서 켜는 설정이 아니며 API 키는 서버의 비밀 설정에 보관합니다.
확인한 공식 자료
OpenAI 공식 가이드 — Function calling — 전체 정의를 유지하면서 허용할 함수 일부만 선택하는 JSON 구조와 함수 실행 흐름을 확인했습니다.
OpenAI API 참조 — Create a model response — tool_choice의 allowed_tools 객체, mode의 auto·required 값과 역할을 확인했습니다.
OpenAI 공식 가이드 — Prompt caching — 도구 정의·스키마·순서를 유지하며 호출 가능한 범위만 바꾸는 기준을 확인했습니다.
