OpenAI Chat Completions API 中的 logprobs 参数返回输出标记的对数概率,从而能够评估置信度和分析模型行为。此系统支持分类任务、检索评估、自动完成实现和标记级分析。
当 logprobs=True 时,API 返回每个输出标记概率的自然对数。top_logprobs 参数 (0-5) 指定在每个位置返回的额外候选标记。
| 参数 | 类型 | 范围 | 目的 |
|---|---|---|---|
logprobs | 布尔值 | 真/假 | 启用对数概率返回 |
top_logprobs | 整数 | 0-5 | 每个位置的备选标记数量 |
主要属性
np.exp(logprob)来源: examples/Using_logprobs.ipynb1-37
启用后,Chat Completions API 可以返回输出标记的对数概率以及它考虑的备选标记。关键参数是:
logprobs: 一个布尔值,用于启用返回输出标记的对数概率。top_logprobs: 一个整数 (0-5),指定返回多少个备选标记及其概率。对数概率是某个特定标记在该位置出现的概率(0到1之间)的自然对数。Logprobs 的主要特性:
位于 examples/Using_logprobs.ipynb67-93 的 get_completion() 函数封装了可配置 logprobs 参数的 API 调用模式。响应结构通过 choices[0].logprobs.content 数组提供标记级概率数据。
来源: examples/Using_logprobs.ipynb67-93
分类置信度评估使用 logprobs 来确定模型在类别预测中的确定性。实现从第一个输出标记中提取概率分数以建立置信度阈值。
位于 examples/Using_logprobs.ipynb124-128 的 CLASSIFICATION_PROMPT 模板定义了严格的输出约束。分类系统通过预定义的类别(技术、政治、体育、艺术)处理标题,并进行置信度评分。
置信度提取遵循以下模式:
get_completion(),参数为 logprobs=True 和 top_logprobs=2API_RESPONSE.choices[0].logprobs.content[0].top_logprobsnp.round(np.exp(logprob.logprob)*100,2)来源: examples/Using_logprobs.ipynb124-298
分类系统使用特定的函数和数据结构
| 功能 | 位置 | 目的 |
|---|---|---|
get_completion() | examples/Using_logprobs.ipynb67-93 | 带 logprobs 配置的 API 封装器 |
CLASSIFICATION_PROMPT | examples/Using_logprobs.ipynb124-128 | 类别约束模板 |
| 处理循环 | examples/Using_logprobs.ipynb176-183 | 带置信度评分的批量分类 |
置信度计算提取第一个标记的对数概率
API_RESPONSE.choices[0].logprobs.content[0].top_logprobs[0]np.exp(logprob.logprob)*100 转换测试数据包括技术、政治、体育和艺术类别的标题,具有不同置信度,以演示阈值系统。
来源: examples/Using_logprobs.ipynb124-298
RAG 系统使用 logprobs 在生成答案之前评估上下文的充分性。实现要求模型输出一个布尔评估(True/False)以评估上下文的充分性,然后从布尔标记的对数概率中提取置信度。
RAG 置信度系统使用
| 组件 | 位置 | 功能 |
|---|---|---|
ada_lovelace_article | examples/Using_logprobs.ipynb327-334 | 用于检索上下文的测试文档 |
easy_questions | examples/Using_logprobs.ipynb337-340 | 从上下文中可清楚回答的问题 |
medium_questions | examples/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_list | examples/Using_logprobs.ipynb467-475 | 用于测试的渐进式句子前缀 |
| 自动完成提示 | examples/Using_logprobs.ipynb509 | 完成请求的模板 |
| 处理循环 | examples/Using_logprobs.ipynb508-528 | 带置信度评分的批量完成 |
high_prob_completions | examples/Using_logprobs.ipynb521-522 | 置信度高于 95% 的建议 |
low_prob_completions | examples/Using_logprobs.ipynb523-524 | 置信度低于 60% 的建议 |
该系统演示了置信度模式:完整的短语会产生高置信度的完成,而模糊的前缀则产生低置信度的建议。
来源: examples/Using_logprobs.ipynb467-591
自动完成实现根据置信度级别对建议进行分类
结果分析
置信度阈值允许根据应用需求动态过滤建议。
来源: examples/Using_logprobs.ipynb504-591
标记可视化使用来自 logprobs 的 bytes 参数,以重建带有标记化边界的文本。highlight_text() 函数演示了字节级标记重建。
| 功能 | 位置 | 目的 |
|---|---|---|
highlight_text() | examples/Using_logprobs.ipynb620-641 | 带颜色编码的标记可视化 |
| 字节解码 | examples/Using_logprobs.ipynb633 | bytes(t.bytes).decode("utf-8") |
| Token 计数 | examples/Using_logprobs.ipynb641 | len(tokens) 用于总标记计数 |
该函数循环使用预定义的颜色(#FF00FF, #008000, #FF8C00, #FF0000, #0000FF)来高亮显示单个标记,演示复杂文本中的标记化边界。
来源: examples/Using_logprobs.ipynb620-678
字节参数可实现精确的文本重建和特殊字符处理
字节重建过程
t.bytes 数组bytes(t.bytes).decode("utf-8")此方法可准确处理特殊字符、表情符号和复杂的标记化模式,提供输入与标记化输出之间精确的字符级映射。
来源: examples/Using_logprobs.ipynb633-678
Logprobs 通过对概率分布进行数学运算,实现复杂的置信度分析和系统监控。
困惑度衡量模型在标记序列上的不确定性
计算多个标记的联合概率
| 操作 | 公式 | 目的 |
|---|---|---|
| 联合概率 | exp(sum(logprobs)) | 总序列似然 |
| 每个标记的平均值 | exp(mean(logprobs)) | 标准化置信度 |
| 困惑度 | exp(-mean(logprobs)) | 不确定性测量 |
这使得能够系统地监控模型置信度模式,并为生产部署优化阈值。
来源: examples/Using_logprobs.ipynb1-37
核心 API 封装函数提供可配置的 logprobs 参数
| 参数 | 类型 | 默认 | 目的 |
|---|---|---|---|
logprobs | 布尔值 | 无 | 启用概率返回 |
top_logprobs | 整数 | 无 | 备选标记计数(0-5) |
模型 | 字符串 | "gpt-4" | 模型选择 |
温度 | 浮点数 | 0 | 采样随机性 |
种子 | 整数 | 123 | 可重现性控制 |
API 返回结构化的概率数据
| 功能 | 位置 | 目的 |
|---|---|---|
get_completion() | examples/Using_logprobs.ipynb67-93 | API 请求封装器 |
highlight_text() | examples/Using_logprobs.ipynb620-641 | 标记可视化 |
create_embedding() | examples/Fine_tuning_for_function_calling.ipynb714-716 | 嵌入生成 |
数学运算
np.exp(logprob)np.exp(logprob) * 100np.exp(logprob) > threshold来源: examples/Using_logprobs.ipynb67-93
logprobs 参数为模型置信度和决策过程提供了宝贵的洞察。主要应用包括:
通过将 logprobs 整合到您的应用程序中,您可以构建更可靠、更透明、更值得信赖的 AI 系统,这些系统知道何时“不知道”——这是生产 AI 应用程序的关键能力。