👥

組織で ChatGPT API を運用する前に把握しておきたい!Organization、Member、API keyの関係について

2023/04/22に公開

※ 2023/04/22 までの情報です

はじめに

最近、多くの企業がこぞって ChatGPT API を利用した機能を開発しているかと思います。
そこで 1 つの壁になるのが、「組織内でどのように ChatGPT API アカウントや API キーの管理するか」だと思います。
これらを考えるには、Organization、Member、API key の関係を理解する必要があります

Organization、Member、API key の関係について

今回は以下の図と例を交えながら、Organization、Member、API key の関係を解説していきます。

言語化すると以下のようになっています。

  • Organization A と B の 2 つが存在する
  • Organization A には Member A と Member B が入っている
  • Organization B には Member B のみが入っている
  • Member B は 2 つの API key を発行している

1 つずつ掘り下げなら解説していきます。

Organization について

Organization は直訳すると「組織」となります。
例の場合は、Organization A と Organization B の 2 つの Organization が存在しています。

Organization は以下の要素を保持しています。(図では一部省略しています)

  • Settings
    • Organization の名前設定など
  • Usage
    • 利用状況の確認
  • Billing
    • 支払い情報
    • 利用制限
    • ...
  • Members
    • Organization に入っている Member

アカウント管理画面 を見てもそうなっていることがわかると思います。

この中でも重要なのは Billing と Members です。

Billing では支払い方法を管理します。すなわち、支払いはアカウントごとではなく Organization ごとに発生すると言えます。(これがすごく重要)

Members では、Organization に入っている Member を管理します。
例の場合は、Organization A には、Member A と Member B が設定されています。

Member について

Member はアカウントの単位で作成されます。User と表現されることもあります。

Member(User)は API keys を保持しており、アカウント管理画面 にも表現されています。

例の場合は、Member B が API keys を設定しています。

API keys について

API keys では、「API key の発行」と「デフォルト organization(支払い先) 」の設定を行います。
重要なのは、デフォルト organization(支払い先) の設定です。

API key は Member(User)が保持しますが、支払い先の情報は Organization ごとに発生します。ここでは、API key を利用した際のデフォルトの請求先 Organization を選択します。

また、リクエストごとに Organization を設定することもできます。

コード例
$ curl https://api.openai.com/v1/models \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "OpenAI-Organization: org-**************"

参考: API Reference - Requesting organization - OpenAI API

例では、Member B は Organization A と Organization B の 2 つに入っているため、リクエスト時もしくはデフォルト organization で請求先を設定する必要があります。

最後に

今回は、ChatGPT API 利用にあたっての Organization や Member などの概念を整理しました。
個人的に、支払い先の設定は Organization なのに、API key の発行はアカウントごとに行う部分がわかりづらいと感じ、運用する上でも気をつけることが多そうだと感じました。

理解が間違っていそうなところなどありましたらコメント頂けますと幸いです。

次回は、「結局どのように運用しているのか」みたいな話ができればと思います。

その他参考

Production best practices - OpenAI API

Discussion