目的
昨今話題のGPTs、皆さんは触ってみたでしょうか。
GPTをカスタマイズできるこの機能ですが、あらかじめGPTに何をやらせたいか程度の指示を与えるだけではその魅力の数パーセントしか引き出せていません。
その程度であれば無印のGPTでも賄えますからね。
今回はGPTsの魅力を一気に加速させる外部APIとの連携方法の手順をまとめました。
原理原則というよりかはサクッと動くものを作ることに重心を置いています。
今回はQiitaから自身の投稿記事を取得するGPTsを作っていきます。
環境
- GPT4
言わずもがなGPTsを使うのに有料版が必要になります。 -
https://qiita.com/api/v2/docs#get-apiv2authenticated_useritems
今回たたくAPIになります。
自身の投稿記事を取得するものになります。
※あらかじめアカウントと個人用アクセストークンの作成までしておいてください。↓
https://qiita.com/settings/applications
手順
ではサクッとやっていきます。
GPTsの基本を作成
項目 | 内容 |
---|---|
Name | Qiitaの記事ゲッター |
Description | あなたのQiitaの記事を取得します |
Instructions | Qiitaから記事を1つ取得してください |
Conversation starters | 記事を取得 |
Knowledge, Capabilities は今回は無しにします。
Actionsを設定
さて、本日メインのActionsになります。
公式ドキュメントはこちら → https://platform.openai.com/docs/actions/introduction
GPTsの画面の Actions > Create new action から設定画面へ遷移してください
下記項目の設定ができる画面が表示されます。
項目 | 内容 |
---|---|
認証 | APIの認証方法(None, API Key,OAuth) |
スキーマ | API用のOpenAPI仕様を定義 |
プライバシーポリシー | GPTsを使う人に向けてのプライバシーポリシー |
※プライバシーポリシーについてはGPTsを公開する場合のみ必要になるので、今回は割愛します。
必要な方はGoogle Sitesとかでサクッと作りましょう。
参考:プライバシーポリシー
認証
Authenticationが「None」となっているので、
あらかじめ作っておいたOpenWeatherのAPI Keyを設定します。
Qiitaの認証認可はBearerを使用します。
https://qiita.com/api/v2/docs#%E8%AA%8D%E8%A8%BC%E8%AA%8D%E5%8F%AF
Schema
ここでは、どのAPIをどのようなパラメータを含めて実行するか、そしてどのようなレスポンスを期待するかの定義が必要になります。
認証ユーザーの記事を取得するAPIの呼び出し方法は以下になります。
https://qiita.com/api/v2/docs#get-apiv2authenticated_useritems
https://qiita.com/api/v2/authenticated_user/items?page=1&per_page=20
しかし、公式ドキュメントを見て手作業で定義していくにはあまりにも面倒な作業になります。
こんな時こそGPTsの手を借りましょう。
API用のOpenAPI仕様を定義するGPTsが公式から提供されています。
このGPTsに以下のプロンプトを投げてみてください。
このAPI用のOpenAPI仕様3.1を定義してください
OpenAPI 3.1.0を使用してください
https://qiita.com/api/v2/authenticated_user/items?page=1&per_page=20
そうするとGPTsからymlファイルが提供されるかと思います。
私の場合は以下になりました。
openapi: 3.1.0
info:
title: Qiita API
description: Qiitaの認証済みユーザーの投稿を取得するAPI。
version: 1.0.0
servers:
- url: https://qiita.com/api/v2
description: Qiita API サーバ
paths:
/authenticated_user/items:
get:
operationId: getAuthenticatedUserItems
summary:、 認証済みユーザーの投稿を取得
description: 認証済みユーザーの投稿リストをページネーションで取得します。
parameters:
- in: query
name: page
required: false
description: ページ番号
schema:
type: integer
default: 1
- in: query
name: per_page
required: false
description: 1ページあたりのアイテム数
schema:
type: integer
default: 20
responses:
'200':
description: 成功時のレスポンス
content:
application/json:
schema:
type: array
items:
type: object
properties:
id:
type: string
description: 投稿のID
title:
type: string
description: 投稿のタイトル
created_at:
type: string
format: date-time
description: 作成日時
updated_at:
type: string
format: date-time
description: 更新日時
構文にエラーがなければAvailable actionsに定義したAPIが表示されるはずです。
では、実際に動作を見てみましょう。
初めて実行する場合、リクエスト先のサイトの信頼の有無を問われます。
こちらはAllow、もしくはAlways Allowを選択してください。
無事取得できましたね。
ちなみに [debug] Calling HTTP endpoint や [debug] Response receivedを開くとリクエストやレスポンスの内容が見れますので、実際に動作しているか確認もしやすいです。
まとめ
以上、GPTsで外部APIと連携する方法でした。
認証方法がOAuthとかになると、また設定がややこしくなりので、そこらへんも次回まとめようと思います。
これからの時代は生成系AIをいかに使いこなせるかが重要になってくるため、試行錯誤が楽しみですね。