chatGPTのAPIリファレンスを日本語に訳しながら理解しようと思う(4

前回はこちら

注意書き
こちらAPIリファレンスを日本語訳しておりますが、解説については個人のメモ程度なので過信しすぎませんようお願いいたします。

え?なぜこんな記述をですって?
Googleで検索上位に表示されているという事実に気づいたからです。
びっくらぽんですわ(魚べい派

はい。では行きましょう

今回はここから

Files

ふむふむ、微調整などの機能で使用できるドキュメントをアップロードするために使用されると。
fine-tuning(前回やった奴)の微調整データをチャットちゃんにアップしたり管理するための処理ってことかな?

The file object

これは、チャットちゃんにファイルデータをアップすると戻ってくる情報みたいですね。

{
  "id": "file-abc123",
  "object": "file",
  "bytes": 120000,
  "created_at": 1677610602,
  "filename": "my_file.jsonl",
  "purpose": "fine-tune",
}

id
APIエンドポイントで参照できるファイル識別子
こいつを参照するときに指定する名前みたいなもんかしら。

object
オブジェクトタイプですね、こいつは常に「file」になるようです。

bytes
ファイルサイズ(単位:バイト)

created_at
ファイルの作成時間(Unixタイムスタンプ)

filename
ファイル名

purpose
ファイルの目的。何のためのファイルかってことっすな。
fine-tuneあるいはfine-tune-resultsが入るとのこと。
fine-tuneはチャットちゃん微調整用データ、
fine-tune-resultsは微調整用データを読ませたチャットちゃんにテストテキストを読ませたリターンデータってところかしらね。(雑

status
status_details
こちらは非推奨ということで、説明もありませんね。


List files

ユーザーの組織に属するファイルのリストを返します。
指定しているのがOPENAI_API_KEYだけっぽいので、
OPENAI_API_KEY名でアップロードしたファイルのリストを出力してくれるようですね。

リクエスト

curl https://api.openai.com/v1/files \
  -H "Authorization: Bearer $OPENAI_API_KEY"

で、戻ってくる内容

{
  "data": [
    {
      "id": "file-abc123",
      "object": "file",
      "bytes": 175,
      "created_at": 1613677385,
      "filename": "train.jsonl",
      "purpose": "fine-tune"
    },
    {
      "id": "file-abc123",
      "object": "file",
      "bytes": 140,
      "created_at": 1613779121,
      "filename": "puppy.jsonl",
      "purpose": "fine-tune"
    }
  ],
  "object": "list"
}

ううん、、id重複してるじゃん。重複したら一意で特定できないじゃん、?
どゆこと?
(後で調べたい)


Upload file

お、データのアップロード処理ですな。
チャットちゃんに微調整用データなんかをアップロードする処理になるんでしょう
えーっと?アップロードできるファイル容量は全部で1GBですって。
それを超えるときは相談してねですって。
テキストデータだけならまぁ、オーバーすることはないけど、イメージファイルメインになると足りなさそうね。

curl https://api.openai.com/v1/files \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -F purpose="fine-tune" \
  -F file="@mydata.jsonl"

アップロードの際に記述する内容ですわ。

file 必須
アップロードするファイル名ですね。

purpose 必須
何のために使用するのかを記述します
微調整用の場合は「fine-tune」を指定しておくと利用できるかをチェックしてくれるみたいです。(多分

で、これを実行して返ってくるデータですが、
The file objectで先述した内容が返ってきます。

{
  "id": "file-abc123",
  "object": "file",
  "bytes": 140,
  "created_at": 1613779121,
  "filename": "mydata.jsonl",
  "purpose": "fine-tune",
}

うん、、idって固定なんかな??なんか不安になってきた。


Delete file

はい、アップがあるなら削除もあります。
アップロードしたファイルの削除処理です。

curl https://api.openai.com/v1/files/file-abc123 \
  -X DELETE \
  -H "Authorization: Bearer $OPENAI_API_KEY"

ファイル名を指定して、DELETEと打つだけのようです。
(ほら、やっぱりIDって一意だよね?一意と言ってくれ・・・(´・ω・`))
で、返ってくる情報はこちら

{
  "id": "file-abc123",
  "object": "file",
  "deleted": true
}

file-abc123というfileの削除が正しく実施されましたよーって情報が返ってきますね。


Retrieve file

ファイル情報の取得。です。
さっきリストで表示していましたが、これは特定のファイルの情報だけ頂戴って処理ですな。

curl https://api.openai.com/v1/files/file-abc123 \
  -H "Authorization: Bearer $OPENAI_API_KEY"

指定するのはファイル名だけみたい。
で、返ってくるのはThe file objectで見た内容と同一と。

{
  "id": "file-abc123",
  "object": "file",
  "bytes": 140,
  "created_at": 1613779657,
  "filename": "mydata.jsonl",
  "purpose": "fine-tune"
}

以上つぎー


Retrieve file content

ファイル内容の取得、?あぁ、内容を見るのな。

curl https://api.openai.com/v1/files/file-abc123/content \
  -H "Authorization: Bearer $OPENAI_API_KEY" > file.jsonl

指定しているのはファイルIDだけのはずなんですが、、
なんでや、、curlではファイル名も指定してるじゃないか、、どういうことや。。。
あ、返ってくる内容はファイルの中身そのまま。だと思われます。


おぉ、これでFilesの内容については終了ですね
よかった、昨日の濃度が今日も続いていたらわたしは、、、
ではつぎですぅー


Images

はえーチャットちゃん絵も描けるのすごいねぇ、、、
プロンプトや入力画像を与えることで、チャットちゃんが新しい画像を生成してくれるようです。
細かい解説はこちら

The image object

ほうほう、こちらはチャットちゃんが画像を生成したときの情報だそうで。

{
  "url": "..."
}

ひょー✨超シンプル!
画像データはWeb上に保管しているからUrlだけ返ってくるってことですかね?

あ、設定によってはb64_json形式にエンコード(変換)された状態で受信することも可能だそうです。
(画像を文字にするって何度考えても面白いよねぇ、、)
その時は
「"b64_json":"・・・"
こんな風に返ってくるってことですかね。


Create image

プロンプトを指定して画像を生成する。

curl https://api.openai.com/v1/images/generations \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "prompt": "A cute baby sea otter",
    "n": 2,
    "size": "1024x1024"
  }'

これは、送信データですね。送信先がimages/generaitonsになっております。
で、指定する内容はっと、、、

prompt 必須
プロンプト、テキストですね。かわいい子猫とか、かっこいいマッチョマンとか。ほしい画像を説明したテキストを入れます。

n
画像を何枚生成するかをしていします。1~10が指定できます。
デフォルトは1

response_format
先述しましたね。urlとして受け取るか、b64_json形式で受け取るか選択できます。デフォルトはurlです。

size
画像の大きさを指定します。
256x256, 512x512,1024x1024のいずれかである必要があります。
デフォルトは1024x1024

user
エンドユーザーが利用している場合、不正利用などを検知するために設定しておくと良いです。

で、返信内容はこんな感じ

{
  "created": 1589478378,
  "data": [
    {
      "url": "https://..."
    },
    {
      "url": "https://..."
    }
  ]
}

これは画像を2つ指定した場合のようです。
createdはおそらく作成時間(Unixタイムスタンプ)でしょう
(ちょっとわかってきたぞ!)


Create image edit

画像の編集
えーっと、画像+プロンプトで画像の編集を行えるということですな。

curl https://api.openai.com/v1/images/edits \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -F image="@otter.png" \
  -F mask="@mask.png" \
  -F prompt="A cute baby sea otter wearing a beret" \
  -F n=2 \
  -F size="1024x1024"

さてさて各項目を見ていきますぜ
image 必須
編集する画像(4MB未満のpngファイルで、正方形であること)
マスクが提供されていない場合は、マスクとして使用される透明性を持っておく必要があるそうです。

mask
編集する画像のどこを編集するのかを視覚的に説明するもの(ってことか。
ここに載せた画像の完全に透明な部分を修正するそうです。
逆に言うなら、塗りつぶされた部分は修正されないと。
修正されたくない部分を塗りつぶしておいておくと良いのでしょう。
(4MB未満のpngファイルで、imageの画像と同一寸法であること)

prompt 必須
修正内容をテキストで記述したもの

n
出力する画像の枚数1~10

size
画像の大きさ
256x256, 512x512,1024x1024のいずれか。
デフォルトは1024x1024

response_format
urlとして受け取るか、b64_json形式で受け取るか選択できます。デフォルトはurlです。

user
エンドユーザーが利用している場合、不正利用などを検知するために設定しておくと良いです。

・・・maskの説明だけちょっとするか、、
はい、こちら先日画像生成AIさんで出力してもらった画像です。

きゃわわ

んで、例えば、背景だけ変えたいなーってときは、、

maskはこう!(雑!

特に何色で色塗れという指定はないのでおそらく何色でもいいんだと思います(透明な部分を検知するので)
で、プロンプトに「雑踏の中」とか入れると雑踏にたたずむこの人みたいな画像を返してくれる、、、ハズです。
で、maskを指定しない場合は、image画像の変更したい箇所を透明にしておいてねということみたい。

image単体で行くならこう!

こんなかんじですかね?


Create image variation

指定された画像のバリエーションを作成すると、、
渡した画像に似た画像を生成してくれるってことかな?

curl https://api.openai.com/v1/images/variations \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -F image="@otter.png" \
  -F n=2 \
  -F size="1024x1024"

入力はこんな感じと、、
指定する内容は
image 必須
n
response_format
size
user
何度も説明したので割愛。ここだけ異なるみたいなものはないので、前述しているものを拾ってくればまぁ、理解できるかと。


へへへ、最後は疲れてしまいましたw
渡す画像はどこに置くんだよ、、みたいな気持ちにはなるんですが、それはまぁ、あれですね。環境によって変わってきそうだなぁとは思っている次第。
この処理が動く時点で、システムが認識できる場所に置けていればいいのでしょう。

あと少しだよ!次回で終わるはず!
ではではではー!

この記事が気に入ったらサポートをしてみませんか?