我想自己手动选择我的代币,而不是让
llama-cpp-python
自动为我选择一个。
这要求我查看候选下一个标记的列表以及它们的概率,以便我根据我的标准选择正确的标记。
如何做到这一点?
您需要使用
logits_all=True
创建模型
model = Llama(model_path="your model here", logits_all=True)
然后使用一个最大令牌和您需要的 logprobs 数量来请求完成
out = model.create_completion("The capital of France is", max_tokens=1, logprobs=10)
然后
out["choices"][0]["logprobs"]["top_logprobs"][0]
看起来像这样
{' Paris': np.float32(-0.531455),
' not': np.float32(-2.7322779),
' located': np.float32(-3.029975),
' the': np.float32(-3.4100742),
' a': np.float32(-3.6376095),
' also': np.float32(-4.1634436),
' actually': np.float32(-4.2124586),
'...': np.float32(-4.279561),
' in': np.float32(-4.5441475),
' officially': np.float32(-4.6838427)}
您可以使用 np.exp() 将 logprobs 转换为概率。