GPT Actions 운영(Production) 참고 사항

GPT Actions 운영(Production) 참고 사항

GPT Actions를 실제 운영 환경에 배포할 때 알아야 할 한도(rate limit), 타임아웃, 보안, OpenAPI 사양 제한 등을 정리한 가이드예요.

출처: 문서

본문

Rate limits (요청 한도)

노출하는 API 엔드포인트에 rate limiting(요청 한도)을 구현하는 것을 고려해 보세요. ChatGPT는 429 응답 코드를 존중하며, 짧은 시간 안에 일정 수의 429 또는 500 응답을 받으면 액션으로의 요청 전송을 동적으로 백오프(back off)해요.

Timeouts (타임아웃)

액션 경험 중 API 호출을 할 때 다음 임계값을 초과하면 타임아웃이 발생해요:

  • API 호출 왕복(round trip) 45초

TLS와 HTTPS 사용

액션으로 향하는 모든 트래픽은 유효한 공개 인증서와 함께 포트 443에서 TLS 1.2 이상을 사용해야 해요.

IP 이그레스 범위 (IP egress ranges)

ChatGPT는 게시된 IP 범위 중 하나에서 여러분의 액션을 호출해요. 이 IP 주소들을 명시적으로 허용 목록(allowlist)에 추가하는 것을 고려할 수 있어요.

여러 인증 스키마

액션을 정의할 때 단일 인증 유형(OAuth 또는 API key)과 함께 인증이 필요 없는 엔드포인트를 혼합할 수 있어요.

액션 인증에 대해 더 자세히 알아보려면 actions authentication page를 참고하세요.

Open API 사양 제한

OpenAPI 사양에서 다음 제한에 유의하세요. 이 제한은 변경될 수 있어요:

  • API 사양의 각 엔드포인트 description/summary 필드 최대 300자
  • API 사양의 각 파라미터 description 필드 최대 700자

추가 제한 사항

액션으로 구축할 때 알아야 할 몇 가지 제한이 있어요:

  • Custom headers는 지원되지 않아요
  • Google, Microsoft, Adobe OAuth 도메인을 제외하고, OAuth 흐름에 사용되는 모든 도메인은 기본 엔드포인트에 사용된 도메인과 동일해야 해요
  • 요청 및 응답 페이로드는 각각 100,000자 미만이어야 해요
  • 요청은 45초 후 타임아웃돼요
  • 요청과 응답은 텍스트만 포함할 수 있어요(이미지나 비디오 없음)

Consequential flag (중대한 영향 플래그)

OpenAPI 사양에서 이제 아래처럼 특정 엔드포인트를 "consequential"(중대한 영향)로 설정할 수 있어요:

paths:
  /todo:
    get:
      operationId: getTODOs
      description: Fetches items in a TODO list from the API.
      security: []
    post:
      operationId: updateTODOs
      description: Mutates the TODO list.
      x-openai-isConsequential: true

consequential 액션의 좋은 예는 사용자를 대신해 호텔 방을 예약하고 비용을 지불하는 경우예요.

  • x-openai-isConsequential 필드가 true이면, ChatGPT는 그 작업을 "실행 전에 항상 사용자 확인을 요청해야 함"으로 취급하며 "always allow"(항상 허용) 버튼을 표시하지 않아요. (둘 다 빌더와 사용자에게 액션에 대한 더 큰 통제권을 주기 위해 설계된 GPT의 기능이에요.)
  • x-openai-isConsequential 필드가 false이면, ChatGPT는 "always allow" 버튼을 표시해요.
  • 필드가 없으면 ChatGPT는 모든 GET 작업을 기본적으로 false로, 다른 모든 작업을 true로 설정해요.

예시 제공에 대한 모범 사례

GPT 지침과 스키마의 설명을 작성할 때, 그리고 API 응답을 설계할 때 따르면 좋은 모범 사례는 다음과 같아요:

  1. 여러분의 설명은 사용자가 액션의 특정 카테고리 서비스를 요청하지 않았을 때 GPT가 액션을 사용하도록 유도해서는 안 돼요.

    잘못된 예시:

    Whenever the user mentions any type of task, ask if they would like to use the TODO action to add something to their todo list.

    좋은 예시:

    The TODO list can add, remove and view the user's TODOs.

  2. 여러분의 설명은 GPT가 액션을 사용하도록 특정 트리거를 규정해서는 안 돼요. ChatGPT는 적절할 때 액션을 자동으로 사용하도록 설계되어 있어요.

    잘못된 예시:

    When the user mentions a task, respond with "Would you like me to add this to your TODO list? Say 'yes' to continue."

    좋은 예시:

    [no instructions needed for this]

  3. API의 액션 응답은 필요하지 않다면 자연어 응답 대신 원시 데이터(raw data)를 반환해야 해요. GPT가 반환된 데이터를 사용해 자체적인 자연어 응답을 제공할 거예요.

    잘못된 예시:

    I was able to find your todo list! You have 2 todos: get groceries and walk the dog. I can add more todos if you'd like!

    좋은 예시:

    { "todos": [ "get groceries", "walk the dog" ] }

GPT Action 데이터의 사용 방식

GPT Actions는 ChatGPT를 외부 앱에 연결해요. 사용자가 GPT의 커스텀 액션과 상호작용하면, ChatGPT는 대화의 일부를 액션의 엔드포인트로 보낼 수 있어요.

질문이 있거나 추가 제한 사항을 발견하면 OpenAI developer forum에서 토론에 참여할 수 있어요.

더 알아보기 (Learn more)

관련 문서: GPT Actions 인증과 GPT Actions 시작하기를 참고하세요.