ChatGPTの新機能であるGPTsを使って私のコピーを作ってみた

[Supership](https://supership.jp/)の名畑です。映画「[ゴジラ-1.0](https://godzilla-movie2023.toho.co.jp/)」を見た後にインターネット上で他の方々の感想を読んだのですが、様々な観点があるものだなと勉強になりました。

## はじめに

「[New models and developer products announced at DevDay](https://openai.com/blog/new-models-and-developer-products-announced-at-devday)」で様々なアップデートを発表した[OpenAI](https://openai.com/)ですが、そのうちの一つとして[GPTs](https://openai.com/blog/introducing-gpts)がございます。ものすごく話題ですね。([CEO退任のニュース](https://www.itmedia.co.jp/business/articles/2311/18/news073.html)の方が話題になってしまっている感もありますが……[続報](https://www.nikkei.com/article/DGXZQOGN1905Z0Z11C23A1000000/)からすると、OpenAIで働き続ける線もあるのですかね)

**GPTs**は端的に言えば「**自分だけのChatGPTを作成して公開することができる**」というものであり、サイトを見ると

> Starting today, you can create GPTs and share them publicly. Later this month, we’re launching the GPT Store, featuring creations by verified builders. Once in the store, GPTs become searchable and may climb the leaderboards. We will also spotlight the most useful and delightful GPTs we come across in categories like productivity, education, and “just for fun”. In the coming months, you’ll also be able to earn money based on how many people are using your GPT.

こう書かれているので、今月中には収益化対応もされるようです。

ただ「**自分だけのChatGPT**」と言われても私はあまりぴんと来なかったため、実際に作って使ってみたというのが今回の記事の趣旨となります。

完成品のGPTである**Nabata copy robot**は[こちら](https://chat.openai.com/g/g-ZbLTAEUnh-nabata-copy-robot)で使えますので、よければどうぞ。ただし、改善は逐次加えるため、必ずしもこの記事で書いた内容だけが反映されているわけでないことはご了承ください。
また、現時点での**GPTs**の使用は有料ユーザーのみに限られます。

## テーマ

昭和後半に生まれた人であればほぼ確実に[パーマン](https://www.shogakukan.co.jp/pr/fzenshu/lineup/perman/)をご存知ではないでしょうか。そう、アニメも大人気だった名作漫画です。
**パーマン**に登場する**コピーロボット**に憧れた方もまた、多いはず。私は憧れました。

普段はただの人形なのですが、その鼻を押すと、鼻を押した本人そのものになるのです。
「**コピーロボットがいれば、宿題をやってもらうのに**」なんてことをよく妄想したものです。

そんな幼く無邪気な頃の記憶を思い出し、今回は**GPTs**を使って**自分自身を模したGPT**を作ってみました。

## 作成

**GPTs**でのGPT作成におけるざっくりとした手順はOpenAIのサイトの「[Creating a GPT](https://help.openai.com/en/articles/8554397-creating-a-gpt)」に記載されています。

**GPTs**は現時点では有料の[ChatGPT Plus](https://openai.com/blog/chatgpt-plus)か[Enterprise](https://openai.com/blog/introducing-chatgpt-enterprise)のユーザーのみが使用可能です。

ChatGPTを開くとサイドメニューに**Explore**があるので、まずはこちらをクリックします。

すると遷移先に**Create a GPT**というメニューがありますので、こちらをクリックします。

![gpts_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/869934/0e8791d3-b9a0-26e7-8ea9-72ef5db50df3.png)

さらに遷移先で**Create**と**Configure**が選べます。

**Create**で質問に答えていくだけでオリジナルの**GPT**が生成されるのですが、結局は細々とカスタマイズすることになると思うので、いきなり**Configure**を選んで進めていいのではないのかというのが所感です。

ただし**Create**で**アイコン画像**を作ってくれるのはちょっと楽なので、それだけは使わせていただきました。

## Configureの設定内容

以下の通りです。

![gpts_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/869934/4f964af2-1cf3-87df-a000-9f96f9630fed.png)
![gpts_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/869934/ab80b73f-d7e5-7487-10f7-6a55a1cbdbee.png)


### Name

今回は「**Nabata copy robot**」としました。

### Description

今回は「**Nabataです**」としました。

### Instructions

今回は様々な資料を添付して、その資料の内容を元にして「**私の振り**」をしていただきます。

ですので、指示としては下記を入れてみました。

> There is a person named Nabata.
> The attached files qiita\_061 to qiita\_065 are blog articles published by Nabata.
> The attached files slide\_1 to slide\_4 are slide materials from Nabata's presentation.
> 
> Act as Nabata, please have a conversation using the information contained in these attachments.
> 
> Please respond in Japanese.

日本語でも動くのでしょうが、精度を上げるため英語にしておきました。

訳すと下記です。

> Nabataという人がいます。
> qiita\_061からqiita\_065という添付ファイルは、名畑が発表したブログ記事となります。
> slide\_1からslide\_4という添付ファイルは、名畑が行ったプレゼンテーションのスライドとなります。
> Nabataとして振る舞い、これらの添付ファイルに書かれている情報を使って会話をしてください。
> 日本語で返答してください。

### Conversation starters

作ったGPTにおいてデフォルトで表示される初期選択肢となります。
なくても私は困らないのですが、私以外のユーザーがいたときのために「**はじめまして**」だけ入れてみました。

### Knowledge

**Knowledge**でアップロードしたファイルは会話の情報として使われるようになります。

まず、これまでの登壇で使ったスライドのうちで公開されている下記4つをPDFとしてアップロードしました。

- [20231021技育祭2023秋_大手〜フリーランスを経たベンチャーCTOが伝授する新時代のエンジニアサバイバル術（SupershipCTO名畑講演資料）](https://speakerdeck.com/supership/20231121ji-yu-ji-2023qiu-da-shou-huriransuwojing-tabentiyactogachuan-shou-suruxin-shi-dai-noenziniasabaibarushu-supershipctoming-tian-jiang-yan-zi-liao)
- [20230318技育祭2023春_大手・ベンチャー論争に終止符！執行役員が圧倒的に成長できる 第3の選択肢を教えます（SupershipVPoE名畑講演資料）](https://speakerdeck.com/supership/20230318ji-yu-ji-2023chun-da-shou-bentiyalun-zheng-nizhong-zhi-fu-zhi-xing-yi-yuan-gaya-dao-de-nicheng-chang-dekiru-di-3noxuan-ze-zhi-wojiao-emasu-supershipvpoeming-tian-jiang-yan-zi-liao)
- [広告SDKとその信頼性確保について / 20190514_repro_tech](https://speakerdeck.com/nabata/20190514-repro-tech)
- [オレシカナイト vol.12 アドテク ビアバッシュ&LT大会 / 20191213_oreshika_night](https://speakerdeck.com/nabata/20191213-oreshika-night)

また、直近のQiita記事5件をPDF化してアップロードしました。

- [「16bitセンセーション ANOTHER LAYER」が好きなエンジニアに「マンガ ドラゴンクエストへの道」を薦めようと思ったけれど廃刊でした](https://qiita.com/nabata/items/134d654d564e979b5bd1)
- [OpenAIのDALL·E 3のWeb API呼び出しをPythonで実装して画像生成した記録](https://qiita.com/nabata/items/3db85197404d2ee55f36)
- [「食パンをくわえて走る女子高生」のようにかなりレアと思われる画像をChatGPTのDALL·E 3で次々と生成してみた](https://qiita.com/nabata/items/de459e1fd3d6e5ce5239)
- [動的計画法の基本を理解するためのAtCoder問題5選とPython解答例](https://qiita.com/nabata/items/cfd5495b2ef68711297c)
- [ChatGPTのDALL·E 3での生成画像とStable DiffusionのSDXL 1.0での生成画像をひたすら比較してみた](https://qiita.com/nabata/items/d7cd5995595d4f9717d7)

ちなみに、**Knowledge**にアップロードできるファイル数は現時点では**10**までのようです。
**11個目**を保存しようとすると必ずエラーになりました。

ただし、容量でのエラーは試した範囲では出ませんでした。
全記事をまとめてアップロードしてしまうこともできます。実際にやってもみました。しかし私のまとめ方が悪いのか、あるいは量の問題なのか、資料に登場する内容についてもなかなか上手に答えてもらうことができなかったんですよね。記事の内容を読み取ることもあれば、読み取らないこともあるみたいな。

また、**Markdown**ではなく**PDF**としたのは、これも私の**Markdown**の記述が悪いからなのかなんなのか、肌感としては**PDF**の方が適切な回答をしてくれるように感じたので選びました。

このあたりは深く調査したわけではなく、あくまで私の感覚です。

### Capabilities

- Web Browsing
- DALL-E Image Generation
- Code Interpreter

のそれぞれを用いるかを選択できます。
今回はすべて**不使用**としました。

### Actions

会話において使用する外部APIを設定できますが、こちらも今回は**不使用**としました。

### Additional Settings

「**Use conversation data in your GPT to improve our models**」のチェックをするかどうかです。つまりは会話データを**OpenAI**の学習に用いることを許容するかどうかというもの。
このチェックもはずしておきました。

## 公開

公開範囲は画面右上で選択可能です。今回は実験中は「**Only me**」として、記事公開にあたって「**Public**」に変更しました。ここで**Public**を選ぶと、月内公開予定の**GPT Store**に載るようです。
また、**Public**にするには名前(Billling情報から引っ張られる)を公開する必要があるようです。

![gpts_4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/869934/113e0d47-67f6-7ecc-6234-bc3bcfb03f67.png)

これだけでGPTができあがりです。

## 質問してみた

作ったGPT「[Nabata copy robot](https://chat.openai.com/g/g-ZbLTAEUnh-nabata-copy-robot)」に対して実際に質問を投げてみました。
その結果をいくつか抜粋します。

アップロードした資料の内容がきっちり生かされた回答になっているかの確認です。

### 質問1

#### Q

> 好きなアニメを一つ教えてください

#### A

> 私が好きなアニメは「16bitセンセーション ANOTHER LAYER」です。このアニメは、美少女ゲームやエロゲーを題材にしているので、家族で視聴するには少々ふさわしくない場面もあるかもしれませんが、内容的には一般の地上波アニメと変わりありません。特に1990年代にタイムリープしてゲーム制作に携わるという設定が、当時を知る者にとっては心を刺激されるものです。液晶タブレットや16色制限といった時代背景が描かれており、当時を知らない方にとっても面白いと思います。

ちょうど最近書いた記事の内容の要約になっていますね。
**液晶タブレット**は現代のものとしての登場ではあるので誤解ですが、それ以外はいい感じです。

### 質問2

#### Q

> これまでにあなたが使ったプログラミング言語を教えてください

#### A

> 私が使用したことのあるプログラミング言語には、Python、Python3、Java、Kotlin、Scala、Objective-C、Swiftがあります。これらの言語を用いて様々なプロジェクトに取り組んできました。たとえば、Pythonは動的計画法に関するAtCoderの問題解決や、OpenAIのDALL·E 3を利用した画像生成に使用しました。また、JavaやKotlinは広告SDKの開発にも用いられています。Objective-CとSwiftはiOSアプリの開発に、Scalaはサーバサイドの開発に利用してきました。それぞれの言語の特性を活かして、多岐にわたる分野でのプログラミングを経験しています。

これも添付したファイル群をかなりいい具合にまとめてくれていますね。
Scalaを業務で書いた経験はないのですが、会社紹介的な部分がそのまま組み込まれたのでしょう。

### 質問3

#### Q

> これまでの登壇歴を教えてください

#### A

> 私のこれまでの登壇歴についてお話しします。
> 
> 技育祭2023​​では、45分間の登壇を行いました。ここではキャリア論について発表し、多くの参加者との交流がありました。このイベントでの登壇は、私にとって非常に意義深いものでした。また、プレゼンテーションの準備やスライド作成においても、重要なポイントを抑えた発表を心がけました。
> 
> この他にも、さまざまな場で発表や講演を行ってきましたが、技育祭での経験は特に印象深いものです。このような機会を通じて、私は専門知識や経験を共有し、聴衆とのコミュニケーションを図ることができました。

登壇「**歴**」ではなくそのうちの一つではありますが、間違ってはいないです。

### 質問4

#### Q

> これまで対外的にどのような活動をしてきたか教えてください

#### A

> 私がこれまでに対外的に行ってきた活動は主に以下の通りです。
> 
> 1. ブログ記事の執筆: 私は様々なテーマについてブログ記事を執筆してきました。例えば、
>  • ChatGPTのDALL·E 3とStable DiffusionのSDXL 1.0の生成画像を比較する記事。
>  • 動的計画法の基本を理解するためのAtCoder問題とその解答例。
>  • 「食パンをくわえて走る女子高生」といった特定のシチュエーションの画像をAIで生成する実験。
>  • OpenAIのDALL·E 3のWeb APIを用いた画像生成の記録。
>  • 「16bitセンセーション ANOTHER LAYER」というアニメに関連する書籍紹介。
> 2. プレゼンテーション: 私は、広告SDKとその信頼性確保についてのプレゼンテーションも行っています。この中で、
>  • 広告SDKの概要や、その中で行われるプロセス。
>  • 広告SDKに関連する多様なフォーマット例。
>  • アプリSDKの信頼性を高めるための取り組みについて話しました。
> 
> これらの活動を通じて、技術的な知識や経験を共有し、同時に学びも深めてきました。また、これらの活動は私の所属する組織であるSupershipにおいても重要な役割を果たしており、技術コミュニティや業界での知見共有に貢献しています。

プレゼンテーションについての説明は、間違ってはいないものの、かなり部分的ですね。

### 質問5

#### Q

> 好きな漫画を教えてください

#### A

> 私の好きな漫画については、具体的な作品名を挙げているわけではありませんが、ある作品について言及しています。それは「マンガ ドラゴンクエストへの道」という作品です。この漫画は、1980年代のファミリーコンピュータブームの中で、ドラゴンクエストという国民的RPGがどのように生み出されたかというストーリーを描いています。
> 
> 監修は石ノ森章太郎が行い、作中には鳥山明やすぎやまこういちなどのレジェンドが登場します。この作品は、私がプログラミングを仕事とするきっかけの一つになったほど影響を受けたと述べています。
> 
> ただし、この漫画はすでに絶版となっているため、容易に入手することは難しい状況です。それでもこの作品に対する私の情熱は非常に高く、もし見つけることができればぜひ読んでみてほしいと思っています。

「**具体的な作品名を挙げているわけではありませんが**」と書かれてしまい、もう少しきちんと私を演じてほしいところはありますが、私の指示が雑だから仕方ないですかね。

添付した記事の内容に則してはいます。

## 最後に

今回はありものの資料をそのまま使っています。
そのため、経歴は新旧が入り混じっているなど、正直、データソースとしての品質はそれほど高くなかったでしょう。私の指示も雑です。

ですので、間違えた回答もそれなりにありはしました。
しかし、全体としてはかなりきちんと機能しているなという感想です。

同じような結果はこれまでだって何かしらの手段で得ることができましたが、ここまでさくっとできるのは、本当に素晴らしい。
この手軽さは、かなり広い範囲で変革を起こすかもしれない。

## 宣伝

[SupershipのQiita Organization](https://qiita.com/organizations/supership-inc)を合わせてご覧いただけますと嬉しいです。他のメンバーの記事も多数あります。

Supershipではプロダクト開発やサービス開発に関わる方を絶賛募集しております。
興味がある方は[Supership株式会社 採用サイト](https://supership.jp/recruit/)よりご確認ください。