在這篇文章中,我們將討論如何使用OpenAI API中的信心分數。在第一部分,我們將探索這些分數並了解它們的意義。第二部分將討論如何在程式中利用信心分數。
目錄
探索信心值
首先,讓我們簡單介紹一下LLM在回應每個字元時的機制:
- 模型會對字典中的每個字元給出一個值(大約有10萬個值)
- 這些值被轉換成所謂的“概率值”。這些值是本文的重點
- 然後概率最高的字元被選中,並最終成為回應中的一部分
接下來,我們將用自定義的聊天介面來看一些實例:
- 每個LLM回應的字元將用紅色下劃線來表示信心值
- 在滑鼠懸停到字詞上時,會顯示該位置排名前10的候選字元
想要在本地運行的話,可以 點擊這裡 克隆程式碼庫。
讓我們單純地請求模型選擇一個數字。可以發現,模型對「選擇」、「挑選」等詞的概率不同,但即使概率較低的詞也可能被選中。這證明LLM並非總選擇概率最高的下一字元。
程式中應用信心值
舉個簡單的例子,我們來請求模型回答一個是非題:
```python import math from openai import OpenAI
client = OpenAI() completion = client.chat.completions.create( model="gpt-4o", messages=[ dict( role="user", content="Is the Great Wall of China visible from the Moon?", ) ], temperature=0, max_tokens=1, logprobs=True, )
choice = completion.choices[0] confidence = math.exp(choice.logprobs.content[0].logprob)
print(f"Answer: {choice.message.content} ({confidence:.4%})")
Answer: No (60.5926%)
```
這個例子的重點在於:
-
temperature=0
,確保我們得到信心值最高的字元 -
max_tokens=1
,因為我們只需要一個字元的回應 -
logprobs=True
,請求API返回‘對數概率’
你可能會好奇,為什麼OpenAI要返回對數概率而不是直接的概率?我也無法完全理解,但我們需要使用
math.exp
將其轉換為0到1之間的值。...