メインコンテンツへスキップ

GPT-6 Astra APIの始め方:利用権限の確認から最初の応答まで

14 分で読めますtutorial

GPT-6 AstraはAPIで提供開始済みです。自分のAPIプロジェクトから呼び出せるかを確認し、Pythonの短い実行例で応答を判定します。エラーが出た場合も、権限・請求・アプリ設定のどこを直せばよいか分かります。

APIプロジェクトのキー・請求・利用権限を確認し、GPT-6 Astraから応答を受け取るまでの関係図

GPT-6 Astraは、すでにOpenAI APIで提供されています。2026年9月5日に確認したOpenAI公式の最新案内には、APIでも利用開始済みであることが明記されています。これから試すなら、公開待ちと考えるより、アプリで使うAPIプロジェクトから実際に応答を取得できるかを確かめるのが次の一歩です。

ただし、ChatGPTの画面でAstraを選べることと、APIキーで呼び出せることは別です。APIキーによるアクセスは、そのキーが所属するAPI組織・プロジェクトに従います。ワークスペースでモデルを有効にしてもAPIの利用権限は付与されません。OpenAIの権限説明も、この区別を明示しています。

この記事では、OpenAIに直接接続するPythonの例を使い、最初の応答まで確認します。すでにアプリへ組み込んでいて失敗している場合も、同じキーで単独の実行例を試すと、利用権限とアプリ側の問題を切り分けやすくなります。

実行前に、キーの所属先と請求設定を確かめる

OpenAI API Platformで、今回使う組織とプロジェクトを選びます。APIキーを発行したプロジェクトと、利用状況や制限を見ているプロジェクトが一致していることを確認してください。個人の試作用キーで成功しても、会社の本番プロジェクトの権限を確認したことにはなりません。

AstraはAPIのFree tierには対応していません。これはChatGPTの無料・有料プランとは別の、API側の利用区分です。モデルの対応状況はGPT-6 Astraの公式モデルページで確認できます。請求設定、残高、適用される使用上限を確かめてから進みます。支払い済みであることだけで、個別のキーが必要な権限を持つと判断しないでください。

日本はOpenAI APIの対応国一覧に含まれています。一方、日本語のアプリでも、実行環境や利用者の所在地が海外なら、その国・地域の条件を別途確認する必要があります。

APIキーはサーバー側の環境変数OPENAI_API_KEYに設定します。ブラウザーへ配信するJavaScriptや公開リポジトリには含めません。キーの作成と環境変数の基本手順は公式クイックスタートにあります。ここからのコードは、その手順とAPI仕様に基づく実行例です。実行時にはAPIの使用料金が発生し、以下の例が特定のアカウントで成功することを保証するものではありません。

Pythonで一度呼び出し、応答の状態まで見る

最初の確認では、会話履歴、外部ツール、既存アプリの共通設定を持ち込まず、短い文章を一つ送ります。モデルIDはgpt-6-astra、エンドポイントはResponses APIです。推論の設定はlowを使います。Astraではnoneminimalを指定できず、ツール呼び出しにはResponses APIが必要です。公式の利用ガイドで、対応するAPIと設定項目を確認できます。

Python用SDKを更新します。

bash
python3 -m pip install --upgrade openai

OPENAI_API_KEYに目的のプロジェクトのキーが入っていることを確認し、次をcheck_astra.pyとして保存します。OPENAI_ORG_IDOPENAI_PROJECT_IDを設定している環境では、それらが今回の所属先と一致しているかも確認してください。この例は接続先を明示しているため、互換API用のOPENAI_BASE_URLが残っていてもOpenAIへ直接送信します。

python
import json import os from openai import OpenAI, APIConnectionError, APIStatusError client = OpenAI( api_key=os.environ["OPENAI_API_KEY"], base_url="https://api.openai.com/v1", organization=os.environ.get("OPENAI_ORG_ID"), project=os.environ.get("OPENAI_PROJECT_ID"), max_retries=0, ) try: response = client.responses.create( model="gpt-6-astra", reasoning={"effort": "low"}, input="動作確認です。日本語で短い挨拶を一文だけ返してください。", max_output_tokens=4096, ) except APIStatusError as exc: print("HTTP status:", exc.status_code) print("request_id:", exc.response.headers.get("x-request-id")) print("error:", exc.response.text) raise SystemExit(1) except APIConnectionError as exc: print("接続に失敗しました:", str(exc)) raise SystemExit(1) else: print("response_id:", response.id) print("model:", response.model) print("status:", response.status) print("incomplete_details:", response.incomplete_details) print("usage:", response.usage) print("text:", response.output_text) if response.status != "completed" or not response.output_text.strip(): print("応答の内容を確認してください:") print(json.dumps(response.model_dump(), ensure_ascii=False, indent=2)) raise SystemExit(2)

実行コマンドはpython3 check_astra.pyです。今回は一度の結果をそのまま確認するため、自動再試行を無効にしています。エラー時の出力には原因の手掛かりが含まれます。問い合わせ先に共有する際は、APIキーや入力中の機密情報を含めないようにします。

max_output_tokens=4096は、この短い確認用入力に対して設定した上限例です。常に十分な値という意味ではありません。この上限には表示される文章だけでなく推論分も含まれ、使い切ると文章が出る前に終わることがあります。詳しい挙動は推論モデルの出力上限の説明にあります。

「本文がない」と「利用できない」を分けて判断する

この確認例では、statuscompletedで、日本語の短い応答がtextに表示されれば、指定した接続先とキーで、今回のテキスト生成を完了できたと判断できます。応答のmodelresponse_idも残しておくと、後から確認しやすくなります。生成された文章が「私はAstraです」と名乗るかどうかは、モデルを確認する方法にはしません。

completedと本文の有無、incompleteの出力上限、HTTPエラーから次の確認項目を判断する図

応答が空の場合は、次のように読み分けます。

結果分かること次に確認する点
status=completedで本文ありこのリクエストのテキスト生成が完了した同じ接続設定をアプリへ移す
status=incompletereason=max_output_tokens出力上限に達して完了していないusageを確認し、必要なら上限を増やして再実行する
completedなのにoutput_textが空想定したテキストを取り出せていないoutput全体を見て、メッセージの内容や拒否などを確認する
HTTPエラーが返るリクエストがエラーとして扱われたHTTP番号とerror.codemessageを一緒に読む
接続エラーだけで応答がないAPIの応答を取得できていないネットワーク、プロキシ、DNS、タイムアウトを確認する

出力不足で終わった場合も、入力や推論に使用料金が発生することがあります。空の本文を見て、無料で失敗した、あるいはAstraの権限がないと決めつけないことが大切です。

また、Responses APIのREST応答では、outputに推論やツール呼び出しなど複数種類の項目が入ります。output[0].content[0].textの固定位置を読む実装は避けてください。上のPython例で使ったSDKのoutput_textは、テキストをまとめて取得するためのプロパティです。この違いは公式のテキスト生成ガイドに説明されています。

エラーが出たら、再試行の前に原因を分類する

HTTP番号だけでは対処を決められないことがあります。特に429は、送信頻度が高い場合にも、残高や支出上限の問題でも返ります。公式エラー一覧に従い、返された本文を確認してください。

表示・症状最初に行うこと
401キーが正しいか、所属する組織が一致するかを確認する。IP許可リストの制限を示す本文なら送信元も確認する
403で国・地域に関する説明がある実行場所と対応国一覧を照合する
モデルが存在しない、または利用できないという説明gpt-6-astraの綴り、接続先、キーの所属プロジェクト、モデルの利用権限を確認する
400でパラメーター名が示されるその設定項目を公式ガイドと照合する。service_tierならプロジェクトで許可された処理区分も確認する
429でcredit_balance_exhaustedAPI組織の前払い残高を確認する
429でproject_spend_limit_exceededorganization_spend_limit_exceeded該当するプロジェクト・組織の支出上限を管理者と確認する
429でorganization_usage_limit_exceededOpenAIから割り当てられた組織の使用上限を確認する
429で頻度制限、またはslow_down送信頻度を下げ、Retry-Afterがあれば従う
503でserver_is_overloadedRetry-Afterがあれば従い、時間を置いて再試行する

モデルの利用に関するエラーが出ても、その一件だけで「まだAPIが公開されていない」とは判断できません。API自体は提供開始済みなので、まずそのリクエストが使っているプロジェクトと設定を確かめます。請求・上限・権限の問題は、同じリクエストを繰り返すだけでは解決しません。

管理者やサポートへ相談する場合は、実行日時とタイムゾーン、対象プロジェクト、モデルID、HTTP番号、エラー本文、取得できたrequest_idをまとめます。これにより「Astraが動かない」という説明だけよりも、調査対象を絞れます。継続運用時の送信量を調整したい場合は、OpenAI APIのレート制限と対処法を参照してください。

単独の実行例が成功したら、アプリの設定を戻していく

同じキーで上の例が成功し、既存アプリだけが失敗するなら、まず送信内容の差分を調べます。Astraへの変更では、モデル名の置き換えだけでは不十分な場合があります。公式ガイドは、次の変更を求めています。移行時の設定一覧を手元の実装と照合してください。

  • temperaturetop_ptop_logprobsを送らないようにします。共通の初期値やミドルウェアが追加していないかも確認します。
  • Chat Completionsではlogprobsを外します。Responsesではincludemessage.output_text.logprobsを外します。
  • Responsesではreasoning.effort、Chat Completionsではreasoning_effortを使います。既存値がnoneminimalなら、まずlowで確認します。
  • ツールを呼び出すアプリはResponses APIを使います。テキストだけのChat Completions対応を、ツール対応まで含むと解釈しないでください。

EUのデータレジデンシーを利用するプロジェクトでは、Astraのfastpriorityは非対応で、Standard処理を使います。日本語のアプリかどうかではなく、対象プロジェクトの設定に応じて判断します。

単独の実行例と既存アプリの接続先や推論設定を比較し、会話履歴とツールを順に戻す手順

まず短いテキスト生成をアプリ内で再現し、その後、会話履歴やツールなどを必要な順に戻します。各変更で、接続先、キーの所属プロジェクト、モデルID、推論設定、出力の取り出し方を記録しておくと、どこで挙動が変わったか追えます。

第三者の互換APIを使う場合は、そのサービスの接続先、キー、モデル名、対応パラメーター、請求条件で改めて確認します。互換API経由の成功は、そのサービスでの利用を確認した結果です。OpenAIのAPIプロジェクトに同じ権限があることまでは示しません。

最初の応答を取得できたら、次は実際の入力とusageで費用を見積もります。長い入力やキャッシュを含む料金の確認は、GPT-6 AstraのAPI料金ガイドで扱っています。

#GPT-6 Astra#OpenAI API#Python#Responses API
Share: