GPT-6 Luna
OpenAI の GPT-6 Luna は対話モデルであると同時に、Decisions API による型付きの判定にも対応しています。判定モードの使い方は Jev と同じです。リクエストで判定対象のコンテンツと質問のセットを指定すると、モデルは質問ごとに構造化された回答とその確率を返します。Jev と比較して、GPT-6 Luna は画像入力に対応しています。
このページでは GPT-6 Luna の判定の使い方を説明します。対話での使い方は GPT シリーズを参照してください。
Jev との使い分け
同じ質問のセットに対する 2 つのモデルの判定結果はおおむね一致します。同じ返金チケットで実測したところ、いずれも返金申請と判定し、billing に割り当てました。
クイックスタート
https://api.ofox.ai/v1openai/gpt-6-luna/v1/decisionsPOSTOpenAI 公式の Python SDK で呼び出す場合は、client.decisions を含むバージョンをインストールする必要があります(pip install -U openai。3.31.0 で動作を確認済みです)。API Key の作成方法は Jev · クイックスタートを参照してください。
import os
from openai import OpenAI
client = OpenAI(base_url="https://api.ofox.ai/v1", api_key=os.environ["OFOX_API_KEY"])
r = client.decisions.create(
model="openai/gpt-6-luna",
input="Customer message: I was charged twice and need a refund today.",
questions=[
{"type": "predicate", "name": "refund", "instructions": "Is the customer asking for a refund?"},
{
"type": "choice",
"name": "team",
"instructions": "Which team should handle this ticket?",
"choices": [
{"value": "billing", "description": "Charges, invoices, refunds"},
{"value": "technical", "description": "Outages, errors, integration issues"},
{"value": "other", "description": "None of the above"},
],
},
],
)
refund, team = r.answers
print(refund.probability, team.choice, team.confidence)出力:
1.0 billing 1.0画像の判定
画像を渡す場合、input にはメッセージの配列を使用し、content 内で input_image として画像を渡します。画像は base64 の data URL で指定します。画像の出所を説明する input_text を同時に渡すこともできます。
import base64
import os
from openai import OpenAI
client = OpenAI(base_url="https://api.ofox.ai/v1", api_key=os.environ["OFOX_API_KEY"])
with open("product.jpg", "rb") as f:
image = "data:image/jpeg;base64," + base64.b64encode(f.read()).decode()
r = client.decisions.create(
model="openai/gpt-6-luna",
input=[{
"role": "user",
"content": [
{"type": "input_text", "text": "Product image uploaded by a user"},
{"type": "input_image", "image_url": image},
],
}],
questions=[
{"type": "predicate", "name": "has_text", "instructions": "Does the image contain any text?"},
{
"type": "choice",
"name": "shape",
"instructions": "What shape is on the left side of the image?",
"choices": [{"value": "circle"}, {"value": "square"}, {"value": "triangle"}, {"value": "other"}],
},
],
)
for a in r.answers:
print(a.name, getattr(a, "probability", None) or a.choice)
print(r.usage.prompt_tokens)出力:
has_text 1.0
shape circle
538サンプル画像は白地に赤い円、青い正方形、1 行のテキストを配置したもので、2 つの質問はいずれも正しく判定されました。フィールドの定義は Decisions API · 入力形式を参照してください。
質問の設計と本番導入の準備
Jev のドキュメントのうち、以下の内容は GPT-6 Luna にも同様に適用されます。
- 質問の設計:選択肢はすべてのケースを網羅すること、選択肢に説明を記述すること、質問に
nameを設定すること、および返却フィールドの意味。 - 本番導入の準備:人手でラベル付けしたサンプルによる信頼度のしきい値の設定、複数の質問の同一リクエストへの統合。
課金
判定モードと対話モードは別々に課金されます。判定モードの単価はモデルページ を参照してください。実測では、判定リクエストで返される usage には prompt_tokens(画像部分を含む)のみが含まれ、completion_tokens は含まれません。
よくあるエラー
エラーメッセージと対処方法は Jev · よくあるエラーおよび Decisions API · よくあるエラーを参照してください。このうち、Jev への画像入力に関するエラーは GPT-6 Luna には該当しません。
公式ドキュメント
よくある質問
GPT-6 Luna の判定モードと対話モードの違いは何ですか?
判定モードは /v1/decisions で呼び出し、指定された選択肢と段階の範囲内でのみ回答し、確率と信頼度を返します。対話モードは /v1/chat/completions または /v1/responses で呼び出し、テキストの回答を生成します。2 つのモードは別々に課金されます。
GPT-6 Luna と Jev はどのように使い分けますか?
画像を判定する必要がある場合は GPT-6 Luna を、テキストまたは JSON のみを処理し、応答速度が重視される場合は Jev を選択します。両者のリクエスト形式と質問タイプは同じであるため、切り替える際は model を変更するだけで済みます。
TypeSafe SDK で GPT-6 Luna を呼び出せますか?
呼び出せます。実測では、/typesafe/v1/systemone と /openai/v1/decisions のいずれからも openai/gpt-6-luna を呼び出すことができ、呼び出し方法は Jev と同じです。