본문 바로가기
프로그래밍/AI

Chat Plugins - productionizing your plugin

by 사악신 2024. 1. 12.

Rate limits

노출된 API 엔드포인트에 대해 속도 제한을 구현하는 것을 고려하세요. ChatGPT는 429 응답 코드를 존중하며, 짧은 시간 내에 일정 수의 429 또는 500 응답을 받은 후 플러그인에 요청을 보내는 것을 동적으로 줄입니다.

 

Timeouts

플러그인 경험 중 API 호출을 할 때, 다음 임계값을 초과하면 타임아웃이 발생합니다:

  • ai-plugin.json/openapi.yaml을 가져오는 데 걸리는 왕복 시간 15초
  • API 호출을 위한 왕복 시간 45초

플러그인 경험을 더 많은 사람들에게 확장함에 따라, 타임아웃 임계값이 감소할 것으로 예상합니다.

Rate limiting users

저희는 지속적인 사용자 수준 ID를 노출하지 않고, 대신 플러그인에 보내는 요청에 openai-ephemeral-user-id 헤더를 전달합니다. openai-ephemeral-user-id는 매일 자정 UTC 시간에 재설정됩니다. 또한 개발자가 요청이 관련된 대화를 확인할 수 있도록 지속적인 openai-conversation-id 헤더도 노출합니다.

Updating your plugin

ai-plugin.json 파일에 변경 사항을 적용할 때마다 플러그인 스토어의 "Develop your own plugin" 흐름을 통해 매니페스트 파일을 수동으로 업데이트해야 합니다. ChatGPT는 요청이 있을 때마다 최신 OpenAPI 사양을 자동으로 가져오므로, 변경 사항은 즉시 최종 사용자에게 전파됩니다. 플러그인이 ChatGPT 플러그인 스토어에 있는 경우 "Develop your own plugin" 흐름을 거치면 파일의 변경 사항을 자동으로 확인하고 변경된 경우 플러그인을 제거합니다. 스토어에 다시 포함되기 위해서는 플러그인을 다시 제출해야 합니다.

Plugin terms

플러그인을 등록하기 위해서는 플러그인 이용 약관에 동의해야 합니다.

 

Domain verification and security

플러그인이 자신이 제어하는 리소스에만 작업을 수행할 수 있도록 하기 위해, OpenAI는 플러그인의 매니페스트 및 API 사양에 대한 요구사항을 강제합니다.

Defining the plugin's root domain

플러그인의 매니페스트 파일은 사용자에게 표시되는 정보(로고 및 연락처 정보 등)와 플러그인의 OpenAPI 사양이 호스팅되는 URL을 정의합니다. 매니페스트가 가져오는 과정에서, 플러그인의 루트 도메인은 다음 규칙에 따라 설정됩니다:

  • 도메인에 www.가 서브도메인으로 있는 경우, 매니페스트를 호스팅하는 도메인에서 www.를 제거하여 루트 도메인으로 설정합니다.
  • 그렇지 않은 경우, 루트 도메인은 매니페스트를 호스팅하는 도메인과 동일합니다.

리디렉션에 대한 참고 사항: 매니페스트를 해석하는 과정에서 리디렉션이 있는 경우, 자식 서브도메인 리디렉션만 허용됩니다. 유일한 예외는 www 서브도메인에서 www가 없는 서브도메인으로 리디렉션을 따르는 경우입니다.

루트 도메인이 어떻게 보이는지에 대한 예시:

Manifest validation

매니페스트 자체의 특정 필드는 다음 요구사항을 충족해야 합니다:

  • api.url - OpenAPI 사양에 제공된 URL은 루트 도메인과 동일한 레벨 또는 서브도메인에 호스팅되어야 합니다.
  • legal_info - 제공된 URL의 두 번째 레벨 도메인은 루트 도메인의 두 번째 레벨 도메인과 동일해야 합니다.
  • contact_info - 이메일 주소의 두 번째 레벨 도메인은 루트 도메인의 두 번째 레벨 도메인과 동일해야 합니다.

Resolving the API spec

매니페스트의 api.url 필드는 플러그인이 호출할 수 있는 API를 정의하는 OpenAPI 사양에 대한 링크를 제공합니다. OpenAPI는 여러 서버 기본 URL을 지정할 수 있습니다. 서버 URL을 선택하기 위해 다음과 같은 논리가 사용됩니다:

  • 서버 URL 목록을 순회합니다.
  • 루트 도메인과 정확히 일치하거나 루트 도메인의 서브도메인인 첫 번째 서버 URL을 사용합니다.
  • 위의 경우에 해당하지 않으면, API 사양이 호스팅된 도메인을 기본값으로 사용합니다. 예를 들어, 사양이 api.example.com에 호스팅되어 있다면, api.example.com이 OpenAPI 사양의 경로에 대한 기본 URL로 사용됩니다.


참고: API 사양 및 API 엔드포인트를 호스팅하는 데 리디렉션을 사용하는 것은 피하세요. 리디렉션이 항상 따라질 것이라는 보장이 없기 때문입니다.

Use TLS and HTTPS

플러그인과의 모든 트래픽(예: ai-plugin.json 파일, OpenAPI 사양, API 호출 등)은 유효한 공개 인증서를 사용하여 TLS 1.2 이상 버전으로 포트 443에서 처리되어야 합니다.

IP egress ranges

ChatGPT는 다음 CIDR 블록 중 하나의 IP 주소에서 플러그인을 호출할 것입니다:

  • 23.102.140.112/28
  • 13.66.11.96/28

이 IP 주소들을 명시적으로 화이트리스트에 추가하고 싶을 수 있습니다.

별도로, OpenAI의 웹 브라우징 플러그인은 다른 CIDR 블록의 IP 주소에서 웹사이트에 접근합니다:

  • 23.98.142.176/28
  • 40.84.180.224/28

 

FAQ

How is plugin data used?

플러그인은 ChatGPT를 외부 앱에 연결합니다. 사용자가 플러그인을 활성화하면, ChatGPT는 그들의 대화 일부와 국가 또는 주 정보를 플러그인에 보낼 수 있습니다.

What happens if a request to my API fails?

API 요청이 실패할 경우, 모델은 사용자에게 해당 플러그인으로부터 응답을 받을 수 없다고 알리기 전에 최대 10번까지 요청을 재시도할 수 있습니다.

Can I invite people to try my plugin?

네, 모든 미인증 플러그인은 플러그인 접근 권한을 가진 최대 100명의 다른 개발자에 의해 설치될 수 있습니다. 플러그인이 플러그인 스토어에 있으면 모든 ChatGPT 플러스 고객이 접근할 수 있습니다.

Can I charge people money for my plugin?

현재는 아닙니다.

 

반응형

댓글