GPT-5 の導入に伴い、危険な情報へのアクセスを検出して阻止するチェックを追加しました。特に幅広いユースケースに対応するアプリケーションでは、いずれ一部のユーザーが OpenAI のポリシーに反する目的でアプリケーションを利用しようとする可能性があります。
GPT-5 へのリクエストを、リスクのしきい値に基づいて分類します。
組織のリクエストが高リスクのしきい値に繰り返し達した場合、OpenAI はエラーを返し、警告メールを送信します。
指定された期間(通常は 7 日間)を過ぎてもそのようなリクエストが続く場合、組織の GPT-5 へのアクセスを停止します。それ以降、リクエストは処理されなくなります。
組織内で OpenAI の安全性ポリシーに違反する不審な活動が行われた場合、エラーの返却やモデルへのアクセス制限、さらにはアカウントのブロックを行うことがあります。以下の安全対策により、高リスクのリクエストの送信元を特定し、組織全体ではなく個々のエンドユーザーをブロックできるようになります。
個々のユーザーがモデルとやり取りするプロダクトでは、安全性識別子を実装してください 。安全性識別子の使用は推奨されますが、必須ではありません。
ライフサイエンス分野での有益な応用のために、制限を緩和したサービスへのアクセスが必要なユースケースでは、特別アクセスプログラム を参照し、利用基準を満たしているか確認してください。
safety_identifier パラメーターは、Responses API と従来の Chat Completions API の両方で利用できます。Realtime API でも、OpenAI-Safety-Identifier ヘッダーを通じて同じ仕組みを利用できます。安全性識別子を使用するには、リクエストごとに、同じエンドユーザーには常に同じ ID を指定してください。個人情報を渡さないよう、ユーザーのメールアドレスや内部ユーザー ID をハッシュ化してください。
安全性識別子は、API 間やセッション間で引き継がれません。アプリケーションがすでに Responses API のリクエストで safety_identifier を送信している場合でも、各 Realtime セッションの作成時や接続時に、同じ固定値を別途渡してください。
Responses API Chat Completions API Realtime API Responses API
1
2
3
4
5
6
7
8
9
10
11 import OpenAI from "openai" ;
const client = new OpenAI ();
const response = await client.responses. create ({
model: "gpt-5.6-terra" ,
input: "This is a test" ,
safety_identifier: "user_123456" ,
});
console. log (response.output_text); 1
2
3
4
5
6
7
8
9 from openai import OpenAI
client = OpenAI()
response = client.responses.create(
model="gpt-5.6-terra",
input="This is a test",
safety_identifier="user_123456",
) 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 package main
import (
"context"
"fmt"
"github.com/openai/openai-go/v3"
"github.com/openai/openai-go/v3/responses"
)
func main() {
client := openai.NewClient()
response, err := client.Responses.New(context.Background(), responses.ResponseNewParams{
Model: "gpt-5.6-terra",
Input: responses.ResponseNewParamsInputUnion{OfString: openai.String("This is a test")},
SafetyIdentifier: openai.String("user_123456"),
})
if err != nil {
panic(err)
}
fmt.Println(response.OutputText())
} 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.OpenAIOkHttpClient;
import com.openai.models.responses.ResponseCreateParams;
ResponseCreateParams params =
ResponseCreateParams.builder()
.model("gpt-5.6-terra")
.input("Help me plan a study schedule.")
.safetyIdentifier("user_1234")
.build();
client.responses().create(params).output().stream()
.flatMap(item -> item.message().stream())
.flatMap(message -> message.content().stream())
.flatMap(content -> content.outputText().stream())
.forEach(text -> System.out.println(text.text())); 1
2
3
4
5
6
7
8
9
10 require "openai"
client = OpenAI::Client.new
response = client.responses.create(
model: "gpt-5.6-terra",
input: "Help me plan a study schedule.",
safety_identifier: "user_1234"
)
puts(response.output_text) 1
2
3
4
5
6
7
8 curl https://api.openai.com/v1/responses \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gpt-5.6-terra",
"input": "This is a test",
"safety_identifier": "user_123456"
}' Chat Completions API
1
2
3
4
5
6
7
8
9
10
11 import OpenAI from "openai" ;
const client = new OpenAI ();
const response = await client.chat.completions. create ({
model: "gpt-5.6-terra" ,
messages: [{ role: "user" , content: "This is a test" }],
safety_identifier: "user_123456" ,
});
console. log (response.choices[ 0 ].message.content); 1
2
3
4
5
6
7
8
9 from openai import OpenAI
client = OpenAI()
response = client.chat.completions.create(
model="gpt-5.6-terra",
messages=[{"role": "user", "content": "This is a test"}],
safety_identifier="user_123456",
) 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package main
import (
"context"
"fmt"
"github.com/openai/openai-go/v3"
)
func main() {
client := openai.NewClient()
response, err := client.Chat.Completions.New(context.Background(), openai.ChatCompletionNewParams{
Model: "gpt-5.6-terra",
Messages: []openai.ChatCompletionMessageParamUnion{openai.UserMessage("This is a test")},
SafetyIdentifier: openai.String("user_123456"),
})
if err != nil {
panic(err)
}
fmt.Println(response.Choices[0].Message.Content)
} 1
2
3
4
5
6
7
8
9
10
11
12
13
14 import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.OpenAIOkHttpClient;
import com.openai.models.chat.completions.ChatCompletionCreateParams;
ChatCompletionCreateParams params =
ChatCompletionCreateParams.builder()
.model("gpt-5.6-terra")
.addUserMessage("Help me plan a study schedule.")
.safetyIdentifier("user_1234")
.build();
client.chat().completions().create(params).choices().stream()
.flatMap(choice -> choice.message().content().stream())
.forEach(System.out::println); 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 require "openai"
client = OpenAI::Client.new
completion = client.chat.completions.create(
model: "gpt-5.6-terra",
messages: [
{
role: :user,
content: "Help me plan a study schedule."
}
],
safety_identifier: "user_1234"
)
puts(completion.choices.fetch(0).message.content) 1
2
3
4
5
6
7
8
9
10 curl https://api.openai.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gpt-5.6-terra",
"messages": [
{"role": "user", "content": "This is a test"}
],
"safety_identifier": "user_123456"
}' Realtime API
1
2
3
4
5
6
7
8
9
10 curl https://api.openai.com/v1/realtime/client_secrets \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY " \
-H "OpenAI-Safety-Identifier: user_123456" \
-d '{
"session": {
"type": "realtime",
"model": "gpt-realtime-2.1"
}
}'
OpenAI の監視システムが不正利用の可能性を検出した場合、段階に応じて次のような措置を取ることがあります。
ストリーミングレスポンスの遅延
ポリシーに違反している可能性のあるユーザーに対し、OpenAI は影響の小さい初期措置として、ストリーミングレスポンスを遅らせることがあります。その間に追加のチェックを実行してから、ユーザーに完全なレスポンスを返します。
チェックに合格すると、ストリーミングが開始されます。チェックに合格しない場合、リクエストは停止します。トークンは一切表示されず、ストリーミングレスポンスも開始されません。
エンドユーザーの体験を向上させるため、ストリーミングが遅れる場合に備えて、読み込み中を示すスピナーの追加を検討してください。
ユーザーごとのモデルアクセスのブロック
ポリシー違反であると高い確度で判断された場合、該当する safety_identifier による OpenAI モデルへのアクセスは完全にブロックされます。
その安全性識別子を使用した以降のすべての GPT-5 リクエストでは、identifier blocked エラーが返されます。現在、OpenAI は個別の識別子のブロックを解除できません。
これらのブロックを有効に機能させるため、ブロックされたユーザーが新しいアカウントを作成できないようにする仕組みを必ず設けてください。繰り返しになりますが、組織内でポリシー違反が繰り返されると、組織全体のアクセスが停止される可能性があります。
措置を適用する具体的な基準は、実際の利用状況の変化や新しいモデルのリリースに応じて変わる可能性があります。現在、OpenAI は、生物学や化学に関する危険または不審な活動に関連する安全性識別子のアクセスを制限またはブロックすることがあります。生物学分野における AI の能力向上に対する OpenAI の取り組みについては、ブログ記事 をご覧ください。
ツールやモデルのカスタマイズに固有の安全対策については、コンピューターの使用における確認と同意 およびファインチューニングの安全性 を参照してください。OpenAI は、モデル評価ハブ でも評価結果を公開しています。