ChatGPTでサンドウィッチマンのゼロカロリー理論をLINEで作ってみた
サンドウィッチマンの伊達さんが提唱するゼロカロリー理論
をChatGPTにもうまく提唱すれば答えられるのでは?と思い作ってみました。
1. ルールを決める
今回はLINEでサクッと返してほしいので、LINEで定義されているFlexMessageを使って返答してもらいます。そのため、ChatGPTから返してもらう形式はJson形式で依頼します。
今回お願いしたルールは以下の通りです。
Jsonオブジェクト形式で返してもらうことを念押ししています。画像はUnsplash APIを使ってもらっています。<返答>
部分に返してもらうことも明記しました。ただ、稀にうまく返ってこないこともありますが^^;
これから私が食べ物を答えますので、ルールに従って理由を返してください。Jsonオブジェクトで出力をしてください。
余計な言葉は必要ありません。評論家らしく、なぜカロリーゼロなのか<返答>部分に置換してください。
- カロリーは中心に集まる性質がある。そのため、中心が空洞だとカロリーは無くなる。
- カロリー同士がぶつかり合うと、けんかして無くなる。
- 熱に弱く、110℃以上だと耐えられない。
- 凍ると無くなる。白いものは白紙に戻って無くなる。
- 烏龍茶を飲むと一切無くなる。
- 辛い食べ物はカロリーが無い。
- パン粉に包んで油で揚げると、カロリーが油へ逃げる。
- 昔からあるロングセラーのお菓子は太らない。
- 糖分を含んだ甘いものはすぐエネルギーに変わるので太らない。
- 甘いものとしょっぱいものを交互に食べればカロリーが無い。
- 新幹線などに持ち込んだ食材には速すぎてカロリーがついてこられず、カロリーがなくなる。
- 画像URLはUnsplash APIを使用してください(https://source.unsplash.com/960x640/?<英語キーワード>)
'''
{
type: 'flex',
altText: <キーワード>,
contents: {
"type": "bubble",
"hero": {
"type": "image",
"url": https://source.unsplash.com/960x640/?<英語キーワード>,
"size": "full",
"aspectRatio": "20:13",
"aspectMode": "cover"
},
"body": {
"type": "box",
"layout": "vertical",
"contents": [
{
"type": "text",
"text": カロリーゼロ!<返答>,
"size": "xs",
"wrap": true
}
]
}
}
}
2. 実装
私が作成したNode-REDのフローを使って実装していきます。今回もenebularをサクッと使っていきます。
詳細は下記ページをご確認ください。
2-1. パレット追加
パレットの追加からLINEに関するノードを追加します。ノードを追加①タブからnode-red-contrib-line-messaging-api
を検索窓②から探してノードを追加③を行います。
同様にnode-red-contrib-simple-chatgptノードを追加します。
2-2. Webhook設定
LINEからコールしてもらうWebhookの口を用意します。Webhook
ノードをドラッグアンドドロップします。設定は下記の通りです。
項目 | 値 |
---|---|
Path | /bot ※スラッシュも含めてください |
2-3. ChatGPT設定
simple-chatgptノードをドラッグアンドドロップして、Token
とSystemSetting
を埋めていきます。
項目 | 値 |
---|---|
Token② | ChatGPTのトークン |
SystemSetting③ | 1で定義したルール文字列 |
2-4. Jsonオブジェクト化
ChatGPTからは、FlexMessageの文字列形式で返ってくるのでLINEで使えるJsonオブジェクト形式に変換します。Json
ノードをドラッグアンドドロップして、変換を行います。
項目 | 値 |
---|---|
動作② | 常にJavaScriptオブジェクトに変換 |
2-5. Reply対応
LINEに返信してもらう設定を行います。LINE Developerからチャネルシークレットキーとアクセストークンを取得してノードに反映します。
項目 | 値 |
---|---|
Secret② | LINE Developerチャネルに明記されているシークレットキー |
AccessToken③ | LINE Developerチャネルに明記されているアクセストークン |
2-6. デプロイ
全てのノードを繋いでいることを確認したら、右上の保存
ボタンをクリックします。
「i」マーク①にマウスカーソルを合わせると、デプロイURL②が表示されるので、メモしておきます。
LINE DeveloperのMessaging APIのWebhook URLの設定画面で、コピーしたデプロイURLの末尾に2-2で設定したPathを付与します。
これでLINE公式アカウントと友だちになってから、好きな食べ物を入力するとChatGPTがルールに従ったゼロカロリー理論を返答してくれます。
まとめ
ルールを厳格に決めることでこちらが意図した通りの動きをしてくれました。結構複雑なルールでもよしなに対応してくれたので驚きました。ChatGPT側からしたら、一体何をしているのか意味不明かもしれませんがw
ルール次第でルーチンワークなども減らせるような気もしますね。
Discussion