ChatGPT 公式ドキュメント解説①API提供済モデル紹介

# 概要
https://platform.openai.com/docs/introduction

ChatGPTのAPIを叩く上で,公式サイトの情報をまとめていく.  

:::note info
この情報は`2023/12/05`時点での情報となります.  
:::

ChatGPTのテキスト生成モデルのAPI詳細については以下を参照ください.

https://qiita.com/flyaway2525/items/4549a8c9931854db5eb0

## 前提知識
 - ChatGPTについてのある程度の知識
 - APIとは何か,ある程度の知識
 - また,以下のキーワードを知っておくといいかもしれません.

## キーワード
読むにあたってキーワードの解説をしておきます.

### テキスト生成モデル(Text generation models)

https://platform.openai.com/docs/introduction/text-generation-models

いわゆるChatGPTといえばコレという感じのAI(のモデル)  
文章の入力に対して文章で返答が返ってくる  

モデルの例としては以下がある(もっと多岐にわたる)
 - GPT-3.5
 - GPT-4

### アシスタント(Assistants)
AIが文章を生成するために,発言に役割が設定されなければならない.  
 - System
 - Assistant
 - User

AIが返答する文章はすべてAssinstantとして出力される.  
ユーザーが入力する文章はUserだが,過去の会話や前提条件を足すときはSystemやAssinstantも入力する.  

### 埋め込み(Embeddings)

https://platform.openai.com/docs/guides/embeddings/what-are-embeddings

テキスト文字列の関連性を測定します.  
例
 - `朝` と `System` は言語的に遠い(日本語ですらなかったりして関連性がない)
 - `朝` と `アサガオ` は言語的に少し近い(朝花開くのがアサガオだったりするため)
 - `朝` と `昼` は言語的に近い関係にある(時間帯を示す言語)
 - `朝` と `早朝` は言語的にかなり近い関係にある(ほぼ同意味)

<details><summary>複数キーワードを対象に2次元的にマッピングすることもできます.</summary>

こちらの表の1点1点は1つのテキストを意味します.  
それらが2次元的にマッピングされていて,視覚的にわかりやすく分類できます.  
注意点として,縦軸,横軸には意味がなく,点同士の距離のみが重要になります.  
もっと多次元に渡って距離を出しているものを2次元化しているので,観点の1つとしての距離になります.  

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1505183/72f3d17b-3282-a91d-171a-baa817b5a1f7.png)

クラスタリング(大まかな単語の分類分け)も可能です.  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1505183/e5a2530a-4070-bbda-69a7-330bbd16f1c8.png)

</details>

### トークン

https://platform.openai.com/docs/introduction/tokens

全てのテキストはトークンと呼ばれものの数珠つなぎで解釈,生成されます.  
例えば `tokenization` は `token` と `ization` に分けられて解釈されます.  
大体の数値として,1トークン英語テキスト4文字or0.75ワードに当たります.  

各テキスト生成モデルには`最大コンテキスト長`が決められていて,  
入力情報(プロンプト)と出力情報(アシスタントの回答など)の**合算**がこれを超えてはいけません.  

[リンク : 文章がどのようにトークンに分割されるか確認してみましょう](https://platform.openai.com/tokenizer)

## モデル
大雑把なモデル紹介をします.  
`gpt-3.5-turbo-1106`のようにモデルの中でもバージョンや用途,値段が異なる場合があります.  
更新頻度が高いため,詳細は公式サイトを確認してください.  

https://platform.openai.com/docs/models

### GPT-4
言わずと知れたテキスト出力モデル.  
 - 入力 : テキスト,画像
 - 出力 : テキスト

### GPT-3.5
無料版ChatGPTで使用できるテキスト出力モデル.  
 - 入力 : テキスト
 - 出力 : テキスト

### DALL・E
画像生成モデル
 - 入力 : テキスト
 - 出力 : 画像

### TTS
音声変換モデル
 - 入力 : テキスト
 - 出力 : 音声

※リアルタイム発話のための速度重視モデルと,品質重視モデルがある.  

### Whisper
音声認識モデル
 - 入力 : 音声データ
 - 出力 : テキスト

Whisperのオープンソースのものと変わらない性能だが,APIの利用は可能  

### Embeddings
埋め込みモデル
 - 入力 : テキストのリスト(フォーマットは要確認)
 - 出力 : テキスト(JSONと思われる)

テキスト同士の言語的距離を解析できる.  

### Moderation

https://platform.openai.com/docs/guides/moderation/overview

入力文章がOpenAIの使用ポリシーに準拠しているかをチェックできます.  
 - 入力 : テキスト
 - 出力 : テキスト(カテゴリごとのTrue False等)

例えば暴力的なコンテンツが入力された場合,  
`threatening`の項目が`true`になります.  

## API使用時にデータ収集はされるか？

https://platform.openai.com/docs/models/how-we-use-your-data

:::note info
data sent to the OpenAI API will not be used to train or improve OpenAI models.
モデルのトレーニングには使用されません.
:::

:::note alert
API data may be retained for up to 30 days, after which it will be deleted.
(unless otherwise required by law)
30日間保持されて,法的問題が無ければ削除されます.
:::

結論 : 公式のAPIを使って会社の機密情報を扱うのはちょっと危ないかもしれない.  

## エンドポイントの互換性
APIを使用していて,モデルだけアップデートしたい,みたいなことがあると思う.  
その場合,互換性を確認する必要がある.  
基本的に,大雑把なモデル区分が同じであれば,互換性があると思っていい.  

https://platform.openai.com/docs/models/model-endpoint-compatibility

## チュートリアル

https://platform.openai.com/docs/tutorials

## APIは次のページに書きます！

end