見出し画像

OpenAIのGPTs.Actionsを触ってみた

前回に続き、OpenAI DevDayのアップデートを受けてGPTs.Actionsを触ってみました。

前回の記事はこちら。

GPTsとは?

GPTsとはChatGPTを独自にカスタマイズして公開することができる機能です。
ChatGPTは非常に汎用性が高く何でも出来る反面、それを使うユーザーにリテラシーを求められます。
GPTsを使うと特定分野にカスタマイズして、ある業務に特化したものやキャラクター性を持ったChatGPTが作れます。

Actionsとは?

Actionsとは、ChatGPTから外部のAPIを実行する機能です。
企業内のデータベースにアクセスしたり、メール送信や買い物も出来たりします。

APIをデプロイ

今回は、ActionsからAWS Lambdaで作ったAPIにアクセスするサンプルプログラムを実行してみました。
利用する技術セットは以下です。

  • Serverless Framework

  • Python

  • AWS Lambda

Serverless Frameworkのserverless.ymlを書いてデプロイ

service: GPT-Builder
frameworkVersion: '3'

provider:
  name: aws
  runtime: python3.9
  stage: dev
  region: ap-northeast-1
  memorySize: 128
  architecture: arm64
  tags:
    product: GPT-Builder
  environment:
    TZ: Asia/Tokyo
    stage: ${self:provider.stage}
    region: ${self:provider.region}
  iamRoleStatements:
    - Effect: "Allow"
      Action: "iam:PassRole"
      Resource: "*"

functions:
  get_current_weather:
    handler: handler.get_current_weather
    description: 現地の天気を知る
    events:
      - http:
          path: get_current_weather
          method: get
          cors: true

get_current_weatherを実装します。戻り値はダミーを返します。

import json


def get_current_weather(event, context):
    print("get_current_weather:", event)
    return {"statusCode": 200, "body": json.dumps({"weather": "晴れ 降水確率0% 最高気温22度、最低気温14度"})}

デプロイするとURLが発行されます。このURLは後で使うのでメモしておいてください。

$ sls deploy
endpoint: GET - https://xxx.execute-api.ap-northeast-1.amazonaws.com/dev/get_current_weather

GPTsを作成

GPTsの設定

次にGPTsを作成します。
まずは基本設定から。My GPTsから新規作成します。

次にConfigureを選択して必要事項を入力します。
天気を聞く簡単なサンプルを作成します。

Actionsの設定

Actionsで「Get weather data」を選択するとサンプルのSchemaが表示されます。

サンプルSchemaのservers.urlとpathsをさっきデプロイして発行したURLに修正します。

{
  "openapi": "3.1.0",
  "info": {
    "title": "Get weather data",
    "description": "Retrieves current weather data for a location.",
    "version": "v1.0.0"
  },
  "servers": [
    {
      "url": "https://xxx.execute-api.ap-northeast-1.amazonaws.com"
    }
  ],
  "paths": {
    "/dev/get_current_weather": {
      "get": {
        "description": "Get temperature for a specific location",
        "operationId": "GetCurrentWeather",
        "parameters": [
          {
            "name": "location",
            "in": "query",
            "description": "The city and state to retrieve the weather for",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "deprecated": false
      }
    }
  },
  "components": {
    "schemas": {}
  }
}

動作確認

さっそく動作確認してみます。

ダミー関数の結果が表示されてますね。

APIのURLと送信データも確認出来ます。

この記事が気に入ったらサポートをしてみませんか?