在AI模型的开发和调试中,了解每个生成token的概率是非常有用的。这些信息可以帮我们理解模型的决策过程,识别可能的错误。本篇文章将介绍如何通过LangChain与OpenAI整合来获取这些token级的log probabilities。
在自然语言处理中,log probabilities是一种对token生成概率的度量。通常,这个值越高,表示生成该token的可能性越大。通过分析log probabilities,我们可以更深入地了解AI模型在生成文本时的决策过程。
LangChain是一种用于构建可组合语言模型应用的框架。通过与OpenAI的集成,LangChain可以让开发者获取详细的生成token信息,包括log probabilities。
要从OpenAI的模型中获取log probabilities,我们需要在API调用中配置logprobs=True
这个参数。这样返回的信息中就会包含每个token的log probabilities。
为了实现这一功能,我们首先需要安装LangChain与OpenAI的整合包,并配置API密钥。
# 安装LangChain OpenAI包
%pip install -qU langchain-openai
接下来,设置API密钥:
import getpass
import os
# 在运行时输入你的OpenAI API密钥
os.environ["OPENAI_API_KEY"] = getpass.getpass()
下面,我们使用LangChain的ChatOpenAI
来获取log probabilities。
from langchain_openai import ChatOpenAI
# 配置OpenAI模型并启用log probabilities
llm = ChatOpenAI(model="gpt-3.5-turbo-0125").bind(logprobs=True)
# 调用模型并输出log probabilities
msg = llm.invoke(("human", "how are you today"))
print(msg.response_metadata["logprobs"]["content"][:5]) # 输出前5个token的log probabilities
在输出中,你将看到像这样的结果:
[{'token': 'I', 'bytes': [73], 'logprob': -0.26341408, 'top_logprobs': []},
{'token': "'m", 'bytes': [39, 109], 'logprob': -0.48584133, 'top_logprobs': []},
{'token': ' just', 'bytes': [32, 106, 117, 115, 116], 'logprob': -0.23484154, 'top_logprobs': []},
{'token': ' a', 'bytes': [32, 97], 'logprob': -0.0018291725, 'top_logprobs': []},
{'token': ' computer', 'bytes': [32, 99, 111, 109, 112, 117, 116, 101, 114], 'logprob': -0.052299336, 'top_logprobs': []}]
我们同样可以在流式消息中获取这些数据:
ct = 0
full = None
for chunk in llm.stream(("human", "how are you today")):
if ct < 5:
full = chunk if full is None else full + chunk
if "logprobs" in full.response_metadata:
print(full.response_metadata["logprobs"]["content"])
else:
break
ct += 1
获取token级log probabilities可以帮助我们:
如果遇到问题欢迎在评论区交流。
—END—