我正在 Langchain 和 OpenAI 中创建一个项目,除了当我尝试跟踪每次链运行的代币使用情况和成本时,一切都正常工作。
在 python 中,Langchain.py 的 Callback 部分中有一个方法 get_openai_callback(),但我在 JS 框架上找不到等效的方法。
Langchain 聊天机器人给了我正确的答案。它只是给了我 JS 框架中不存在的功能。
有人知道如何跟踪每次链运行中的代币使用情况和产生的成本吗?欢迎任何帮助。
PD。我将 ConversationalRetrievalQAChain 与 BufferMemory 和矢量搜索结合使用。
我尝试使用 langchain 聊天机器人给我的代码
const { Chain } = require("langchain");
async function getChainRunCost(chainRunId) {
const chain = new Chain();
const callback = await chain.getOpenAICallback(chainRunId);
const cost = callback.cost;
return cost;
}
// Usage
const chainRunId = "your-chain-run-id";
const cost = await getChainRunCost(chainRunId);
console.log(cost);
但是框架中不存在这个功能:
const回调=等待chain.getOpenAICallback(chainRunId);
是否有真正的方法可以在每次链运行中返还成本?
最佳答案
您可以使用“handleLLMEnd”回调函数添加“callbacks”属性,以获取每次模型运行时的总 token 使用情况。
注意:将模型设置为“gpt-3.5-turbo-0613”返回 token 仅适用于使用 ChatOpenAI。这似乎是一个错误或什么的。我使用的是0.0.116版本。
import { ChatOpenAI } from 'langchain/chat_models/openai';
let totalCompletionTokens = 0;
let totalPromptTokens = 0;
let totalExecutionTokens = 0;
const llm = new ChatOpenAI({
callbacks: [
{
handleLLMEnd: (output, runId, parentRunId?, tags?) => {
const { completionTokens, promptTokens, totalTokens } = output.llmOutput?.tokenUsage;
totalCompletionTokens += completionTokens ?? 0;
totalPromptTokens += promptTokens ?? 0;
totalExecutionTokens += totalTokens ?? 0;
},
},
],
modelName: 'gpt-3.5-turbo-0613',
});
关于javascript - LangChain.js 无法获取代币消耗和费用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76509403/