このガイドでは、プロトタイプから本番環境への移行に役立つベストプラクティスを幅広く紹介します。経験豊富な機械学習エンジニアにも、最近この分野に関心を持ち始めた方にも、本番環境でプラットフォームを活用するために必要な知識を提供します。API へのアクセスの保護から、大量のトラフィックに対応できる堅牢なアーキテクチャの設計までを取り上げます。アプリケーションをできるだけ円滑かつ効果的にデプロイするための計画づくりに、このガイドをお役立てください。
本番環境への移行に関するベストプラクティスをさらに詳しく知りたい方は、次の Developer Day の講演をご覧ください。
組織の設定
OpenAI アカウントにログインすると、組織設定で組織名と ID を確認できます。組織名は、ユーザーインターフェースに表示される組織のラベルです。組織 ID は組織を一意に識別するもので、API リクエストで使用できます。
複数の組織に所属するユーザーは、ヘッダーを渡すことで、API リクエストに使用する組織を指定できます。これらの API リクエストの使用量は、指定された組織の割り当てに計上されます。ヘッダーを指定しない場合は、デフォルトの組織に課金されます。デフォルトの組織はユーザー設定で変更できます。
チームページから、組織に新しいメンバーを招待できます。メンバーには、 閲覧者 または オーナーのロールを割り当てられます。
閲覧者:
- API リクエストの実行が可能
- 組織の基本情報の閲覧が可能
- 特に記載がない限り、組織内のリソース(Assistants など)の作成、更新、削除が可能
オーナー:
- 閲覧者のすべての権限を保有
- 請求情報の変更が可能
- 組織内のメンバーの管理が可能
課金上限の管理
請求情報を入力すると、OpenAI が組織に対して承認された利用上限を設定します。プラットフォームの利用が増え、利用ティアが上がるにつれて、割り当て上限は自動的に引き上げられます。現在の利用上限は、アカウント設定の上限ページで確認できます。
上限ページで利用額のアラートを設定すると、利用額が指定したドル金額を超えたときに通知を送信できます。月額の上限を強制的に適用するには、利用額のハード上限を設定します。ハード上限を設定すると、計測された利用額が上限に達した時点で対象の API トラフィックが停止するため、本番環境で有効にする前に利用額の上限ガイドを確認してください。
API キー
OpenAI API は認証に API キーを使用します。API キーページで、リクエストに使用する API キーを取得してください。
API キーは比較的簡単にアクセスを制御できる方法ですが、キーの保護には十分な注意が必要です。API キーをコードや公開リポジトリで露出させず、安全な場所に保管してください。コードベースにキーをハードコードせずに済むよう、環境変数やシークレット管理サービスを通じてアプリケーションに渡してください。詳しくは、API キーを安全に使用するためのベストプラクティスをご覧ください。
プロジェクトの API キーを作成する際は、有効期限を設定し、定期的にキーをローテーションする手順を整えることを強くお勧めします。キーの有効期限が切れる前に新しいキーを作成し、アプリケーションが新しいキーを使用するように更新してください。新しいキーが正常に機能することを確認したら、古いキーを失効させてください。
管理者は、プラットフォームの設定で、組織またはプロジェクト単位で API キーの有効期間に上限を設けることができます。新しいキーには設定された上限以内の有効期限が必須となるため、無期限に有効なままになることを防げます。プロジェクトの上限は、組織の上限を超えることはできません。
プラットフォームの設定にある API キーガバナンス セクションでは、組織やプロジェクトの管理者が、作成できる API キーの種類を制限できます。管理者は、サービスアカウントのキーのみを許可する、ユーザーが所有するプロジェクトキーのみを許可する、または API キーの新規作成をすべて無効にすることができます。組織レベルの制限が常に優先されるため、プロジェクトの設定で制限を追加することはできますが、組織レベルの制限を緩和することはできません。これらの制御はキーの新規作成にのみ適用され、既存の API キーには影響しません。
追跡を有効にすると、使用量ページで API キーの使用量を監視できます。2023 年 12 月 20 日より前に生成された API キーを使用している場合、追跡はデフォルトでは有効になっていません。API キー管理ダッシュボードで、それ以降の使用量の追跡を有効にできます。2023 年 12 月 20 日より後に生成された API キーは、すべて追跡が有効になっています。過去に追跡されていなかった使用量は、ダッシュボードに Untracked と表示されます。
ステージング用プロジェクト
規模の拡大に伴い、ステージング環境と本番環境で別々のプロジェクトを作成することを検討してください。ダッシュボードでこれらのプロジェクトを作成すれば、開発やテストの作業を分離し、稼働中のアプリケーションに誤って影響を与えるのを防げます。また、本番用プロジェクトへのユーザーアクセスを制限したり、プロジェクトごとに独自のレート制限や利用額の上限を設定したりすることもできます。
ソリューションアーキテクチャのスケーリング
OpenAI の API を使うアプリケーションやサービスを本番環境向けに設計する際は、トラフィックの需要に応じてどのようにスケーリングするかを考えることが重要です。どのクラウドサービスプロバイダーを選ぶ場合でも、次の主な点を検討する必要があります。
- 水平スケーリング:さまざまな送信元からアプリケーションに届くリクエストに対応するため、アプリケーションの水平スケーリングを検討してください。サーバーやコンテナを追加でデプロイし、負荷を分散する方法などがあります。この方式を採用する場合は、複数のノードを扱えるアーキテクチャを設計し、ノード間で負荷を分散する仕組みを用意してください。
- 垂直スケーリング:もう一つの選択肢は、単一ノードで利用できるリソースを増やす垂直スケーリングです。サーバーの性能を引き上げることで、増加した負荷に対応します。この方式を採用する場合は、追加したリソースを活用できるようにアプリケーションを設計してください。
- キャッシュ:頻繁にアクセスするデータを保存しておけば、OpenAI の API を繰り返し呼び出すことなく、応答時間を短縮できます。可能な限りキャッシュ済みのデータを使用し、新しい情報が追加された際にはキャッシュを無効化するようにアプリケーションを設計する必要があります。たとえば、アプリケーションに最も適した方法に応じて、データベース、ファイルシステム、インメモリキャッシュなどにデータを保存できます。
- 負荷分散:最後に、利用可能なサーバーにリクエストを均等に振り分けるため、負荷分散の手法を検討してください。サーバーの前段にロードバランサーを配置する方法や、DNS ラウンドロビンを使う方法などがあります。負荷を分散することで、パフォーマンスの向上とボトルネックの軽減につながります。
レート制限の管理
OpenAI の API を使用する際は、レート制限を理解し、それを踏まえて計画を立てることが重要です。
レイテンシの改善
レイテンシの 最適化に関する最新のガイドをご覧ください。
レイテンシとは、リクエストが処理され、レスポンスが返されるまでにかかる時間です。このセクションでは、OpenAI のテキスト生成モデルのレイテンシに影響する要因を取り上げ、短縮するための方法を紹介します。
補完リクエストのレイテンシは、主にモデルと生成されるトークン数という 2 つの要因に左右されます。補完リクエストのライフサイクルは次のとおりです。
通常、レイテンシの大部分はトークンの生成段階で発生します。
基本的な考え方:プロンプトのトークンによって、補完リクエストのレイテンシが増えることはほとんどありません。一方、補完のトークンは一つずつ生成されるため、生成にははるかに長い時間がかかります。生成する文章が長くなるほど、各トークンの生成にかかる時間が積み重なり、レイテンシが増加します。
レイテンシに影響する主な要因と軽減策
レイテンシの基本を確認したところで、レイテンシに影響するさまざまな要因を、おおむね影響の大きい順に見ていきましょう。
モデル
OpenAI の API では、複雑さや汎用性の異なるモデルを提供しています。gpt-6-astra などの最も高性能なモデルは、より複雑で多様な補完を生成できますが、クエリの処理にも時間がかかります。
gpt-5.6-terra や gpt-5.6-luna などのモデルは、より高速かつ低コストでレスポンスを生成できます。一方、複雑なタスクにも余裕を持って対応したい場合は、gpt-6-astra が基本の選択肢としてより適しています。ユースケースに応じて、速度、コスト、品質のバランスが最も合うモデルを選択できます。
補完トークン数
生成トークン数の多い補完をリクエストすると、レイテンシが増加する可能性があります。
- 最大トークン数を減らす:生成されるトークン数が同程度のリクエストでは、
max_tokensパラメータの値が小さいほどレイテンシが短くなります。 - 停止シーケンスを指定する:不要なトークンの生成を防ぐため、停止シーケンスを追加します。たとえば、項目数を指定してリストを生成する場合に使用できます。
11.を停止シーケンスとして指定すると、11.に達した時点で補完が停止するため、項目が 10 個だけのリストを生成できます。具体的な方法については、停止シーケンスに関するヘルプ記事をご覧ください。 - 生成する補完の数を減らす:可能な場合は、
nとbest_ofの値を小さくしてください。nは各プロンプトに対して生成する補完の数を示し、best_ofはトークンあたりの対数確率が最も高い結果を選ぶために使用されます。
n と best_of がどちらも 1(デフォルト値)の場合、生成されるトークン数は最大でも max_tokens です。
n(返される補完の数)または best_of(候補として生成される補完の数)が > 1 に設定されている場合、各リクエストで複数の出力が作成されます。この場合、生成されるトークン数は [ max_tokens * max (n, best_of) ] と考えることができます。
ストリーミング
リクエストで stream: true を設定すると、モデルはすべてのトークンの生成が終わるのを待たずに、トークンが生成され次第、返し始めます。すべてのトークンを受け取るまでの時間は変わりませんが、途中経過を表示したり、生成を途中で停止したりするアプリケーションでは、最初のトークンを受け取るまでの時間を短縮できます。ユーザー体験の改善につながる可能性があるため、ストリーミングを試してみる価値があります。
バッチ処理
ユースケースによっては、バッチ処理が役立つ場合があります。同じエンドポイントに複数のリクエストを送信する場合は、プロンプトをまとめて 1 つのリクエストで送信できます。これにより、必要なリクエスト数を減らせます。prompt パラメータには、異なるプロンプトを最大 20 個まで指定できます。この方法を試し、効果があるか確認することをお勧めします。場合によっては、生成されるトークン数が増え、応答時間が長くなることもあります。
コスト管理
コストを監視するには、アカウントで通知しきい値を設定し、使用量が指定したしきい値を超えたときにメールアラートを受け取ることができます。現在および過去の請求期間におけるトークン使用量は、使用量追跡ダッシュボードで確認してください。
テキスト生成
プロトタイプを本番環境へ移行する際の課題の一つは、アプリケーションの運用コストの予算を立てることです。OpenAI は従量課金モデルを採用しており、1,000 トークン(およそ 750 単語に相当)あたりの料金を設定しています。コストを見積もるには、トークン使用量を予測する必要があります。トラフィック量、ユーザーがアプリケーションを利用する頻度、処理するデータ量などを考慮してください。
コスト削減を考える際は、コストがトークン数とトークンあたりの単価によって決まると捉えると役立ちます。 この考え方に基づくと、コスト削減には二つのアプローチがあります。一つは、一部のタスクでより小さなモデルに切り替え、トークンあたりの単価を下げる方法です。もう一つは、必要なトークン数を減らす方法です。たとえば、プロンプトを短くする、モデルをファインチューニングする、よくあるユーザークエリをキャッシュして繰り返し処理する必要をなくす、といった方法があります。
コストの見積もりには、対話型のトークナイザーツールを試してみてください。API と Playground も、レスポンスの一部としてトークン数を返します。最も高性能なモデルで動作するようになったら、他のモデルでもレイテンシとコストを抑えながら同じ結果を得られるか確認できます。詳しくは、トークン使用量に関するヘルプ記事をご覧ください。
MLOps 戦略
プロトタイプを本番環境へ移行する際は、MLOps 戦略の策定を検討するとよいでしょう。MLOps(機械学習の運用)とは、機械学習モデルのライフサイクル全体を管理するプロセスを指します。OpenAI の API を使ってファインチューニングするモデルも対象に含まれます。MLOps 戦略を設計する際は、次の領域を検討してください。
- データとモデルの管理:モデルの学習やファインチューニングに使うデータの管理と、バージョンや変更の追跡
- モデルの監視:モデルの性能の継続的な追跡と、潜在的な問題や性能低下の検出
- モデルの再学習:データや要件の変化への対応と、必要に応じた再学習やファインチューニング
- モデルのデプロイ:モデルと関連する成果物を本番環境にデプロイするプロセスの自動化
アプリケーションのこうした側面を十分に検討することで、モデルが長期にわたってニーズに応え、良好な性能を維持しやすくなります。
セキュリティとコンプライアンス
プロトタイプを本番環境に移行する際は、アプリケーションに適用される可能性のあるセキュリティとコンプライアンスの要件を評価し、対応する必要があります。そのためには、取り扱うデータを確認し、OpenAI の API がデータをどのように処理するかを理解したうえで、遵守すべき規制を特定します。OpenAI のセキュリティ対策と信頼性とコンプライアンスのポータルでは、最も包括的で最新のドキュメントを提供しています。プライバシーポリシーと利用規約もご参照ください。
一般的に検討が必要な項目には、データの保存、転送、保持などがあります。また、可能な範囲で暗号化や匿名化を行うなど、データのプライバシーを保護する対策が必要になる場合もあります。さらに、入力のサニタイズや適切なエラー処理など、セキュアコーディングのベストプラクティスにも従ってください。
安全性のベストプラクティス
OpenAI の API でアプリケーションを作成する際は、安全性を確保し、成功につなげるために、安全性のベストプラクティスを参考にしてください。これらの推奨事項では、プロダクトを幅広くテストすること、潜在的な問題に先手を打って対処すること、不正利用の余地を減らすことを重視しています。
ビジネス上の検討事項
AI を使うプロジェクトをプロトタイプから本番環境へ移行する際は、AI で優れたプロダクトを構築する方法と、それを自社の中核事業にどう結びつけるかを検討することが重要です。OpenAI がすべての答えを持っているわけではありませんが、まずは Developer Day でお客様とこのテーマを掘り下げた、以下のセッションをご覧ください。