GPT-6 Astra 프로그래매틱 도구 호출: 사용 시기와 이유
GPT-6 Astra가 생성된 프로그램 내에서 도구를 호출해야 하는 시점, allowed_callers와 output_schema의 작동 방식, 그리고 비용, 안전성, 승인을 제어하는 방법을 알아보세요.
| Source: Elser AI

기존의 함수 호출 방식은 모델을 일시 중단하고, 애플리케이션에 도구 요청을 반환한 후 결과를 기다렸다가 다시 시작합니다. 이 루프는 명확하고 제어 가능하지만, 많은 종속 호출, 로컬 필터링 또는 집계가 필요한 작업에서는 비효율적이 됩니다. GPT-6 Astra 프로그래매틱 도구 호출(PTC)을 사용하면 모델이 하나의 실행 흐름 내에서 적격 도구를 호출하는 프로그램을 작성할 수 있습니다.
변경 사항
호스팅된 programmatic_tool_calling 도구를 활성화한 다음, 적격 도구를 allowed_callers로 표시하세요.
const tools = [ { type: "programmatic_tool_calling" }, { type: "function", name: "get_sales", description: "한 지역과 한 달의 판매 기록을 반환합니다.", allowed_callers: ["프로그래매틱"], strict: true, parameters: { type: "객체", properties: { region: { type: "string" }, month: { type: "string" } }, 필수: ["지역", "월"], additionalProperties: false } } ];
`allowed_callers`가 생략되거나 `["직접"], 이 도구는 직접 호출할 수 있습니다.["프로그래매틱"]`를 생성된 코드로 제한하는 반면, `["직접", "프로그래매틱"]`는 두 가지를 모두 허용합니다. 이는 실행 정책 제어이므로, 프롬프트 문구보다는 권한처럼 검토하세요.
PTC는 함수 및 사용자 정의 도구, MCP, 패치 적용, 로컬 또는 호스팅 셸, 코드 인터프리터를 포함한 문서화된 도구 클래스를 지원합니다. 지원이 모든 도구가 노출되어야 함을 의미하지는 않습니다.
## PTC가 더 나은 패턴인 경우
모델이 다음을 수행해야 할 때 사용하세요:
- 여러 개의 독립적인 레코드를 가져와 집계합니다;
- 이전 결과에 기반하여 하나의 도구를 호출합니다;
- 대규모 결과를 추론 컨텍스트로 반환하기 전에 필터링하십시오;
- 소스 간 구조화된 출력 비교;
- 제한된 데이터 처리 루프를 실행합니다.
예를 들어, 분기별 분석에는 12번의 지역-월 호출 후 합계와 이상 탐지가 필요할 수 있습니다. 프로그램이 호출을 수행하고 12번의 모델 왕복을 강제하는 대신 간결한 요약을 반환할 수 있습니다.
하나 또는 두 개의 간단한 작업, 고위험 쓰기, 각 단계 사이에 명시적인 애플리케이션 결정이 필요한 워크플로, 또는 그래프가 결정적이어야 하는 작업에는 직접 함수 호출을 선호하세요. PTC가 자동으로 더 저렴하지는 않습니다: 제대로 경계가 설정되지 않은 프로그램은 너무 많은 호출을 발생시킬 수 있습니다.
## 구조화된 출력이 프로그램을 개선합니다
예측 가능한 함수의 경우 `output_schema`를 정의하세요. 실제 `function_call_output.output`은 JSON 문자열로 유지되지만, 스키마는 생성된 코드에 신뢰할 수 있는 형태를 제공합니다. 안정적인 타입은 방어적 파싱과 우발적인 가정을 줄여줍니다.
ID, 타입 메트릭, 명시적 오류 객체와 같은 간결한 데이터를 반환하세요. 코드에 숫자가 필요한 곳에서는 설명을 피하세요. 페이지네이션, 최대 행 수, 잘림 현상을 결과에 표시하여 프로그램이 부분 데이터셋을 전체 모집단으로 오인하지 않도록 하세요.
## 도구 검색 및 지연 로딩
도구 검색은 최상위 기능으로 유지됩니다. 공식 가이드에서는 지연된 도구가 프로그램 시작 전에 로드되어야 한다고 경고합니다. 실행 중인 프로그램은 도구 검색을 호출할 수 없기 때문입니다. 먼저 계획을 발견하고, 그다음에 실행하십시오. 카탈로그가 동적인 경우, 모델이 필요한 작은 하위 집합을 로드한 후에만 PTC를 시작하도록 하세요.
## 안전 제어
모든 프로그램을 벽시계 시간, 호출 횟수, 출력 바이트, 네트워크 대상 및 비용으로 제한합니다. 도구는 최소 권한으로 제한하고 비밀은 생성된 코드가 아닌 실행 환경에 보관합니다.
MCP 승인은 프로그램을 일시 중지할 수 있습니다. 의미 있는 승인 미리보기를 제공하면서 프로그램 상태를 유지하세요. 쓰기의 경우 멱등성 키와 서버 측 권한 부여를 사용하세요. 생성된 코드는 신뢰할 수 있는 지침에서 모델이 작성했더라도 신뢰할 수 없습니다.
프로그램 해시 또는 수정된 소스, 도구 시퀀스, 정리된 인수, 승인, 결과, 토큰 사용량 및 기간을 기록합니다. 자격 증명이나 원시 민감 데이터는 저장하지 마십시오.
## 프로덕션 의사결정 프레임워크
네 가지 질문을 하세요:
1. 임베디드 프로그램을 정당화할 만큼 충분한 호출이나 의존성이 있는가?
2. 모든 도구가 안전하게 바운딩되고 타입화될 수 있습니까?
3. 애플리케이션이 중간 제어를 위임하는 데 편안한가요?
4. 승인 또는 부분 실패 후 워크플로우를 재개할 수 있나요?
어떤 답변이 '아니오'라면, 오케스트레이션을 애플리케이션 코드에 유지하세요. 고정된 파이프라인의 경우, 소유한 결정적 코드가 올바른 선택인 경우가 많습니다.
## 비용 및 정확성 실험
PTC를 기존 루프와 동일한 작업을 사용하여 비교하세요. 작은 단일 호출 케이스, 종속적인 5회 호출 케이스, 대규모 집계 케이스를 포함하세요. 총 토큰 수, 도구 호출 수, 실제 소요 시간, 실패율, 계산 결과의 정확성을 측정하세요. 페이지가 매겨진 레코드를 조용히 누락시키는 더 빠른 답변은 개선이 아닙니다.
부분 실패 강제: 한 리전이 타임아웃되고, 한 결과가 출력 스키마를 위반하며, 한 MCP 작업이 승인을 요청하고, 한 데이터셋이 비어 있습니다. 생성된 프로그램은 성공한 입력을 보존하고, 부재를 0으로 처리하지 않으며, 모델이 제한 사항을 설명할 수 있도록 충분한 세부 정보를 반환해야 합니다.
인프라 한도 아래에 하드 한도를 설정하여 프로그램이 예측 가능하게 실패하도록 하세요. 명확한 `CALL_BUDGET_EXCEEDED` 결과는 컨테이너 종료보다 복구하기 쉽습니다. 분석 작업의 경우, 결정론적 코드에서 출력 샘플을 독립적으로 재계산하세요. 금융 또는 규정 준수 결과의 경우, 생성된 집계를 맹목적으로 신뢰하기보다 검증된 계산을 선호하세요.
이 실험은 종종 혼합 설계를 드러낸다: 읽기 중심의 탐색을 위한 PTC와 최종 쓰기 또는 규제된 계산을 위한 애플리케이션 소유 코드. 하이브리드 오케스트레이션은 모든 곳에서 최신 기능을 사용하지 못한 실패가 아니라 강점이다.
## 자주 묻는 질문
### PTC는 멀티 에이전트와 동일한가요?
아니요. PTC는 도구 호출 프로그램을 실행합니다. 멀티 에이전트는 제한된 작업을 자체 컨텍스트를 가진 하위 에이전트에게 위임합니다.
### PTC가 승인이 필요한 MCP 도구를 호출할 수 있나요?
네. 승인 시 프로그램이 일시 중지될 수 있습니다. 애플리케이션은 상태를 보존하고 안전하게 계속되어야 합니다.
### PTC가 함수 스키마를 제거하나요?
아니요. 생성된 코드가 이를 소비하기 때문에 강력한 입력 및 출력 계약이 더욱 중요해집니다.
### 모든 도구가 두 호출자 모드를 모두 지원해야 할까요?
아니요. 워크플로우에 필요한 모드만 허용하세요, 특히 민감한 도구의 경우에는 더욱 그렇습니다.
## 결론
프로그래매틱 도구 호출은 도구 오케스트레이션 자체가 병목일 때 유용합니다: 많은 호출, 의존성, 필터링, 집계가 있을 때입니다. 선택적으로 사용하고, 실행 전에 지연된 도구를 로드하며, 구조화된 출력을 정의하고, 엄격한 리소스 및 권한 제한을 적용하세요. 짧거나 위험도가 높은 워크플로우의 경우, 기존의 애플리케이션 제어 루프가 감사하기 더 쉽습니다.






























































































