GPT‑5.2(Responses API)利用の流れ
## 利用手順
- OpenAI アカウントを作成
- APIキー を取得
- リクエストヘッダーに設定
- Authorization: Bearer YOUR_API_KEY
- Content-Type: application/json
## エンドポイント
```
POST https://api.openai.com/v1/responses
```
## 公式ドキュメントURL
- [OpenAI API Docs – Responses](https://platform.openai.com/docs/api-reference/responses)
## Pythonコード例
### requests を使った直接呼び出し
```
import requests
API_KEY = "YOUR_API_KEY"
url = "https://api.openai.com/v1/responses"
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
# ユーザー質問
user_question = "この製品はISO規格に適合していますか?"
# RAGで取得した外部情報(例: 構造データ+PDF抜粋)
retrieved_context = """
構造データ:
{
"製品名": "ABCセンサー",
"測定範囲": "0-100℃",
"精度": "±0.5℃"
}
規格PDF抜粋:
ISO 12345:2023 セクション 4.2
温度センサーは測定範囲0-100℃、精度±1.0℃以内であること。
"""
# API呼び出し
data = {
"model": "gpt-5.2",
"input": f"質問: {user_question}\n\n追加情報:\n{retrieved_context}"
}
response = requests.post(url, headers=headers, json=data)
print(response.json()["output"][0]["content"][0]["text"])
```
「"""」は三連引用符。複数行にわたる文字列を定義する。
### 公式Python SDKを使った呼び出し
```
from openai import OpenAI
client = OpenAI(api_key="YOUR_API_KEY")
# ユーザー質問
user_question = "この製品はISO規格に適合していますか?"
# RAGで取得した外部情報(例: 構造データ+PDF抜粋)
retrieved_context = """
構造データ:
{
"製品名": "ABCセンサー",
"測定範囲": "0-100℃",
"精度": "±0.5℃"
}
規格PDF抜粋:
ISO 12345:2023 セクション 4.2
温度センサーは測定範囲0-100℃、精度±1.0℃以内であること。
"""
# API呼び出し
resp = client.responses.create(
model="gpt-5.2",
input=f"質問: {user_question}\n\n追加情報:\n{retrieved_context}"
)
print(resp.output[0].content[0].text)
```
### API呼出し時のinputの指定パターン
#### 文字列形式
```
resp = client.responses.create(
model="gpt-5.2",
input=f"質問: {user_question}\n\n追加情報:\n{retrieved_context}"
)
```
「f」は変数展開の指定
#### 構造化形式
```
resp = client.responses.create(
model="gpt-5.2",
input=[
{
"role": "user",
"content": [
{"type": "input_text", "text": f"質問: {user_question}"},
{"type": "input_text", "text": f"追加情報:\n{retrieved_context}"}
]
}
]
)
```
#### roleの種類
1. role: "system"
- 用途: モデルの振る舞いや出力ルールを事前に定義する
- 関係性:
- スキーマで「構造」を保証するだけでは不十分
- 「このプロパティはこういう意味で、この範囲の値を返す」といった 意味付けや利用方法を指示する場所が system
2. role: "user"
- 用途: 実際の質問や指示を与える
- 関係性: プロパティの意味付けはここではなく、質問内容を渡す場所
3. role: "assistant"
- 用途: 過去の応答を含めて会話の流れを維持する
- 関係性: プロパティの意味付けとは直接関係しない
例:
```
"response_format": {
"type": "json_schema",
"json_schema": {
"name": "iso_check_schema",
"schema": {
"type": "object",
"properties": {
"compliance": { "type": "boolean" },
"standard": { "type": "string" },
"explanation": { "type": "string" }
},
"required": ["compliance", "standard"]
}
}
}
"input": [
{
"role": "system",
"content": [
{
"type": "text",
"text": "あなたは品質管理の専門家です。必ず以下のスキーマに従って返答してください。\n- compliance: 製品が指定されたISO規格に適合している場合はtrue、そうでなければfalse。\n- standard: 対象となるISO規格番号を文字列で返す。\n- explanation: 適合/非適合の理由を簡潔に説明する。"
}
]
},
{
"role": "user",
"content": [
{
"type": "input_text",
"text": "この製品はISO 9001に適合していますか?"
}
]
}
]
```
#### system 指示の有効範囲
- リクエスト単位で有効
→ そのリクエストの中で指定した role: "system" の内容は、そのリクエスト全体に効きます。
- 次のリクエストには引き継がれない
→ 別の呼び出しをするときには、再度 system を含めて渡さないとルールは維持されません。
- 継続利用したい場合
→ 会話履歴を再現する形で、毎回 system を含めて送る必要があります。
→ 例えば「必ずJSON Schemaに従って返答する」「confidenceは0.0〜1.0で返す」といったルールは、毎回 system に書いて渡すのが正しい使い方です。
#### typeの種類
- input_text
- 通常のテキスト入力
- 例: ユーザーの質問や補足情報
- input_image
- 画像入力
- 例: 画像ファイルを渡して「この図を説明して」と指示する
- input_audio
- 音声入力
- 例: 音声ファイルを渡して「文字起こしして」と指示する
### file_searchの使い方
file_searchはResponses API に組み込まれたビルトインツール。Vector Store 内のファイルを検索し、回答生成に利用する仕組み。
1. Vector Store を作成
```
vs = client.vector_stores.create(name="my_store")
```
2. ファイルをアップロードして Vector Store に追加
```
client.vector_stores.files.upload(
vector_store_id=vs.id,
file=open("manual.md", "rb")
)
```
3. Responses API 呼び出し時に tools と vector_store_ids を指定
```
resp = client.responses.create(
model="gpt-5.2",
input="この製品はISO 9001に適合していますか?",
tools=[{"type": "file_search"}],
vector_store_ids=[vs.id]
)
```
## GPT‑5.2 Responses API パラメータ一覧
1. 出力制御系
- temperature
- 出力のランダム性を制御(0〜2)
- 低いほど安定・事実寄り、高いほど創造的
- top_p
- 確率分布の累積で候補範囲を制限(0〜1)
- 低いほど一貫性が高く、高いほど多様性が増す
- max_output_tokens
- 出力の最大トークン数を指定
- 長文生成や要約の長さを調整可能
2. 応答形式系
- input
- ユーザーからの質問や指示(必須)
- modalities
- 出力形式を指定(例: "text", "json", "audio")
- JSON構造や音声出力を求める場合に利用
- response_format
- 出力の形式をさらに細かく指定
- 例: "json_schema" を指定して構造化データを返す
3. 応答数・多様性系
- n
- 応答の候補数を指定(例: 2なら2通りの回答を返す)
- presence_penalty
- 新しいトピックや単語を使う傾向を強める(-2〜2)
- 高い値 → 繰り返しを避け、新しい語彙を導入
- frequency_penalty
- 同じ単語の繰り返しを抑制(-2〜2)
- 高い値 → 冗長な繰り返しを減らす
4. ストリーミング系
- stream
- 出力を逐次受け取るかどうか(True/False)
- チャットUIなどで「少しずつ表示」したい場合に利用
5. システム制御系
- model
- 使用するモデルを指定(例: "gpt-5.2", "gpt-5.2-pro", "gpt-5.2-mini")
- metadata
- リクエストに付随するメタ情報(ログやトラッキング用)
## モデルバリエーション比較
|モデル名|特徴|用途例|
|----|----|----|
|gpt-5.2-mini| 軽量・低コスト | チャットボット、リアルタイム応答|
|gpt-5.2| 標準精度・速度 | 一般的なテキスト生成、要約|
|gpt-5.2-pro| 長文脈・高精度 | 複雑な推論、研究支援、コード生成|
## GPT‑5.2 Responses API 価格(2025年12月時点)
|モデル名|入力 (1M tokens)|キャッシュ入力 (1M tokens)|出力 (1M tokens)|特徴|
|----|---:|---:|---:|----|
|GPT‑5.2|$1.75|$0.175|$14.00|標準モデル。複雑な推論やコーディングに強い|
|GPT‑5.2 Pro|$21.00| – |$168.00|最も精度が高い。専門的タスク向け|
|GPT‑5 Mini|$0.25|$0.025|$2.00|軽量・高速。コスト効率重視|
# RAGについて
## RAGは設計パターン
RAG(Retrieval‑Augmented Generation)は、LLMに渡す前処理の仕組み。「検索(Retriever)で外部情報を取得し、それをLLM(Generator)に渡して回答を生成する」という仕組みのこと。
## 実装パターン
実装の仕方は以下2パターン、或いはハイブリッド方式。
1. 利用者側で追加情報を与える方式
- 特徴
- ユーザーが自分で検索・抽出した情報を input に含めて渡す
- GPT‑5.2(Responses API)は「質問+追加情報」を受け取り回答するだけ
- メリット
- シンプルで制御しやすい
- どの情報を根拠にするか利用者が明示できる
- デメリット
- ユーザーが毎回情報を準備する必要がある
- 自動化には不向き
2. システム側で追加情報を付加する方式
- 特徴
- ユーザーは質問だけを投げる
- システムが裏側で Retriever を動かし、関連情報を検索して input に自動で付加
- メリット
- ユーザーは「質問するだけ」で済む
- 一貫した検索・根拠付けが可能
- デメリット
- 検索精度がシステム依存になる
- どの情報が根拠に使われたかユーザーが見えにくい
3. 補足
- GPT‑5.2(Responses API)は 与えられた input のテキストだけを処理します。
- 「RAGで検索して付加して」と指示しても、API単体では外部データベースやPDFを勝手に検索する機能はありません。
- RAGは 設計パターンなので、Retriever(検索部分)は利用者やシステム側で実装し、その結果を input に含める必要があります。
## CopilotのWeb検索統合 vs RAG設計パターン
| 項目 | CopilotのWeb検索統合 | RAG設計パターン |
|--------------|------------------------------------------|------------------------------------------|
| 検索の実装 | Copilot内部で自動呼び出し | 利用者/システムが外部で実装 |
| ユーザー操作 | 検索を意識せずに利用可能 | 検索結果を明示的に input に含める必要あり |
| 出典提示 | CopilotがURLを提示 | 開発者が出典を含める設計にする |
| 設計思想 | 機能統合型(検索+生成が一体) | パターン分離型(RetrieverとGeneratorを分離) |
2025/12/18
GPT‑5.2(Responses API)利用の流れ
登録:
コメントの投稿 (Atom)
人気の投稿
-
## 作業前確認 [Amazon Linux 2023 リリースノート](https://docs.aws.amazon.com/ja_jp/linux/al2023/release-notes/relnotes.html) ### インスタンスのネットワーク設定 ``` ...
-
EVMの概念 EVMの概念 EVMの用語と計算式 略語 正式名称 訳語 計算式 BAC Budget At Completion 完了までの当初予算 - ...
-
## 使用するOSバージョンとAMIの選定 [AWS が Amazon EC2 での Microsoft Windows Server 2025 イメージの提供開始を発表](https://aws.amazon.com/jp/about-aws/whats-new/2024/1...
-
## 基本構文 ``` Test-NetConnection [-ComputerName] <string> [-Port <int>] [-InformationLevel <string>] [-TraceRoute] ``` ## ...
-
# CodeCommit ## HTTPS方式でアクセスする場合 予め、~/.aws/configファイルにプロファイルを作成し、リージョンや、アクセスキーを設定しておく。 ``` [profile git] region = us-east-1 output = json a...
0 件のコメント:
コメントを投稿