LLMの出力の確信度

多くの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などという答えになることがわかります。