多くのLLMには出力トークンの確信度の対数 logprobs を出力する機能があります。この使い方を説明します。
簡単のため、1トークンで答えられる質問を用意します。ここでは三重県にある霊山という山の標高を聞きます。3桁メートルなので、1トークンで答えられます。
import math
from openai import OpenAI
client = OpenAI()
prompt = "三重県にある霊山の標高は何メートルですか? わからなくても当てずっぽうでかまいません。答えは数字3桁で答えてください。数字以外は出力しないでください。"
res = client.chat.completions.create(
model="gpt-5.2", # non-reasoning model
messages=[
{
"role": "user",
"content": prompt
}
],
logprobs=True,
top_logprobs=3,
temperature=0
)
print(res.choices[0].message.content)
for x in res.choices[0].logprobs.content:
print(repr(x.token))
for t in x.top_logprobs:
print(f" {math.exp(t.logprob):7.5f} {repr(t.token)}")
出力は次のようになりました。
'766' 0.36807 '766' 0.04981 '745' 0.03879 '555'
766メートルで正解なのですが、確信度は36.8%で、5.0%は745、3.9%は555などという答えになることがわかります。