Langchain在調用 LLM 時統計 Token 消耗

關鍵點解析

  1. 使用上下文管理器
    with get_openai_callback() as cb:
    這一行是核心。cb 會自動收集本次調用的 prompt tokenscompletion tokens 以及 total tokens

  2. 自動統計
    在上下文退出時,cb 中已經包含了這次調用的消耗情況,無需額外手動計算。

  3. 累加到全局狀態
    通過:

    state["token_count"].prompt_tokens += cb.prompt_tokens
    

    就能把每次調用的消耗累加起來,便于后續統一展示。

  4. 附加信息管理
    示例中我還加了 metadata,比如生成的名字和時間戳,這樣就能把統計和業務邏輯自然結合起來。

from langchain_openai import ChatOpenAI
from langchain.callbacks import get_openai_callback# ========== 初始化模型 ==========
llm = ChatOpenAI(model="gpt-3.5-turbo",   # 你也可以換成 gpt-4o-mini 或其他模型temperature=0
)# 模擬全局狀態,記錄 Token 累計情況
state = {"token_count": {"prompt_tokens": 0,"completion_tokens": 0,"total_tokens": 0,}
}def call_llm(prompt: str):"""調用 LLM 并統計 token 消耗"""with get_openai_callback() as cb:response = llm.invoke(prompt)# 打印本次調用消耗print(f"本次調用消耗: prompt={cb.prompt_tokens}, "f"completion={cb.completion_tokens}, total={cb.total_tokens}")# 累加到全局 statestate["token_count"]["prompt_tokens"] += cb.prompt_tokensstate["token_count"]["completion_tokens"] += cb.completion_tokensstate["token_count"]["total_tokens"] += cb.total_tokensreturn response.content# ========== 示例運行 ==========
if __name__ == "__main__":result1 = call_llm("請寫一首五言絕句,主題是春天。")print("模型回復:", result1, "\n")result2 = call_llm("請用一句話總結一下這首詩。")print("模型回復:", result2, "\n")print("累計 Token 使用情況:", state["token_count"])

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/921211.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/921211.shtml
英文地址,請注明出處:http://en.pswp.cn/news/921211.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

漫談《數字圖像處理》之實時美顏技術

隨著移動拍攝、直播、短視頻等場景的普及,用戶對 “自然、流暢、可控” 的美顏效果需求日益提升 —— 既要消除皮膚瑕疵、優化面部形態,又需避免 “過度磨皮顯假”“變形失真”“實時卡頓” 等問題。實時美顏技術的核心并非單一算法的堆砌,而…

MATLAB基于PSO(粒子群算法)優化BP神經網絡和NSGA-II(非支配排序遺傳算法)多目標優化

代碼實現了一個智能算法優化BP神經網絡并進行多目標優化的完整流程,結合了PSO(粒子群算法)優化BP神經網絡和NSGA-II(非支配排序遺傳算法)多目標優化,用于多輸入多輸出的回歸預測問題。 ? 一、主要功能 數…

白平衡分塊統計數據為什么需要向下采樣?

在白平衡處理中,分塊統計數據時引入**向下采樣(Downsampling)**,核心目標是在保證統計有效性的前提下,解決“計算效率”與“統計魯棒性”的矛盾,同時避免局部噪聲對白平衡判斷的干擾。要理解這一設計的必要…

Deathnote: 1靶場滲透

Deathnote: 1 來自 <Deathnote: 1 ~ VulnHub> 1&#xff0c;將兩臺虛擬機網絡連接都改為NAT模式 2&#xff0c;攻擊機上做namp局域網掃描發現靶機 nmap -sn 192.168.23.0/24 那么攻擊機IP為192.168.23.128&#xff0c;靶場IP192.168.23.129 3&#xff0c;對靶機進行端口…

windows系統服務器測試部署springboot+vue+mysql項目

1. 后端Java應用啟動 直接使用命令行啟動&#xff08;推薦用于測試&#xff09;&#xff1a; cd C:\Users\Administrator\Desktop\toolset\backed java -jar -Dspring.profiles.activeprod -Dserver.port8083 admin.jar2. 前端靜態文件服務 由于你已經有了dist目錄&#xff0c;…

Java 與 Docker 的最佳實踐

在云原生時代&#xff0c;Docker 已成為應用交付和運行的事實標準。Java 作為企業級開發的主力語言&#xff0c;也需要與容器技術深度結合。然而&#xff0c;Java 程序天然有 JVM 內存管理、啟動速度、鏡像體積 等特點&#xff0c;如果不做優化&#xff0c;可能導致性能下降甚至…

大數據工程師認證推薦項目:基于Spark+Django的學生創業分析可視化系統技術價值解析

&#x1f496;&#x1f496;作者&#xff1a;計算機編程小央姐 &#x1f499;&#x1f499;個人簡介&#xff1a;曾長期從事計算機專業培訓教學&#xff0c;本人也熱愛上課教學&#xff0c;語言擅長Java、微信小程序、Python、Golang、安卓Android等&#xff0c;開發項目包括大…

【MySQL自學】SQL主鍵使用誤區:你必須知道的關鍵細節

在日常數據庫操作中&#xff0c;主鍵&#xff08;Primary Key&#xff09;是我們最常打交道的概念之一。然而&#xff0c;許多開發者&#xff0c;尤其是初學者&#xff0c;常常對其存在一些誤解。一個非常經典的問題是&#xff1a;“在SQL中&#xff0c;只要用到主鍵&#xff0…

Electron 執行python腳本

1 需求背景 有個需求需要Electron執行在本地執行python腳本。希望通過Electron調用python服務并且實現雙向通信。 2 解決思路 使用Electon 的{ exec, spawn, execFile, fork } from "child_process"; 能力來執行python腳本&#xff0c;使用spawn可以實現持續交互&…

Leetcode高頻 SQL 50 題(基礎版)題目記錄

Leetcode sql題目記錄 文章目錄Leetcode sql題目記錄570. 至少有5名直接下屬的經理1934. 確認率1193. 每月交易I1174. 即時食物配送II176. 第二高的薪水&#xff08;1&#xff09; 子查詢為空但外層用了聚合函數&#xff08;2&#xff09;子查詢為空而外層沒有聚合函數550. 游戲…

RAGFlow切分方法詳解

RAGFlow 各切分方法的含義如下,結合文檔結構、場景特點等設計,以適配不同類型的知識源: 1. General(通用分塊) 邏輯:結合文本排版、格式、語義關聯等因素確定分割點,再根據“建議文本塊大小(Token 數)”,將文本切分為合適的塊。 支持格式:DOCX、EXCEL、PPT、IMAGE、…

支付域——支付與交易概念

摘要本文詳細闡述了支付域中支付與交易的核心概念及其相互關系。交易是商品或服務交換的過程&#xff0c;包含多個要素并產生訂單或合同。支付則是資金流轉的過程&#xff0c;是交易的資金結算環節。支付交易結合了兩者&#xff0c;根據不同場景提供多樣化的支付產品和服務。文…

(自用)cmd常用命令自查文檔

&#xff08;自用&#xff09;cmd常用命令自查文檔 Windows CMD 常用命令自查1. 文件與目錄操作命令說明示例?cd?顯示或切換目錄?cd?&#xff1b;cd C:\Windows??dir?列出目錄內容?dir?&#xff1b;dir /a?(含隱藏文件)?md?或mkdir?創建目錄?md test?&#xff1…

劇本殺APP系統開發:引領娛樂行業新潮流的科技力量

在當今數字化時代&#xff0c;科技的力量正深刻地改變著人們的生活方式和娛樂習慣。娛樂行業也不例外&#xff0c;各種新興的娛樂形式和平臺如雨后春筍般涌現。劇本殺APP系統開發作為科技與娛樂融合的產物&#xff0c;正以其獨特的魅力和創新的模式&#xff0c;引領著娛樂行業的…

LangChain框架深度解析:定位、架構、設計邏輯與優化方向

LangChain框架深度解析&#xff1a;定位、架構、設計邏輯與優化方向 引言 在大語言模型&#xff08;LLM&#xff09;應用開發的浪潮中&#xff0c;LangChain作為最具影響力的開發框架之一&#xff0c;為開發者提供了構建復雜AI應用的完整工具鏈。本文將從框架定位、實現邏輯、設…

面試常備與開發必知:一文掌握MySQL字符串拼接的所有核心技巧

? 在 MySQL 中拼接字符串是一個非常常見的操作&#xff0c;主要用于查詢時動態組合多個字段或值。以下是幾種最核心和常用的方法。一、核心拼接函數1. CONCAT(str1, str2, ...)這是最通用、最常用的字符串拼接函數。它接受兩個或多個字符串參數&#xff0c;并將它們按順…

數據可視化大屏精選開源項目

為您精心挑選和整理了一系列在 GitHub 上廣受好評的數據可視化大屏開源項目。這些項目覆蓋了不同的技術棧&#xff08;Vue、React、ECharts、D3.js等&#xff09;&#xff0c;適合從初學者到資深開發者不同層次的需求。 我將它們分為以下幾類&#xff0c;方便您選擇&#xff1…

LeetCode 3516.找到最近的人:計算絕對值大小

【LetMeFly】3516.找到最近的人&#xff1a;計算絕對值大小 力扣題目鏈接&#xff1a;https://leetcode.cn/problems/find-closest-person/ 給你三個整數 x、y 和 z&#xff0c;表示數軸上三個人的位置&#xff1a; x 是第 1 個人的位置。y 是第 2 個人的位置。z 是第 3 個人…

【面試】MySQL 面試常見優化問題

1. 為什么要建索引&#xff1f;索引一定能提高性能嗎&#xff1f;場景&#xff1a;一個表有上千萬數據&#xff0c;查詢 SELECT * FROM user WHERE age25;。問題&#xff1a;沒有索引時會全表掃描&#xff0c;性能差。解決方案&#xff1a;給 age 建立普通索引&#xff0c;加快…

Access開發導出PDF的N種姿勢,你get了嗎?

目錄 基礎篇&#xff1a;一行代碼搞定 實戰篇&#xff1a;讓導出更智能 進階篇&#xff1a;用戶體驗升級 總結 hi&#xff0c;大家好呀&#xff01; 今天我們來聊聊一個非常實用的功能——如何用VBA將Access中的數據導出為PDF。 相信很多朋友在日常工作中都遇到過這樣的需…