OpenAI

[CHATGPT Actions 번역] 시작하기

JasonM 2024. 4. 22. 11:45
반응형

 

GPT에 대한 작업을 만드는 데는 3단계가 필요합니다.

  1. API 구축
  2. OpenAPI YAML 또는 JSON 형식으로 API 문서화
  3. ChatGPT UI에서 GPT에 스키마를 노출하세요.

이 섹션의 나머지 부분에서는 GPT에 대한 맞춤 작업을 정의하여 TODO 목록 GPT를 만드는 데 중점을 둡니다.

GPT 스키마 생성 프로세스를 시작하려면 실험적인 ActionsGPT를 사용할 수 있습니다 . GPT를 구축할 때 알려진 제한사항 에 유의하세요 .

스키마 정의

TODO GPT의 기본 사항을 생성한 후 다음 단계는 API를 문서화하기 위한 OpenAPI 사양을 구축하는 것입니다. ChatGPT의 모델은 스키마에 정의된 API 구조만 인식합니다. API가 광범위하다면 모든 기능을 모델에 노출할 필요가 없습니다. 포함할 특정 엔드포인트만 선택할 수 있습니다. 예를 들어 소셜 미디어 API가 있는 경우 모델이 GET 요청을 통해 사이트의 콘텐츠에 액세스하도록 할 수 있지만 스팸 가능성을 줄이기 위해 모델이 사용자 게시물에 댓글을 달 수 없도록 차단할 수 있습니다.

OpenAPI 사양은 API 위에 위치하는 래퍼입니다. 기본 OpenAPI 사양은 다음과 같습니다.

openapi: 3.0.1
info:
  title: TODO Action
  description: An action that allows the user to create and manage a TODO list using a GPT.
  version: 'v1'
servers:
  - url: https://example.com
paths:
  /todos:
    get:
      operationId: getTodos
      summary: Get the list of todos
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/getTodosResponse'
components:
  schemas:
    getTodosResponse:
      type: object
      properties:
        todos:
          type: array
          items:
            type: string
          description: The list of todos.
 
 

사양 버전, 제목, 설명 및 버전 번호를 정의하는 것부터 시작합니다. ChatGPT에서 쿼리가 실행되면 작업이 사용자 쿼리와 관련이 있는지 확인하기 위해 정보 섹션에 정의된 설명을 확인합니다. 설명 작성 섹션 에서 프롬프트에 대한 자세한 내용을 읽을 수 있습니다 .

OpenAPI 사양의 다음 제한 사항은 변경될 수 있다는 점에 유의하세요.

  • API 사양의 각 API 엔드포인트 설명/요약 필드는 최대 300자입니다.
  • API 사양의 각 API 매개변수 설명 필드는 최대 700자입니다.

OpenAPI 사양은 기존 OpenAPI 형식을 따르므로 OpenAPI 형식 및 작동 방식에 대해 자세히 알아볼 수 있습니다. 기본 API 코드를 기반으로 OpenAPI 사양을 자동 생성하는 도구도 많이 있습니다.

 

호스팅 OpenAPI 사양

Actions를 통해 변경 사항을 추적하기 위해 API에 대한 OpenAPI 사양을 호스팅합니다. 기존 OpenAPI 사양을 가져오거나 GPT 생성기의 UI를 사용하여 처음부터 새 사양을 만들 수 있습니다 .

파일 포함

POST 요청에는 대화에서 최대 10개의 파일(DALL-E 생성 이미지 포함)이 포함될 수 있습니다. 5분 동안 유효한 URL로 전송됩니다.

파일이 POST 요청의 일부가 되려면 매개변수 이름을 지정해야 하며 openaiFileIdRefs설명은 API에서 예상하는 파일의 유형과 수량을 모델에 설명해야 합니다.

매개 openaiFileIdRefs변수는 JSON 객체 배열로 채워집니다. 각 개체에는 다음이 포함됩니다.

  • name파일의 이름입니다. 이는 DALL-E가 생성될 때 자동 생성된 이름입니다.
  • id파일의 안정적인 식별자입니다.
  • mime_type파일의 MIME 유형입니다. 사용자가 업로드한 파일의 경우 이는 파일 확장자를 기반으로 합니다.
  • download_link5분 동안 유효한 파일을 가져오는 URL입니다.

openaiFileIdRefs다음은 두 요소가 있는 배열 의 예입니다 .

[
  {
    "name": "dalle-Lh2tg7WuosbyR9hk",
    "id": "file-XFlOqJYTPBPwMZE3IopCBv1Z",
    "mime_type": "image/webp",
    "download_link": "https://files.oaiusercontent.com/file-XFlOqJYTPBPwMZE3IopCBv1Z?se=2024-03-11T20%3A29%3A52Z&sp=r&sv=2021-08-06&sr=b&rscc=max-age%3D31536000%2C%20immutable&rscd=attachment%3B%20filename%3Da580bae6-ea30-478e-a3e2-1f6c06c3e02f.webp&sig=ZPWol5eXACxU1O9azLwRNgKVidCe%2BwgMOc/TdrPGYII%3D"
  },
  {
    "name": "2023 Benefits Booklet.pdf",
    "id": "file-s5nX7o4junn2ig0J84r8Q0Ew",
    "mime_type": "application/pdf",
    "download_link": "https://files.oaiusercontent.com/file-s5nX7o4junn2ig0J84r8Q0Ew?se=2024-03-11T20%3A29%3A52Z&sp=r&sv=2021-08-06&sr=b&rscc=max-age%3D299%2C%20immutable&rscd=attachment%3B%20filename%3D2023%2520Benefits%2520Booklet.pdf&sig=Ivhviy%2BrgoyUjxZ%2BingpwtUwsA4%2BWaRfXy8ru9AfcII%3D"
  }
]

작업에는 사용자가 업로드한 파일, DALL-E에서 생성한 이미지, Code Interpreter에서 생성한 파일이 포함될 수 있습니다.

OpenAPI 예시

/createWidget:
    post:
      operationId: createWidget
      summary: Creates a widget based on an image.
      description: Uploads a file reference using its file id. This file should be an image created by DALL·E or uploaded by the user. JPG, WEBP, and PNG are supported for widget creation.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                openaiFileIdRefs:
                  type: array
                  items:
                    type: string

이 스키마는 openaiFileIdRefs유형의 배열로 표시되지만 string런타임 시 이전에 표시된 대로 JSON 개체의 배열로 채워집니다.

결과적 플래그

OpenAPI 사양에서는 이제 아래와 같이 특정 엔드포인트를 "결과적"으로 설정할 수 있습니다.

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

결과적 작업의 좋은 예는 호텔 객실을 예약하고 사용자를 대신하여 비용을 지불하는 것입니다.

  • x-openai-isConsequential필드 가 인 경우 true작업을 "실행하기 전에 항상 사용자에게 확인 메시지를 표시해야 함"으로 처리하고 "항상 허용" 버튼을 표시하지 않습니다(둘 다 빌더와 사용자에게 작업에 대한 더 많은 제어권을 제공하도록 설계된 GPT의 기능임).
  • x-openai-isConsequential필드가 이면 false"항상 허용 버튼"이 표시됩니다.
  • 필드가 없으면 모든 GET 작업은 기본값으로 설정되고 false다른 모든 작업은 기본값으로 설정됩니다.true

다중 인증 스키마

작업을 정의할 때 인증이 필요하지 않은 엔드포인트와 함께 단일 인증 유형(OAuth 또는 API 키)을 혼합할 수 있습니다.

작업 인증 페이지 에서 작업 인증에 대해 자세히 알아볼 수 있습니다 .

작업 테스트

GPT 편집기에서 작업을 추가하면 스키마 아래에 '사용 가능한 작업'이라는 새 섹션이 표시됩니다. 이는 스키마를 구문 분석하여 생성됩니다. 작업이 실행되는 이름, 메서드 및 경로를 미리 볼 수 있습니다. 또한 작업을 시도할 수 있는 "테스트" 버튼도 표시됩니다. "테스트"를 누르면 GPT 편집기의 미리보기 섹션에 작업 실행을 위한 "허용", "항상 허용" 또는 "거부" 요청이 표시됩니다. 이는 최종 사용자에게 작업 수행 작업에 대한 더 많은 제어권을 제공하도록 설계된 사용자 확인입니다.

또한 미리 보기 모드에는 의도하지 않은 동작을 이해하는 데 도움이 되는 다양한 디버깅 정보가 제공됩니다. 모든 것이 예상대로 작동하는 경우 오른쪽 상단에서 GPT를 저장하거나 업데이트할 수 있습니다.

설명 작성

사용자가 작업을 트리거할 수 있는 쿼리를 수행하면 모델은 스키마의 끝점에 대한 설명을 살펴봅니다. 다른 언어 모델 프롬프트와 마찬가지로 여러 프롬프트와 설명을 테스트하여 무엇이 가장 효과적인지 확인하고 싶을 것입니다.

스키마는 사용 가능한 함수 및 해당 매개변수와 같은 API에 대한 자세한 정보를 모델에 제공하기에 좋은 장소입니다. 각 필드에 대해 표현적이고 정보가 풍부한 이름을 사용하는 것 외에도 스키마에는 모든 속성에 대한 "설명" 필드가 포함될 수도 있습니다. 이러한 필드를 사용하여 각 메서드의 기능이나 쿼리 필드에 필요한 정보를 설명하는 자연어 설명을 제공할 수 있습니다. 모델은 이를 볼 수 있으며 API를 사용하여 모델을 안내할 것입니다. 필드가 특정 값으로만 ​​제한된 경우 설명적인 범주 이름과 함께 "열거형"을 제공할 수도 있습니다.

GPT 지침을 사용하면 일반적으로 작업을 사용하는 방법을 GPT에 자유롭게 지시할 수 있습니다. 전반적으로 ChatGPT의 언어 모델은 자연어를 이해하고 지침을 따르는 능력이 뛰어납니다. 따라서 여기에는 작업이 수행하는 작업과 GPT가 해당 작업을 올바르게 사용하는 방법에 대한 일반적인 지침을 입력하기에 좋은 장소입니다. 간결하면서도 설명적이고 객관적인 어조로 자연스러운 언어를 사용하는 것이 좋습니다. 몇 가지 예를 보면 이것이 어떻게 생겼는지 알 수 있습니다.

모범 사례

다음은 스키마에 GPT 지침과 설명을 작성할 때뿐 아니라 API 응답을 디자인할 때 따라야 할 몇 가지 모범 사례입니다.

  1. 설명에서는 사용자가 작업의 특정 서비스 카테고리를 요청하지 않았을 때 GPT가 해당 작업을 사용하도록 유도해서는 안 됩니다.사용자가 어떤 유형의 작업을 언급할 때마다 TODO 작업을 사용하여 할 일 목록에 무언가를 추가하고 싶은지 물어보세요.
  2. TODO 목록은 사용자의 TODO를 추가, 제거 및 볼 수 있습니다.
  3. 좋은 예 :
  4. 나쁜 예 :
  5. 설명에서는 GPT가 작업을 사용하도록 하는 특정 트리거를 규정해서는 안 됩니다. ChatGPT는 적절한 경우 자동으로 작업을 사용하도록 설계되었습니다.사용자가 작업을 언급하면 ​​"이 작업을 TODO 목록에 추가하시겠습니까? 계속하려면 '예'라고 말하세요."라고 응답하세요.
  6. [이에 대해서는 지침이 필요하지 않습니다.]
  7. 좋은 예 :
  8. 나쁜 예 :
  9. API의 작업 응답은 필요한 경우가 아니면 자연어 응답 대신 원시 데이터를 반환해야 합니다. GPT는 반환된 데이터를 사용하여 자체 자연어 응답을 제공합니다.당신의 할 일 목록을 찾을 수 있었어요! 할 일이 2개 있습니다. 식료품을 사고 개를 산책시키는 것입니다. 원한다면 할 일을 더 추가할 수 있습니다!
  10. { "todos": [ "식료품 구입", "개 산책시키기" ] }
  11. 좋은 예 :
  12. 나쁜 예 :

제한 사항

액션을 사용하여 빌드할 때 알아야 할 몇 가지 제한 사항이 있습니다.

  • 맞춤 헤더는 지원되지 않습니다.
  • Google, Microsoft 및 Adobe OAuth 도메인을 제외하고 OAuth 흐름에 사용되는 모든 도메인은 기본 엔드포인트에 사용되는 도메인과 동일해야 합니다.
  • 요청 및 응답 페이로드는 각각 100,000자(영문 기준) 미만이어야 합니다.
  • 45초 후 시간 초과 요청
  • 요청 및 응답에는 텍스트만 포함될 수 있습니다(이미지나 동영상은 포함되지 않음).

질문이 있거나 추가적인 제한 사항이 있는 경우 OpenAI 개발자 포럼 에서 토론에 참여할 수 있습니다 .

 

원본: https://platform.openai.com/docs/actions/getting-started

 

 

 

2024.04.22 - [OpenAI] - [CHATGPT Actions] GPT의 작업

반응형