본문 바로가기

인공지능/ChatGPT

OpenAI GPTs - 01. GPT Action

GPTs란

https://openai.com/index/introducing-gpts/

  • ChatGPT의 맞춤형 버전: 사용자가 특정 목적에 맞게 커스터마이징 가능
  • GPT 빌더나 편집기를 통해 쉽게 자신만의 GPTs를 만들고 편집 가능
  • instructions(지침), extra knowledge(추가지식), and any combination of skills(다양한 기능)을 결합 가능
  • 다른사람과 공유 가능

사용법

✔️ 다른 블로그 포스트 참조

GPT Action

https://platform.openai.com/docs/actions/introduction

 

GPT Action은 ChatGPT 사용자가 자연어만으로 외부 애플리케이션과 RESTful API 호출을 통해 상호작용 할 수 있게 함

 

✔️ 작동 방식

  • Function Calling을 활용하여 API 호출을 실행(ChatGPT의 데이터 분석 기능(Python 코드를 생성하고 실행하는)과 유사)
    • (1) 사용자의 질문과 관련된 API 호출을 결정
    • (2) API 호출에 필요한 json 입력을 생성
    • Action이 해당 json 입력을 사용하여 API 호출을 실행
  • 개발자는 액션의 인증 메커니즘도 지정 가능 -> Custom GPT는 제3자 앱의 인증을 사용하여 API 호출을 실행
  • 최종 사용자에게 API 호출의 복잡성을 숨기기: 사용자는 단순히 자연어로 질문하고, ChatGPT도 자연어로 출력을 제공

✔️ 강점

  • API는 조직의 상호운용성을 제공하지만 제3자 API에 접근하려면 개발자의 상당한 노력이 필요
  • GPT Actions는 개발자가 API 호출의 스키마를 설명하고, 인증을 구성하고, GPT에 몇 가지 지침을 추가하면 됨
  • ChatGPT가 사용자의 자연어 질문과 API 계층 사이의 다리 역할

Getting started with GPT Actions

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

Weather.gov API 호출 예시

국립기상서비스: https://www.weather.gov/documentation/services-web-api

사용자가 위도-경도 지점에 대한 일기 예보를 받을 수 있는 공개 API

API 호출 - 파이썬 코드를 사용하여 API 호출

https://www.weather.gov/documentation/services-web-api

import requests


def get_weather(office, lat, lon):
    url = f"https://api.weather.gov/gridpoints/{office}/{lat},{lon}/forecast"

    response = requests.get(url)
    response.raise_for_status()
    return response.json()

print(get_weather('LWX', 97, 71))
import requests


def get_weather(latitude, longitude):
    url = f"https://api.weather.gov/points/{latitude},{longitude}"

    response = requests.get(url)
    response.raise_for_status()
    return response.json()

print(get_weather(39.7456,-97.0892))

GPT Action 이용

✔️ Step 1: Open API 스키마 생성

 

GPT Action은 API 호출의 매개변수를 설명하기 위한 표준인 Open API 스키마가 필요

Open API의 스키마를 생성 하는 GPTs 활용

https://chatgpt.com/g/g-TYEliDU6A-actionsgpt

"https://www.weather.gov/documentation/services-web-api" 로 가서 해당 페이지의 문서를 읽어보세요.

/points/{latitude},{longitude}와 /gridpoints/{office}/{gridX},{gridY}/forecast API 호출을 위한 Open API 스키마를 만들어주세요.

 

생성된 Open API 스키마

openapi: 3.1.0
info:
  title: National Weather Service API
  description: Access weather forecasts and observations from the National Weather Service.
  version: 1.0.0
servers:
  - url: https://api.weather.gov
    description: NWS production server
paths:
  /points/{latitude},{longitude}:
    get:
      operationId: getPointData
      summary: Get forecast office and grid for a given latitude and longitude
      parameters:
        - name: latitude
          in: path
          required: true
          description: Latitude of the point
          schema:
            type: number
            format: float
        - name: longitude
          in: path
          required: true
          description: Longitude of the point
          schema:
            type: number
            format: float
      responses:
        '200':
          description: Point data including forecast office and grid
          content:
            application/json:
              schema:
                type: object
                properties:
                  properties:
                    type: object
                    properties:
                      gridId:
                        type: string
                      gridX:
                        type: integer
                      gridY:
                        type: integer
                      forecast:
                        type: string
                        format: uri

  /gridpoints/{office}/{gridX},{gridY}/forecast:
    get:
      operationId: getGridpointForecast
      summary: Get the forecast for a specific grid point
      parameters:
        - name: office
          in: path
          required: true
          description: Forecast office (e.g., "BOU")
          schema:
            type: string
        - name: gridX
          in: path
          required: true
          description: Grid X coordinate
          schema:
            type: integer
        - name: gridY
          in: path
          required: true
          description: Grid Y coordinate
          schema:
            type: integer
      responses:
        '200':
          description: Forecast data for the specified grid point
          content:
            application/json:
              schema:
                type: object
                properties:
                  properties:
                    type: object
                    properties:
                      periods:
                        type: array
                        items:
                          type: object
                          properties:
                            name:
                              type: string
                            temperature:
                              type: integer
                            temperatureUnit:
                              type: string
                            detailedForecast:
                              type: string

 

핵심: Open API 스키마에서 사용하는 스키마 이름설명에 특별히 주의를 기울이세요. ChatGPT는 이러한 이름과 설명을 사용하여 (a) 어떤 API 액션이 호출되어야 하는지와 (b) 어떤 매개변수가 사용되어야 하는지를 이해합니다. 만약 필드가 특정 값들로만 제한되는 경우, 설명적인 카테고리 이름을 가진 "enum"을 제공할 수도 있습니다.

 

✔️ Step 2: 인증 요구사항

  • 2가지 인증 방식: API 키, OAuth
  • 위의 Weather는 제3자 서비스는 인증이 필요하지 않으므로 이 단계는 생략 가능

✔️ Step 3: GPT action 생성 및 테스트

생성

  • Name: Get Weather Forecast
  • Description: Get the weather forecast for a given latitude and longitude
  • Instructions:
**Context**: A user needs information related to a weather forecast of a specific location.

**Instructions**:
1. The user will provide a lat-long point or a general location or landmark (e.g. New York City, the White House). If the user does not provide one, ask for the relevant location
2. If the user provides a general location or landmark, convert that into a lat-long coordinate. If required, browse the web to look up the lat-long point. 
3. Run the "getPointData" API action and retrieve back the gridId, gridX, and gridY parameters.
4. Apply those variables as the office, gridX, and gridY variables in the "getGridpointForecast" API action to retrieve back a forecast
5. Use that forecast to answer the user's question 

**Additional Notes**: 
- Assume the user uses US weather units (e.g. Fahrenheit) unless otherwise specified
- If the user says "Let's get started" or "What do I do?", explain the purpose of this Custom GPT

테스트

 

생성된 GPTs(Get Weather Forecast) 이동

# 채팅
What should I pack for a trip to the White House this weekend?
For your trip to the White House this weekend, the weather looks pleasant but with some cooler temperatures in the evenings. Here's the forecast:

- Saturday (Oct 26th): Mostly sunny, with a high around 72°F. Winds will be light, between 3 and 12 mph.
- Saturday Night: Mostly clear, with a low around 44°F. Winds from the northwest at 6 to 10 mph.
- Sunday (Oct 27th): Sunny, with a high near 60°F. Light winds around 7 mph.
- Sunday Night: Mostly clear, with a low around 40°F.

Packing Tips:

- Daytime: Light clothing such as a t-shirt or light sweater should be comfortable. Bring sunglasses or a hat for the sunny weather.
- Evenings: It will get cooler, so pack a jacket or sweater for the evening and nighttime temperatures.
- Shoes: Comfortable walking shoes for touring.

Enjoy your trip!

그 외 공식 문서 링크

✔️ Actions 라이브러리

 

https://platform.openai.com/docs/actions/actions-library

  • 목적
  • 시작하기
  • 사용법
  • 제3자 Actions 쿡북
  • 미들웨어 Actions 쿡북
  • 피드백 제공
  • 라이브러리에 기여
  • 면책사항

✔️ GPT Action 인증

 

https://platform.openai.com/docs/actions/authentication

  • 인증없음
  • API 키 인증
  • OAuth 인증

✔️ GPT Actions 제작 노트

https://platform.openai.com/docs/actions/production

  • Rate 제한
  • 타임아웃
  • TLS와 HTTPS 사용
  • IP 송신 범위
  • 다중 인증 스키마
  • OpenAPI 사양 제한
  • 추가 제한 사항
  • 중요 작업 플래그
  • 예시 작성 모범 사례

✔️ GPT Actions를 이용한 데이터 검색

 

https://platform.openai.com/docs/actions/data-retrieval

  • API를 사용한 데이터 검색
  • 관계형 데이터베이스를 사용한 데이터 검색
  • 벡터 데이터베이스를 사용한 데이터 검색

✔️ GPT Actions를 통한 파일 전송 및 반환

 

https://platform.openai.com/docs/actions/sending-files

  • 파일 전송
  • 파일 반환

✔️ 사용 정책

 

https://openai.com/policies/usage-policies/