【ChatGPT×楽天市場】APIを使ってChatGPTに商品データを出力してもらう。
今回作成したのは、楽天市場から商品データを持ってきてくれるChatGPTです。
Actionで外部APIに接続する勉強がてら作成してみました。
動いているので作り方を解説します。筆者はプロングラミング初心者なので悪しからず。
出来たもの。
1.そもそもAPIとは?
APIは、「ソフトウェア間での通信やデータ交換を可能にする仕組み」のこと。これを活用すれば、ChatGPTは他のサービスからデータを取ってきてくれます。
楽天市場APIは下のリンクから利用できます。アプリIDを取得しておく必要があります。筆者はGPTsで作成したChatGPTのアドレスでアプリ登録しました。
2.必要なもの
①GPTs(有料)
②楽天市場API アプリID(無料)
あらかじめMy GPTを作成しURLを入手しておきます。
3.ChatGPTの作成手順
作成手順
①Rakuten DevelopersでアプリIDを入手。
②GPTsに必要事項を入力
・Instructions
・knowledge,
・Schema
1.Name:ChatGPTの名称を入力。
2.Description:ChatGPTの説明文を入力します。
3.Instructions
今回は次のように入力しました。
解説:
やることを指示しています。
Schemaで指定してあるパラメーター(format, applicationID,page)を書きます。formatはjson、applicationIDには自身のアプリIDを書きます。今回の試みではページは1にしました。
アプリID(applicationID)は指示文に書きました。公開する場合、セキュリティが心配ですが。とりあえず指示文にIDを教えるなと書いてます。ですが、効果があるかは不明。筆者は公開してません。
4.knowledge
念のためknowledgeには楽天市場APIのジャンルID一覧を記したPDFを読み込ませます。今回取得したジャンルIDはこちら。
5.Action
上の画像の赤枠内の”Create New action"をクリック。下の画面に移動します。
①Schemaに必要事項を記入していきます。
こちらが全体像(json形式)。serversには楽天市場APIリクエスト先URLを記入します。
{
"openapi": "3.1.0",
"info": {
"title": "",
"description": "",
"version": "v3"
},
"servers": [
{
"url": ""
}
],
"paths": {
},
"components": {
"schemas": {
"Item": {
"type": "object",
"properties": {
},
"required": ["id", "name", "price"]
}
}
}
}
パラメーターのシリアライズについてはこちらのサイトで確認できます。
Parameter Serialization (swagger.io)
②パラメーターをpathsに書き込みます。
楽天APIのサイトを調べるとformat、keyword、applicationId、あとpageを指定した方がよさそうでした。
1.format
{
"name": "format",
"in": "query",
"description": "format",
"required": true,
"schema": {
"type": "string"
}
},
2.keyword
{
"name": "keyword",
"in": "query",
"description": "キーワード",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "applicationId",
"in": "query",
"description": "アプリケーションID",
"required": true,
"schema": {
"type": "string"
}
},
4.page
{
"name": "page",
"in": "query",
"description": "ページ番号",
"required": false,
"schema": {
"type": "integer",
"format": "int32"
}
}
③propertiesには次の記述を入れます。
"id": {
"type": "integer",
"format": "int64",
"description": "アイテムの一意な識別子"
},
"name": {
"type": "string",
"description": "アイテムの名前"
},
"description": {
"type": "string",
"description": "アイテムの詳細な説明"
},
"price": {
"type": "number",
"format": "float",
"description": "アイテムの価格"
}
これでエラーがでなければ完成です。
たまに商品数が多くて表示できません、といったエラーがでますが、より具体的なキーワードをChatGPTに入力すれば大丈夫だと思います。
Schemaに入力するコードの全文バージョンは有料にさせていただきます。
4.全文
Schemeのservers内にあるurlに次のアドレスを挿入してください。
Knowledgeに次のPDFをアップロードしてください。
こちらがSchemaに入力するものです。serversには楽天市場APIテストフォームのUPL欄にあるリクエスト先URLの一部を入力します。
記入するのは”https://”から”数字?"までの範囲です。例:https://app.rakuten.co.jp/services/api/IchibaItem/Search/数字?これをコピぺしてエラーが出る場合、ChatGPTに修正してもらうと成功しやすくなると思います。
{
"openapi": "3.1.0",
"info": {
"title": "市場",
"description": "商品情報を取得",
"version": "v3"
},
"servers": [
{
"url": ""
}
],
"paths": {
"/your-api-endpoint": {
"get": {
"description": "エンドポイントの説明をここに書きます",
"operationId": "getItem",
"parameters": [
{
"name": "format",
"in": "query",
"description": "format",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "keyword",
"in": "query",
"description": "キーワード",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "applicationId",
"in": "query",
"description": "アプリケーションID",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "page",
"in": "query",
"description": "ページ番号",
"required": false,
"schema": {
"type": "integer",
"format": "int32"
}
}
]
}
}
},
"components": {
"schemas": {
"Item": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"format": "int64",
"description": "アイテムの一意な識別子"
},
"name": {
"type": "string",
"description": "アイテムの名前"
},
"description": {
"type": "string",
"description": "アイテムの詳細な説明"
},
"price": {
"type": "number",
"format": "float",
"description": "アイテムの価格"
}
},
"required": ["id", "name", "price"]
}
}
}
}