菜单

使用 Logprobs

相关源文件

介绍

OpenAI Chat Completions API 中的 logprobs 参数返回输出标记的对数概率,从而能够评估置信度和分析模型行为。此系统支持分类任务、检索评估、自动完成实现和标记级分析。

logprobs=True 时,API 返回每个输出标记概率的自然对数。top_logprobs 参数 (0-5) 指定在每个位置返回的额外候选标记。

参数类型范围目的
logprobs布尔值真/假启用对数概率返回
top_logprobs整数0-5每个位置的备选标记数量

主要属性

  • 对数概率范围从负无穷大到 0.0 (0.0 = 100% 概率)
  • 转换为线性概率:np.exp(logprob)
  • 求和对数概率以计算序列概率

来源: examples/Using_logprobs.ipynb1-37

理解Logprobs

启用后,Chat Completions API 可以返回输出标记的对数概率以及它考虑的备选标记。关键参数是:

  • logprobs: 一个布尔值,用于启用返回输出标记的对数概率。
  • top_logprobs: 一个整数 (0-5),指定返回多少个备选标记及其概率。

对数概率是某个特定标记在该位置出现的概率(0到1之间)的自然对数。Logprobs 的主要特性:

  • 值范围从负无穷大到 0.0,其中 0.0 表示 100% 概率。
  • 负值越大表示置信度越低。
  • 它们可以求和以获得序列的联合概率。
  • 它们允许比较模型在不同输出之间的置信度。

带有 Logprobs 的 API 调用流程

位于 examples/Using_logprobs.ipynb67-93get_completion() 函数封装了可配置 logprobs 参数的 API 调用模式。响应结构通过 choices[0].logprobs.content 数组提供标记级概率数据。

来源: examples/Using_logprobs.ipynb67-93

使用 Logprobs 进行分类

分类置信度评估使用 logprobs 来确定模型在类别预测中的确定性。实现从第一个输出标记中提取概率分数以建立置信度阈值。

CLASSIFICATION_PROMPT 的实现

位于 examples/Using_logprobs.ipynb124-128CLASSIFICATION_PROMPT 模板定义了严格的输出约束。分类系统通过预定义的类别(技术、政治、体育、艺术)处理标题,并进行置信度评分。

实现模式

置信度提取遵循以下模式:

  1. get_completion(),参数为 logprobs=Truetop_logprobs=2
  2. 访问 API_RESPONSE.choices[0].logprobs.content[0].top_logprobs
  3. 将对数概率转换为百分比:np.round(np.exp(logprob.logprob)*100,2)
  4. 应用置信度阈值进行路由决策

来源: examples/Using_logprobs.ipynb124-298

代码实现细节

分类系统使用特定的函数和数据结构

功能位置目的
get_completion()examples/Using_logprobs.ipynb67-93带 logprobs 配置的 API 封装器
CLASSIFICATION_PROMPTexamples/Using_logprobs.ipynb124-128类别约束模板
处理循环examples/Using_logprobs.ipynb176-183带置信度评分的批量分类

置信度计算提取第一个标记的对数概率

  • API_RESPONSE.choices[0].logprobs.content[0].top_logprobs[0]
  • 通过 np.exp(logprob.logprob)*100 转换
  • 应用阈值(自动分类通常为 95%+)

测试数据包括技术、政治、体育和艺术类别的标题,具有不同置信度,以演示阈值系统。

来源: examples/Using_logprobs.ipynb124-298

RAG 置信度评分

RAG 系统使用 logprobs 在生成答案之前评估上下文的充分性。实现要求模型输出一个布尔评估(True/False)以评估上下文的充分性,然后从布尔标记的对数概率中提取置信度。

RAG 评估流程

实现组件

RAG 置信度系统使用

组件位置功能
ada_lovelace_articleexamples/Using_logprobs.ipynb327-334用于检索上下文的测试文档
easy_questionsexamples/Using_logprobs.ipynb337-340从上下文中可清楚回答的问题
medium_questionsexamples/Using_logprobs.ipynb343-346部分上下文覆盖的问题
PROMPT 模板examples/Using_logprobs.ipynb362-366布尔上下文评估提示

位于 examples/Using_logprobs.ipynb388-428 的评估循环处理不同类型的问题,从布尔响应标记中提取置信度分数。

来源: examples/Using_logprobs.ipynb327-438

布尔标记置信度分析

RAG 置信度系统从布尔响应标记中提取概率数据

结果显示了置信度差异

  • 简单问题:对于 True 标记,置信度为 100%
  • 中等问题:对于上下文不足的情况,False 的置信度为 99.14%
  • 该系统成功区分了充分和不足的检索上下文

实现通过相同的评估流程处理每个问题,为 RAG 决策提供一致的置信度指标。

来源: examples/Using_logprobs.ipynb362-438

带置信度阈值的自动完成

自动完成系统使用 logprobs 根据模型置信度过滤建议。实现分析顺序的句子前缀,以确定完成置信度模式。

自动完成数据流

实现组件

组件位置目的
sentence_listexamples/Using_logprobs.ipynb467-475用于测试的渐进式句子前缀
自动完成提示examples/Using_logprobs.ipynb509完成请求的模板
处理循环examples/Using_logprobs.ipynb508-528带置信度评分的批量完成
high_prob_completionsexamples/Using_logprobs.ipynb521-522置信度高于 95% 的建议
low_prob_completionsexamples/Using_logprobs.ipynb523-524置信度低于 60% 的建议

该系统演示了置信度模式:完整的短语会产生高置信度的完成,而模糊的前缀则产生低置信度的建议。

来源: examples/Using_logprobs.ipynb467-591

置信度分类系统

自动完成实现根据置信度级别对建议进行分类

结果分析

  • 高置信度(>95%):完整上下文,如 “我最不喜欢的电视剧是《绝命毒师》” → “因为”
  • 低置信度(<60%):模糊前缀,如 “我最不喜欢的电视剧” → “剧” (56.18%)

置信度阈值允许根据应用需求动态过滤建议。

来源: examples/Using_logprobs.ipynb504-591

标记高亮和字节处理

标记可视化使用来自 logprobs 的 bytes 参数,以重建带有标记化边界的文本。highlight_text() 函数演示了字节级标记重建。

标记处理管道

实现函数

功能位置目的
highlight_text()examples/Using_logprobs.ipynb620-641带颜色编码的标记可视化
字节解码examples/Using_logprobs.ipynb633bytes(t.bytes).decode("utf-8")
Token 计数examples/Using_logprobs.ipynb641len(tokens) 用于总标记计数

该函数循环使用预定义的颜色(#FF00FF, #008000, #FF8C00, #FF0000, #0000FF)来高亮显示单个标记,演示复杂文本中的标记化边界。

来源: examples/Using_logprobs.ipynb620-678

字节级文本重建

字节参数可实现精确的文本重建和特殊字符处理

字节重建过程

  1. 从每个标记中提取 t.bytes 数组
  2. 转换为字节对象:bytes(t.bytes)
  3. 解码为 UTF-8 字符串:.decode("utf-8")
  4. 累积以完成文本重建

此方法可准确处理特殊字符、表情符号和复杂的标记化模式,提供输入与标记化输出之间精确的字符级映射。

来源: examples/Using_logprobs.ipynb633-678

高级实现模式

Logprobs 通过对概率分布进行数学运算,实现复杂的置信度分析和系统监控。

困惑度计算

困惑度衡量模型在标记序列上的不确定性

序列概率聚合

计算多个标记的联合概率

操作公式目的
联合概率exp(sum(logprobs))总序列似然
每个标记的平均值exp(mean(logprobs))标准化置信度
困惑度exp(-mean(logprobs))不确定性测量

置信度监控系统

这使得能够系统地监控模型置信度模式,并为生产部署优化阈值。

来源: examples/Using_logprobs.ipynb1-37

技术实现

get_completion() 函数接口

核心 API 封装函数提供可配置的 logprobs 参数

参数类型默认目的
logprobs布尔值启用概率返回
top_logprobs整数备选标记计数(0-5)
模型字符串"gpt-4"模型选择
温度浮点数0采样随机性
种子整数123可重现性控制

响应数据结构

API 返回结构化的概率数据

核心处理函数

功能位置目的
get_completion()examples/Using_logprobs.ipynb67-93API 请求封装器
highlight_text()examples/Using_logprobs.ipynb620-641标记可视化
create_embedding()examples/Fine_tuning_for_function_calling.ipynb714-716嵌入生成

数学运算

  • 线性概率:np.exp(logprob)
  • 百分比:np.exp(logprob) * 100
  • 置信度阈值:np.exp(logprob) > threshold

来源: examples/Using_logprobs.ipynb67-93

结论

logprobs 参数为模型置信度和决策过程提供了宝贵的洞察。主要应用包括:

  1. 带置信度评估的分类
  2. 减少 RAG 系统中的幻觉
  3. 构建更智能的自动完成系统
  4. 标记级分析和调试
  5. 困惑度计算等高级应用

通过将 logprobs 整合到您的应用程序中,您可以构建更可靠、更透明、更值得信赖的 AI 系统,这些系统知道何时“不知道”——这是生产 AI 应用程序的关键能力。

来源: examples/Using_logprobs.ipynb1-37