GPTs でサクッと翻訳、キャラクター生成、財務分析、いいね数取得ツールなどなどを作ろう！

## はじめに

昨年11月にリリースされ、ハンズオン祭でも紹介されていた GPTs を今更ながら触ったので、使い方を紹介します！

https://qiita.com/RyoWakabayashi/items/765aa398944f2931cdb6

## GPTs とは

https://openai.com/blog/introducing-gpts

> GPTs are a new way for anyone to create a tailored version of ChatGPT to be more helpful in their daily life, at specific tasks, at work, or at home—and then share that creation with others.

和訳
> GPTs は、日常生活や特定のタスク、仕事、家庭でより役立つようにChatGPTをカスタマイズできる新しい方法です。そして、その作成物を他の人と共有できます。

ざっくりいうと、 **生成AIを使ったサービスをサクッと作れて公開できてしまう機能** です

**ノーコードで = プログラミングなしに、生成 AI サービスが作れてしまう** 、恐ろしい機能と言えます

ただし、少なくとも現状では自分の GPTs を有償化するような機能はないため、あくまでも **無償のお役立ちツールとして公開するもの** 、という点に注意してください

GPTs は **Plus プラン以上で利用可能** です

**Team プランで契約した場合、同じチーム内の人だけに GPTs を公開できるため、社内ツールとして使用できる** という利点もあります

## ChatGPT の契約プラン

ChatGPT のプランは4つです（2024年2月時点）

https://openai.com/chatgpt/pricing

企業で使う場合「**プロンプトの内容が学習されない**」ということが重要です

以前は企業向けプランが Enterprise プランしかなく、問い合わせると中々の金額だったので諦めていました（代わりにAOAIを使用）

https://learn.microsoft.com/ja-jp/azure/ai-services/openai/overview

2024年1月に追加された Team プランが **プロンプトの内容が学習されず**、リーズナブルかつ GPTs が利用できるので、企業で使うには最適です

### Free

- 料金: `$0`
- GPT-3.5 が使える
- Web, iOS Android から使える

### Plus

- 料金: 月額 `$20`
- Free の機能全てが使える
- GPT-4 が使える
- GPTs が使える
- DALL·E（画像生成）や高度なデータ分析などが使える

### Team

- 料金: 月額 `$25`（年払い）または月額 `$30` （月払い）
- Plus の機能全てが使える
- ワークスペースの管理ができる
- ワークスペースないだけで GPTs が共有できる
- **プロンプトの内容が学習されない**

### Enterprise

- 料金: 要お問合せ
- Team の機能全てが使える
- アクセスが高速になる
- 優先的にサポートされる
- SAML SSO に対応
- **プロンプトの内容が学習されない**

## 事前準備

ChatGPT のアカウントを作り、 Plus プランか Team プランで契約してください

業務で使う場合や企業で契約する場合、少し高くなりますが Team プランで契約しましょう

https://chat.openai.com/

:::note info

言語設定を変更する手順

- 自分の名前をクリック
- Settings をクリック

![スクリーンショット 2024-02-18 11.30.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/f20705dc-7b1c-951b-3e96-2b0a1f65a1cd.png)

- 英語の場合、「Language (Alpha)」となっているところで「日本語」を選択

![スクリーンショット 2024-02-18 11.30.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/92de7d54-1a9b-0670-dc8b-e841f82f1ec8.png)

:::

Plus プラン以上で契約していれば左メニューに「GPTを探索する」（言語設定を英語にしている場合は「Explore GPTs」）が表示されているので、クリックします

![スクリーンショット 2024-02-18 11.26.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/ef7e9c8e-ab96-31e3-dfbc-e870e851e530.png)

GPTs の画面が表示されます

:::note info
この画面から他の人が公開した GPTs を検索して使うことができます
:::

右上の「＋GPTを作成する」をクリックします

![スクリーンショット 2024-02-18 19.23.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/6694ce76-9593-3f0a-57ac-742796a5bc44.png)

左側に GPT を作るためのフォーム、右側に作成中の GPT のプレビューが表示されています

![スクリーンショット 2024-02-18 19.26.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/b945f75b-1761-b2c6-9001-e9c22f8113be.png)

左側の「Create」タブでは「GPT Builder」とチャットしながら GPT を作ることができます

しかし、デフォルトが英語で使いづらいため、「Configure」タブの方を開きます

![スクリーンショット 2024-02-18 19.29.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/70f954ea-4cfa-0995-6955-662eee83a3e4.png)

この項目に入力していくだけで、生成AIツールが作れます

## 翻訳ツールの作成

まずは一番単純な翻訳ツールを作ります

### 英訳ツールの作成

以下の手順を実施してください

- 「Name」に「英訳」と入力する
- 「Description」に「日本語を全て英語に翻訳します」と入力する
- 「Instruction」に以下の内容を入力する

  ```
  入力された日本語を全て英語に翻訳してください
  ```

- 「＋」アイコンをクリックする

  ![スクリーンショット 2024-02-18 19.41.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/ac1ea85f-ab3e-6be7-b4da-e42e64f14846.png)

- 「Use DALL·E」をクリックし、「Name」や「Description」に沿ったアイコンを生成してもらう

![スクリーンショット 2024-02-18 19.45.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/a7beef9b-d0c1-7da8-8786-4f8e7251a00e.png)

:::note info
アイコン画像は違う画像になります
:::

この状態で右側のプレビューに「こんにちは」と送ってみましょう

「Hello」と英訳されて返ってきます

![スクリーンショット 2024-02-18 19.48.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/742973d2-d057-89fc-5a98-4f61c86fecd6.png)

無事、英訳ツールができました

右上の保存ボタンをクリックし、公開範囲を選んで「確認」をクリックしましょう

![スクリーンショット 2024-02-18 19.51.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/209075fc-43e1-cbe0-a35a-aef45f084994.png)

### 和訳ツールの作成

英訳ツールと同様の手順で、「Instruction」を以下のようにすれば和訳ツールが作成できます

```
入力された英語を全て日本語に翻訳してください
直訳ではなく、意味がわかりやすいように意訳をしてください
```

2行目の文言は、そのままだと直訳すぎたので追加しました
用途によって調整してください

![スクリーンショット 2024-02-19 10.17.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/dd253d4d-8b45-e0aa-4afe-4dbbf62c740c.png)

左上のドロップダウンから「GPTをカスタマイズ」をクリックすることで、作成したGPTを編集可能です

![スクリーンショット 2024-02-19 10.38.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/1619e173-62d5-4dec-bce4-d3cf15c356fd.png)

ただし、変更が反映されるまでには時間がかかる場合があります

保存しても動きに変化がない場合、気長に待ちましょう

## キャラクター生成

続いて画像生成（DALL·E）の機能を活かして、キャラクター生成ツールを作成してみましょう

「Instruction」を以下のようにしてください

```
入力された画像とテキストを元に、以下の処理を行なってください
- マスコットキャラクターの名前を提案する
- マスコットキャラクターのプロフィールを作成する
  - 好きな食べ物
  - 好きな言葉
  - 好きな本
- マスコットキャラクターの画像を生成する
- キャラクターから挨拶

ユーザーへの応答は全て日本語にしてください
```

プロフィールの項目などは好きなものに変更しましょう

最終行の `ユーザーへの応答は全て日本語にしてください` を指定することで、確実に日本語を使うよう指定しています

そして、 **必ず「Capabilities」で「DALL·E Image Generation」にチェックを入れてください**
（デフォルトでチェックが入っているので問題ないと思いますが）

![スクリーンショット 2024-02-19 10.18.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/8316ed44-3683-3e7c-8d90-b9550432bb4a.png)

以下のように、写真と言葉からキャラクターを作ってくれます

![スクリーンショット 2024-02-18 20.29.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/3bd4b5cf-993c-a087-4d45-167d8f9f49b7.png)

![スクリーンショット 2024-02-19 10.04.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/33dc33a2-6347-81e3-afa6-43725dc58b86.png)

## 財務分析ツール

続いて Knowledge を活かしたツールとして、財務分析ツールを作ってみましょう

### Knowledge 用データの準備

以下の Web サイトから株式会社オーイーシーの電子広告（決算資料）が PDF形式でダウンロードできます

https://www.oec.co.jp/company/koukoku.html

直近5年分をダウンロードしておきます

Knowledge では PDF 以外にも Excel や CSV 、HTML なども読んでくれます

### 財務分析 GPT の作成

GPT を以下の内容で作成してください

- Instruction

  グラフは Python の Matplotlib を使って描画します
  日本語フォントは現状では使えず文字化けするため、グラフ内では英語を使うように支持します

  ```
  KnowledgeのPDFファイルは株式会社オーイーシーの決算情報です
  株式会社オーイーシーの決算情報を元に質問に答えてください
  ユーザーへの応答は全て日本語で行なってください
  ただし、グラフを出力する場合、グラフ内の文字は全て英語に翻訳してください
  ```

- Knowledge

  ダウンロードしておいたPDFファイルをアップロード

- Capabilities

  **「Code Interpreter」にチェックを入れる**

![スクリーンショット 2024-02-18 20.38.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/7825e472-2675-d8e4-c69e-3d975614c9db.png)

出来上がった GPT は PDF の内容を参照し、質問に答えてくれます

「Code Interpreter」にチェックを入れないと、 Knowledge のデータを参照できません

### Knowledge データのグラフ化、表形式表示

以下は「売上高と売上原価の推移をグラフと表で示してください」と入力した場合の結果です

![スクリーンショット 2024-02-19 10.35.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/aabc35c5-c584-1aee-5744-cf8da74df2da.png)

GPT の出力末尾にある `[>_]` のアイコンをクリックすると、以下のように Python コードが表示されます

![スクリーンショット 2024-02-18 21.06.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/b8d87f1d-5bb4-1586-ab24-8a7f249efdcb.png)

ChatGPT が内部的に Python コードを生成、実行することでグラフ出力していたことがわかります

### Knowledge データを使った計算、分析

もっと難しい質問として「自己資本比率の推移を表とグラフで示し、傾向を分析してください」と入力してみます

![スクリーンショット 2024-02-18 21.13.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/4f032c73-b140-2d92-deb3-15c0ec761c06.png)

Knowledge にアップロードした PDF には「自己資本比率」の項目はありませんが、「純資産合計」と「資産合計」から正確に計算しています

自己資本比率の計算式、その意味合いまで正しく理解できているようです

## Qiita いいね数取得

最後に Actions を活かした例です（実用性はないですが）

Actions を利用すると、 GPT が API を呼び出してくれます
今回は Qiita のいいね数を取得してみます

### Qiita API のアクセストークン発行

Qiita API のアクセストークンを発行しておきます

発行手順はこちらの記事を参考にしてください

https://qiita.com/RyoWakabayashi/items/167d6b8c9215ade42346#%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%83%88%E3%83%BC%E3%82%AF%E3%83%B3%E3%81%AE%E5%8F%96%E5%BE%97

### Qiita API の定義取得

Actions で API を呼び出すためには、 OpenAPI 仕様の定義（yml や json 形式で API の仕様を定義したもの）が必要です

https://www.openapis.org/

残念ながら Qiita API は定義ファイルを公開していないので、自作する必要があります

しかし、自作するのはすごく面倒なので ChatGPT に生成してもらいます

Qiita API のドキュメントから「いいね」用 API のパス、レスポンス等の記述をコピーします

https://qiita.com/api/v2/docs#%E3%81%84%E3%81%84%E3%81%AD

ChatGPT に以下のように指示します

```
以下の情報を元に OpenAPI の yml ファイルを生成してください

GET /api/v2/items/:item_id/likes HTTP/1.1
Host: api.example.com
HTTP/1.1 200
Content-Type: application/json

[
  {
    "created_at": "2000-01-01T00:00:00+00:00",
    "user": {
      "description": "Hello, world.",
      "facebook_id": "qiita",
      "followees_count": 100,
      "followers_count": 200,
      "github_login_name": "qiitan",
      "id": "qiita",
      "items_count": 300,
      "linkedin_id": "qiita",
      "location": "Tokyo, Japan",
      "name": "Qiita キータ",
      "organization": "Qiita Inc.",
      "permanent_id": 1,
      "profile_image_url": "https://s3-ap-northeast-1.amazonaws.com/qiita-image-store/0/88/ccf90b557a406157dbb9d2d7e543dae384dbb561/large.png?1575443439",
      "team_only": false,
      "twitter_screen_name": "qiita",
      "website_url": "https://qiita.com"
    }
  }
]
```

すると、 ChatGPT は以下のように yml を生成してくれます

```yml
openapi: 3.0.0
info:
  title: Example API
  version: '1.0'
servers:
  - url: https://api.example.com
paths:
  /api/v2/items/{item_id}/likes:
    get:
      summary: Get likes for a specific item
      operationId: getItemLikes
      parameters:
        - name: item_id
          in: path
          required: true
          schema:
            type: string
          description: The ID of the item to retrieve likes for
      responses:
        '200':
          description: A list of likes for the item
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    created_at:
                      type: string
                      format: date-time
                    user:
                      type: object
                      properties:
                        description:
                          type: string
                        facebook_id:
                          type: string
                        followees_count:
                          type: integer
                        followers_count:
                          type: integer
                        github_login_name:
                          type: string
                        id:
                          type: string
                        items_count:
                          type: integer
                        linkedin_id:
                          type: string
                        location:
                          type: string
                        name:
                          type: string
                        organization:
                          type: string
                        permanent_id:
                          type: integer
                        profile_image_url:
                          type: string
                        team_only:
                          type: boolean
                        twitter_screen_name:
                          type: string
                        website_url:
                          type: string
```

`servers.url` と `paths` のパスを修正します

```yml
openapi: 3.0.0
info:
  title: Example API
  version: '1.0'
servers:
  - url: https://qiita.com/api/v2
paths:
  /items/{item_id}/likes:
...
```

これで OpenAPI 定義が準備できました

### Qiita いいね数取得 GPT の作成

- Instruction

  ```
  入力された記事IDを元に Qiita API から「いいね」数を取得してください
  ```

- Actions

  左下の「新しいアクションを作成」をクリック

  ![スクリーンショット 2024-02-19 9.31.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/56bf4910-b60f-94cf-e213-8f1747606c34.png)

  Actions の追加画面が表示されます
  「Authentication」の下「None」をクリックしましょう

  ![スクリーンショット 2024-02-19 9.33.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/0babe4ab-df32-9e36-5b7d-78b4a8d1830c.png)

  「Authentication」モーダルが開きます
  以下のように入力してから「Save」をクリックします
  - 「Authentication Type」: API Key
  - API Key: Qiita API 用アクセストークン
  - Auth Type: Bearer

  ![スクリーンショット 2024-02-19 9.47.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/df4ae3ea-7889-e072-74ec-9dfcdb700a74.png)

  「Schema」に OpenAPI の yml を入力します

GPT を保存して記事IDを入力してみましょう

初回は API へのアクセス許可を求めてきます
「許可」または「常に許可する」をクリックします

![スクリーンショット 2024-02-19 9.52.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/e1d90842-15c6-afe9-8c37-db06cd1a0f51.png)

許可後、APIを呼び出していいね件数を取得してくれます

![スクリーンショット 2024-02-19 9.53.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/0e62c2d3-4e98-fd11-aee0-e0ee03f113ea.png)

## まとめ

GPTs を使うことで、ノーコードで生成 AI ツールが作成できました

思いついたアイデアを素早く形にするには最適のサービスではないでしょうか

今後も色々試してみたいと思います