続：ChatGPTのAPI調査・その２

[速報：ChatGPTのAPIを叩いてみた](https://qiita.com/k1morikawa@github/items/5482939eb49fb70207a5)
[続：ChatGPTのAPI調査](https://qiita.com/k1morikawa@github/items/9a37e016d5c572c9d572)

ChatGPTのAPI調査の続き・その２です。

# api
https://beta.openai.com/docs/api-reference/introduction
```
curl https://api.openai.com/v1/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{"model": "text-davinci-003", "prompt": "Say this is a test", "temperature": 0, "max_tokens": 7}'
```
curlで投げて確かめます。先日取得したAPIキーをYOUR_API_KEY部分に置き換えます。
Bearerの部分も置き換えたらAPIエラーなったので、Bearerは残して、YOUR_API_KEYの部分のみ置き換えます。

```
{
    "id": "cmpl-GERzeJQ4lvqPk8SkZu4XMIuR",
    "object": "text_completion",
    "created": 1586839808,
    "model": "text-davinci:003",
    "choices": [
        {
            "text": "\n\nThis is indeed a test",
            "index": 0,
            "logprobs": null,
            "finish_reason": "length"
        }
    ],
    "usage": {
        "prompt_tokens": 5,
        "completion_tokens": 7,
        "total_tokens": 12
    }
}
```

Say this is a testと言ったので、This is indeed a testと返ってきました。

# model list 
https://beta.openai.com/docs/api-reference/models

```
curl https://api.openai.com/v1/models \
  -H 'Authorization: Bearer YOUR_API_KEY'
```
```
{
  "data": [
    {
      "id": "model-id-0",
      "object": "model",
      "owned_by": "organization-owner",
      "permission": [...]
    },
    {
      "id": "model-id-1",
      "object": "model",
      "owned_by": "organization-owner",
      "permission": [...]
    },
    {
      "id": "model-id-2",
      "object": "model",
      "owned_by": "openai",
      "permission": [...]
    },
  ],
  "object": "list"
}
```
モデルの一覧が返されました。

# Completions
https://beta.openai.com/docs/api-reference/completions
最初のやつです。

```
curl https://api.openai.com/v1/completions \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -d '{
  "model": "text-davinci-003",
  "prompt": "Say this is a test",
  "max_tokens": 7,
  "temperature": 0
}'
```

```
{
  "id": "cmpl-uqkvlQyYK7bGYrRHQ0eXlWi7",
  "object": "text_completion",
  "created": 1589478378,
  "model": "text-davinci-003",
  "choices": [
    {
      "text": "\n\nThis is indeed a test",
      "index": 0,
      "logprobs": null,
      "finish_reason": "length"
    }
  ],
  "usage": {
    "prompt_tokens": 5,
    "completion_tokens": 7,
    "total_tokens": 12
  }
}
```

# Create edit
https://beta.openai.com/docs/api-reference/edits

```
curl https://api.openai.com/v1/edits \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -d '{
  "model": "text-davinci-edit-001",
  "input": "What day of the wek is it?",
  "instruction": "Fix the spelling mistakes"
}'
```
```
{
  "object": "edit",
  "created": 1589478378,
  "choices": [
    {
      "text": "What day of the week is it?",
      "index": 0,
    }
  ],
  "usage": {
    "prompt_tokens": 25,
    "completion_tokens": 32,
    "total_tokens": 57
  }
}
```
What day of the wek is it？　のwekのスペルミスをFix the spelling mistakesの通り、weekに修正してくれました。

# Create image
https://beta.openai.com/docs/api-reference/images/create

```
curl https://api.openai.com/v1/images/generations \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -d '{
  "prompt": "A cute baby sea otter",
  "n": 2,
  "size": "1024x1024"
}'
```
```
{
  "created": 1669982742,
  "data": [
    {
      "url": "https://URL1"
    },
    {
      "url": "https://URL2"
    }
  ]
}
```

A cute baby sea otterと指定したので、かわいい赤ちゃんラッコのURLを返してくれました。
このURLに大量アクセスされたら課金されても困るので、保存してアップしました。
クレジットカードとか登録してませんが、電話番号入れたので念の為。
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/23130/9b2460a5-26d9-1ef5-9128-d5d2240d3774.png)
![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/23130/e5b5b64f-23cb-a46e-a28d-d91711c72189.png)
どちらもかわいい赤ちゃんラッコです。

A cute baby dogに変えてやってみたら
![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/23130/fddc3990-e599-3173-ec11-548a293df7ba.png)
![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/23130/9c2ab4b2-2da2-313e-e4e9-09b30dd6c82e.png)

更にA cute baby picachuとピカチューを指定すると
![5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/23130/df0d831e-2c17-08b5-4597-a1ce425b52f3.png)
![6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/23130/5377072b-4a43-006c-19cb-653aff6b61e6.png)
まさかの実写版ピカチューさんも生成してくれます

# その他
後、画像合成とかファインチューニングとか色々あります。ファインチューニングは、既にあるモデルに追加で学習させるやり方です。
又、色々と探ってみます。

ChatGPTの中身についてはこちらにまとめました。
[必見：ChatGPTのテクノロジーの凄さについて](https://qiita.com/k1morikawa@github/items/8f91a06ba67e4e40c9e6)