非エンジニアでもGPTsのActionsを使って遊んでみよう!
1月8日週にGPT Storeがオープンされるようですね!有料でChatGPTを使用されている方たちは、ご自身でMyGPTを作成されているでしょうか?OpenAIが昨年11月のDEVDAYで発表したGPTsは非常に便利で、アイデア1つで自分専用のMyGPTを作成できます。
ただ、GPT Builderを使ってMyGPTを作ってみたけれども、他の人と違ったものが作りたいという人もけっこういるんじゃないでしょうか。MyGPTをたくさん作っていくと、これって誰でも作れちゃうよねって思うこともあると思います。そこで、Actionsを使って他の人とは違うMyGPTを作ってみるのはどうでしょうか?
Actionsとは?
ChatGPTを初めて使ったときは、どんな質問にも答えてくれるということで大きな脚光を浴びました。ただ、最新の情報が取得できなかったり、言葉のやり取りはできるけれども絵を描くことはできなかったりしました、、
ChatGPTは非常に賢いわけですが、それにも限界があったわけですね。
そういったところを補ってパワーアップさせた機能がActionsです。
Actionsを使うことによって、ChatGPTは自身の頭で考えるだけでなく、
外部の機能や情報を使用することができるようになりました。最新の情報がChatGPTの頭の中(学習データ)にないのであれば、ChatGPTに検索させちゃえばいいわけです。また、絵を描けないなら、絵を描かける人(AI)にお願いしちゃえばいいわけです。
最新情報について聞かれたときは、学習データにないから検索する機能を借りてきて検索結果を返す、絵を描きたいという要望については、DALLE-3という画像生成AIに依頼して絵を描いてもらう。このように自身の対話という機能を超えた部分においてはActionsという機能を使って外部に任せることで、検索も絵を描くことも実現できるようになりました。
ActionsはChatGPTの能力を拡張させ、上記以外にもさまざまな機能を実現させてくれました。そのActionsという機能を実現させるのに、APIという技術が使われています。
APIとは?
APIはApplication Programming Interfaceの略で、プログラムとプログラムの間の通信手段のような概念です。
これを分かりやすく理解していただくためにレストランでの注文に例えてみます。APIを使うということは、自分で料理を作るのではなく、レストランという外部のサービスを使って料理を作ってもらうようなものです。
あなたがレストランのお客さんで、特定の料理を注文したいとします。この場合、あなたはウェイターに料理を注文(リクエスト)します。この「リクエスト」は、ウェイター(API)を通じて、厨房(サーバーまたはデータベース)に届けられます。厨房はあなたのリクエストに応じて料理を作り、ウェイターがそれをあなたのテーブルに運んでくれます。APIはこのように何かをリクエストすることによって、ほしい結果を提供してくれる機能なのです。
APIの動作は以下のような順に行われます。
また、APIに関する重要な用語を以下に説明します。
APIの機能を記述するSchema
このように、ある特定の機能を使いこなすためには、どんな情報をどこに渡せば、どんな結果が返ってくるのかという枠組みについては、使う側が事前に知っておく必要があります。ChatGPTを通してAPIを使用する場合も、そのAPIの枠組みを正しくChatGPTに教えてあげる必要があり、それがSchemaと呼ばれるものです。
先ほどの例でいえば、Schemaとはレストランの注文のやりとりの仕組みです。レストランの存在を知らない人は、どこにレストランがあるのか、どんなメニューがあるのか、どうやって頼んだらいいのかわからないですよね。
ですので、このレストランにはどんなメニューがあって、誰に注文すればよいのか、どんなオプションがあるのか、などのレストランの使い方を教えてあげないと使うことができません。
GPTsの作成でActionsを設定する際には、このSchemaにAPIの機能を記述する必要があり、それはOpenAPIという仕様に基づいて記述される必要があります。OpenAPIの仕様に従うことで、それぞれのAPIがどんなメソッドを持ち、どんなパラメータを扱うのかということが統一された方法で記述することができ、その記述に従ってChatGPTが理解することができます。
なお、ChatGPTを生み出した会社はOpenAIで、OpenAPIと名前が似ているので関係がありそうな気もするのですが、両社は全く異なる概念で、関係はありません。OpenAPIは、もともとはSwaggerとして知られており、以下のサイトでOpenAPIの詳しい情報を確認することができます。https://swagger.io/specification/
ChatGPTはどのようにAPIを呼び出すのか
Schemaを使ってAPIの機能を記述しておくことで、ChatGPTがいつでもそのAPIを使える状態になります。そして、ユーザーとの対話の中で必要となった時に、ChatGPTがパラメータなどを設定して、APIにリクエストを出してくれます。そして、ユーザーはChatGPTが受け取ったレスポンスを確認することができるわけです。これがActionsを使ったChatGPTの動作の流れです。
Schemaの設定もChatGPTを活用
Actionsだとか、APIとか新しい言葉で混乱しているのに、さらにOpenAPIのSchemaとかわからんことばかりだ!となるのもごもっともなのですが、ご安心ください。このOpenAPIのSchemaについても自分で記述する必要はなく、ChatGPTに作ってもらうことができます。
おいおい、ChatGPTが自分で作れるんだったらわざわざSchemaなんて書かせるなよとお思いかもしれませんが、まだそこまで技術は進歩していないのですね。そのうちこの設定も自動でやってくれるようになるかもしれませんが、今はその手作り感を楽しみましょう!そういった面倒くささがあるからこそオリジナルのGPTsが作れるようになるわけですしね。
GPT BuilderにActionsを組み込んでいこう!
では、Actionsについての仕組みを理解したところで実際にGPTsにActionsを組み込んでいきましょう。今回は登録や認証などが必要なく、無料で使用できるNASAのAPIを使って、Actionsを組み込んだGPTsを作ってみます。他にも無料で使えるAPIはたくさんあるので、ぜひおもしろいAPIを探して一度GPTを作ってみてください。
NASAのAPI
まず、NASAのAPIについては以下のサイトで説明されています。
今回は、APODというものを使ってみます。APODは、Astronomy Picture of the Dayの略で、その日の天文に関する写真や情報を提供してくれます。
GPTの新規作成
まず、「ChatGPT」 → 「Explore」 → MyGPTsの下にある、Create a GPTの「+」ボタンで新たなGPTを作成します。
その画面で、Createを押していけば対話型にGPTsを作成することができますが、今回は対話的にではなく、「Configure」を選択します。
今回の目的は「Actions」を実験してみることなので、「Name」「Description」「Instructions」は適当に入力しておきます。
一番下にある、Actionsの下の「Create new action」を押してください。
Actionsの設定
ここで、左側にAuthentication、Schema、Privacy policyとありますが、これらを設定することがActionsの設定になります。
NASAのAPIはAuthentication、すなわち「認証」が不要ですので、ここは「none」のままで構いません。
また、Privacy policyについては、NASAのAPIのホームページhttps://api.nasa.gov/を記入しておきます。publicとして公開する際には必要となりますので、該当するAPIのPrivacy policyのURLを記入しましょう。
Schemaの作成
一番重要なところはSchemaの部分です。
ここで、Schemaの作成にChatGPTのGPTsである、ActionsGPTに登場してもらいます。これはActionsの設定をするための専用のGPTsなので、Actionsについて聞きたいことがあったら、まずこのGPTsに聞いてみるのが早そうです。
ActionsGPTに以下のようにプロンプトを書いて、Schemaを作ってもらいます。
以下がActionsGPTに作成してもらったSchemaです。
openapi: 3.0.0
info:
title: NASA APOD API
description: Access daily astronomy pictures from NASA's Astronomy Picture of the Day.
version: 1.0.0
servers:
- url: https://api.nasa.gov/planetary
description: NASA APOD API server
paths:
/apod:
get:
operationId: getTodaysApod
summary: Retrieve today's astronomy picture
parameters:
- name: api_key
in: query
required: true
description: API key for accessing the service
schema:
type: string
responses:
'200':
description: A JSON object containing today's APOD
content:
application/json:
schema:
type: object
properties:
copyright:
type: string
date:
type: string
explanation:
type: string
hdurl:
type: string
media_type:
type: string
service_version:
type: string
title:
type: string
url:
type: string
get:
operationId: getApodByDate
summary: Retrieve an APOD by a specific date
parameters:
- name: api_key
in: query
required: true
description: API key for accessing the service
schema:
type: string
- name: date
in: query
required: true
description: Date of the APOD to retrieve in YYYY-MM-DD format
schema:
type: string
format: date
responses:
'200':
description: A JSON object containing the APOD of the specified date
content:
application/json:
schema:
type: object
properties:
date:
type: string
explanation:
type: string
hdurl:
type: string
media_type:
type: string
service_version:
type: string
title:
type: string
url:
type: string
ActionsGPTに作成してもらったSchemaをコピーして、Actions設定のSchemaに張り付けしてみましょう。Schemaの部分の記述ができていれば、テストをすることが可能です。テストボタンを押すと、APIへの接続を許可するかどうかを尋ねられるので、「Allow」ボタンを押して許可してからテスト結果を待ちます。
通常のChatGPTとカスタムGPTのActionsGPTの違い
通常のChatGPTと、カスタムGPTであるActionsGPTの違いについてなんですが、私が試したところ、通常のChatGPTではSchema作成においてoperationIdというIdが作成されないことが多いです。このoperationIdは、Actionsが実行するAPIの操作を一意に決めるためのIdです。
ActionsGPTに確認しても、このoperationIdは非常に大事ではあるが必須のIDではないという回答でした。しかし実際のところは、このoperationIdがないとActionsのテストで失敗してしまいます。そのため、ほぼ必須と考えてもよいのかもしれません。通常のChatGPTでSchemaを作成するときは、プロンプトに「operationIdを付けて」と記入するとうまくSchemaが作れるかもしれません。
実際にGPTを試してみる
GPTの設定を保存して、実際に試してみたのが以下の画像です。
うまく成功したようですね!
まとめ
本記事では、非エンジニアもGPTsのActionsを使ったMyGPTの作成にチャレンジする方法を紹介しました。APIという基本概念から、ChatGPTのActions機能、特にOpenAPIを用いたSchemaの設定方法について説明しました。
その実践例として、NASAのAPIを活用したGPTの作成プロセスを解説いたしました。今回トライアルしたのはNASAの画像から特定の日の画像を取得するという単純なものでしたが、APIを使用方法さえ理解できればもっといろいろな機能を追加することも可能になります。この記事を通じて、自身で一味違ったGPTsを作成できることを理解し、いろいろとカスタマイズをしてそれを楽しめるようになっていただけることを期待しております。
いいね!やフォローで、ぜひ応援よろしくお願いします!
励みになります!
また、X(旧Twitter)でAIについての雑談を不定期に行っておりますのでフォローをお願いいたします。