LangChain.js 实战系列:如何统计大模型使用的 token 使用量和花费

📝 LangChain.js 是一个快速开发大模型应用的框架,它提供了一系列强大的功能和工具,使得开发者能够更加高效地构建复杂的应用程序。LangChain.js 实战系列文章将介绍在实际项目中使用 LangChain.js 时的一些方法和技巧。

统计调用大模型的 token 使用量,进而统计整体的账单花费,是一个非常基础的需求,在 LangChain.js 中统计 token 的方式有两种,一种是方法的返回,一种是利用回调函数:

1️⃣ 在方法中返回 token 的使用情况,比如 generate()

const chat = new ChatOpenAI({
  modelName: 'gpt-4',
  openAIApiKey: 'YOUR_KEY',
})

const response = await chat.generate([
  [
    new SystemMessage(
      "你是一个翻译专家,可以将中文翻译成法语。"
    ),
    new HumanMessage(
      "把这个句子翻译从中文翻译成法语:我特别喜欢上班"
    ),
  ]
]);

generate() 方法会返回如下:

{
  "generations": [
    [
      {
        "text": "J'aime beaucoup travailler."
        //...
      }
    ]
  ],
  "llmOutput": {
    "tokenUsage": {
      "completionTokens": 16,
      "promptTokens": 17,
      "totalTokens": 33
    }
  }
}

llmOutput 字段包含我们整个的 token 使用量,其中 promptTokens 对应的是输入的 token,completionTokens 对应的是输出的 token,对于 OpenAI 来说,输入输出的价格是不一的,如下表:

模型名输入输出
gpt-4$0.03 / 1K tokens$0.06 / 1K tokens
gpt-3.5-turbo-1106$0.0010 / 1K tokens$0.0020 / 1K tokens
gpt-4-1106-preview$0.01 / 1K tokens$0.03 / 1K tokens
gpt-4-1106-vision-preview$0.01 / 1K tokens$0.03 / 1K tokens

2️⃣ 使用回调函数 handleLLMEnd

LangChain 提供了大量方便的回调函数,我们可以利用其提供的内置的 handleLLMEnd() 函数来统计,我们可以在创建 ChatOpenAI 实例的时候注入回调函数:

const chat = new ChatOpenAI({
  modelName: 'gpt-4',
  openAIApiKey: 'YOUR_KEY',
}, {
  callbacks: [
    {
      handleLLMEnd(llmResult) {
        console.log(JSON.stringify(llmResult, null, 2))
      },
    }
  ]
})

回调参数 llmResultgenerate() 方法返回值是一样的,同样有包含 tokenUsage

另外也可以在调用的时候再注入回调函数,可以更精细地统计:

model
  .invoke(
    [
      new SystemMessage('Only return JSON'),
      new HumanMessage('Hi there!')
    ],
    {
      callbacks: [
        {
          handleLLMEnd(llmResult) {
            console.log(JSON.stringify(llmResult, null, 2))
          },
        },
      ],
    }
  )

好了,希望以上两种方式可以帮助大家统计大模型的开销,护好钱兜。

推荐一个集聊天、工作流和知识库的AI 平台 StarFlow.tech 🚀 。在这里,你可以免费使用 ChatGPT3.5 和 3.5 16K,还有 GPT-4 Vision、DELL·E3、Midjourney 等多种模型可供选择。这个平台就像一个小型工作室,助力个人效率 Max!。

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Uncaught SyntaxError: Unexpected token '<' (at echarts.min.js:1:1)错误通常是由于在引入echarts.min.js文件时现了问题。这个错误的提示意味着在echarts.min.js文件的第一行第一个字符处现了一个意外的"<"符号。 根据你提供的引用内容,可以看你尝试将echarts.min.js文件下载到本地并放置在你的项目中的static/js/echarts/目录下。然而,问题可能是由于文件下载或引入过程中的某些错误导致的。 解决这个问题的方法如下: 1. 确保你下载的echarts.min.js文件没有被损坏或被修改过。你可以重新下载该文件,并确保它与官方网站上的文件完全一致。 2. 检查你在HTML中引入echarts.min.js文件的方式。确保你使用正确的路径和文件名来引用该文件。在你的情况下,应该是类似于`<script src="/static/js/echarts/echarts.min.js"></script>`这样的代码。 3. 确保你的项目中没有其他与echarts.min.js文件冲突的文件。检查你的项目中是否存在其他同名的Javascript文件,可能会导致混淆和错误。 4. 确保你的HTML文件中没有其他语法错误。检查你的HTML文件,特别是与Javascript代码相关的部分,确保没有其他语法错误。 如果你尝试了以上方法仍然无法解决问题,你可以尝试以下额外的步骤: 1. 清除浏览器缓存并重新加载页面。有时候浏览器中存储的旧版本文件可能导致问题。 2. 尝试使用CDN链接引入echarts.min.js文件。你可以在官方网站上找到相关的CDN链接,并将其替换为你的HTML文件中的本地引用。 通过检查以上可能的问题,并采取相应的措施,你应该能够解决Uncaught SyntaxError: Unexpected token '<'错误,并成功引入echarts.min.js文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值