AI 초보자 QnA
질문
OpenAI API가 한 번에 여러 함수를 부르지 않게 할 수 있나요?
답변
네. Responses API에서 일반 사용자 정의 함수를 쓸 때 요청의
parallel_tool_calls
를
false
로 설정하면 한 턴의 함수 호출을 0개 또는 1개로 제한합니다.
반드시 한 함수를 부르라는 뜻은 아닙니다. 호출이 필요한지 정하는 tool_choice와는 역할이 다르고, 결과를 돌려준 뒤 다음 턴에서 다른 함수를 부르는 일까지 막지는 않습니다. 이 글은 Responses API의 함수 호출 설정만 다룹니다.
짧게 답하면
함수 지원 확인 → 병렬 호출 끄기 → 응답의 함수 호출 수 확인 → 결과 전달 뒤 다음 턴 점검 순서입니다. 호출 개수와 실제 실행 여부를 따로 기록하세요.
parallel_tool_calls
한 턴에서 여러 함수를 함께 호출하도록 허용할지 정합니다. false로 끄면 0개 또는 1개입니다.
tool_choice
함수를 호출할지, 어떤 함수를 고를지 정합니다. 병렬 허용과 별도로 확인합니다.
앱의 실행 코드
모델이 요청한 함수를 실제로 실행합니다. 입력 검증과 승인 절차도 여기서 관리합니다.
처음 쓰는 사람 기준으로 설명하면
서로 독립적인 두 도시의 정보를 조회할 때는 모델이 여러 함수를 한 턴에 요청할 수 있습니다. 처음 함수 연결을 배우거나 한 호출의 결과부터 검토하고 싶다면 병렬 호출을 끄고 작은 조회 작업으로 연습하세요. 다만 이 설정으로 특정 함수의 실행 순서까지 지정되지는 않습니다.
공식 Function calling 가이드는 parallel_tool_calls를 false로 지정하면 한 턴에 호출이 0개 또는 1개라고 설명합니다. tool_choice가 auto이면 모델은 함수를 쓰지 않고 답할 수도 있습니다. 호출 수를 제한하는 설정과 호출을 요구하는 설정을 섞어 생각하지 마세요.
Using tools 가이드는 쓸 기능을 tools에 정의하고 tool_choice로 사용 방식을 제어한다고 안내합니다. Create a model response 참조에도 병렬 허용 여부를 나타내는 별도 항목이 있습니다. 이번 연습에서는 내장 검색이나 다중 에이전트 대신 일반 함수만 연결합니다.
한 줄 정리: 병렬 호출을 끄는 것은 한 턴의 함수 요청 수를 제한하는 일입니다. 전체 작업을 한 번의 호출로 끝내거나 위험한 실행을 자동 차단하는 기능은 아닙니다.
바로 따라 해보기
1단계. 작은 조회 함수와 요청을 준비합니다.
현재 모델이 Responses API의 함수 호출을 지원하는지 확인하세요. 공식 예제의 함수 정의를 참고해 공개 가능한 자료만 읽는 연습용 함수를 tools에 넣습니다. 메일 발송·파일 삭제 같은 변경 함수는 첫 시험에서 제외하세요.
2단계. 생성 요청에서 병렬 호출을 끕니다.
기존
client.responses.create
요청에
parallel_tool_calls=False
와
tool_choice="auto"
를 명시하세요. Python은 False, JSON 본문은 false를 씁니다. input에는 조회할 내용을 넣고, 실제 전송한 설정과 모델 이름을 확인합니다.
3단계. 함수 항목만 세고 결과를 돌려줍니다.
응답의
response.output
에서
type="function_call"
인 항목 수를 확인하세요. 텍스트나 추론 항목까지 함수로 세지 않습니다. 호출이 있으면 이름·인수를 검증한 뒤 실행하고
function_call_output
의
call_id
를 맞춰 결과를 보냅니다. 공식 예제처럼 이전 응답 항목도 보존하세요. 후속 생성 요청에도 병렬 설정을 명시합니다.
주의할 점
함수 요청을 받았다는 사실만으로 실행 성공이라고 보고하지 마세요. 모델의 요청, 앱이 실행한 결과, 후속 답변을 나눠 확인합니다. 한 턴에 하나씩 불러도 전체 작업에서는 여러 번 호출할 수 있으므로 반복 횟수와 중단 조건은 앱에서 별도로 정하세요.
false로 설정하면 반드시 함수 한 개가 나온다고 생각합니다. auto에서는 호출이 없는 답변도 가능하므로 실제 응답을 확인하세요.
병렬 호출을 끄면 조회 후 수정이라는 순서와 사용자 권한까지 보장된다고 믿습니다. 의존 관계·입력 검증·위험 작업 승인은 앱에서 따로 확인하세요.
이 설정을 모든 내장 도구, 함수 내부의 동시 실행, 여러 에이전트의 작업 제한으로 확대합니다. 연동 방식별 문서와 실제 실행 코드를 별도로 살피세요.
웹사이트와 앱 중 무엇부터 쓰면 좋을까요?
요청 계약은 공식 웹 문서에서
Function calling의 Parallel function calling을 먼저 읽고 Create a model response의 필드를 대조하세요. Responses API와 Chat Completions의 결과 구조를 섞지 않습니다.
호출 수 검사는 API 개발 환경에서
SDK가 받은 response.output과 앱의 실행 로그를 함께 봅니다. ChatGPT 웹·모바일 앱의 메뉴에서 API 병렬 설정을 바꾸는 작업은 아닙니다. API 키와 개인 자료는 공개 로그에 남기지 마세요.
같이 보면 좋은 질문
확인한 공식 자료
OpenAI 공식 가이드 — Function calling — 한 턴의 병렬 함수 호출 제한, 호출 여부 설정과 결과 전달 흐름을 확인했습니다.
OpenAI API 참조 — Create a model response — parallel_tool_calls와 tool_choice의 별도 역할, 함수 출력 항목을 확인했습니다.
OpenAI 공식 가이드 — Using tools — tools로 기능을 제공하는 방식과 Responses·Agents API·SDK의 연동 차이를 확인했습니다.
