本指南介绍如何配置和使用TradingAgents-CN的Token使用统计和成本跟踪功能,包括v0.1.7新增的DeepSeek成本追踪和智能成本控制。
TradingAgents提供了完整的Token使用统计和成本跟踪功能,包括:
目前支持以下LLM供应商的Token统计:
在项目根目录创建或编辑 .env
文件:
# 启用成本跟踪(默认启用)
ENABLE_COST_TRACKING=true
# 成本警告阈值(人民币)
COST_ALERT_THRESHOLD=100.0
# DashScope API密钥
DASHSCOPE_API_KEY=your_dashscope_api_key_here
默认情况下,Token使用记录保存在 config/usage.json
文件中。
# 最大记录数量(默认10000)
MAX_USAGE_RECORDS=10000
# 自动保存使用记录(默认启用)
AUTO_SAVE_USAGE=true
对于大量数据和高性能需求,推荐使用MongoDB存储:
# 启用MongoDB存储
USE_MONGODB_STORAGE=true
# MongoDB连接字符串
# 本地MongoDB
MONGODB_CONNECTION_STRING=mongodb://localhost:27017/
# 或云MongoDB(如MongoDB Atlas)
# MONGODB_CONNECTION_STRING=mongodb+srv://username:password@cluster.mongodb.net/
# 数据库名称
MONGODB_DATABASE_NAME=tradingagents
pip install pymongo
当使用DashScope适配器时,Token统计会自动进行:
from tradingagents.llm_adapters.dashscope_adapter import ChatDashScope
from langchain_core.messages import HumanMessage
# 初始化LLM
llm = ChatDashScope(
model="qwen-turbo",
temperature=0.7
)
# 发送消息(自动记录token使用)
response = llm.invoke([
HumanMessage(content="分析一下苹果公司的股票")
], session_id="my_session", analysis_type="stock_analysis")
from tradingagents.config.config_manager import config_manager
# 获取最近30天的统计
stats = config_manager.get_usage_statistics(30)
print(f"总成本: ¥{stats['total_cost']:.4f}")
print(f"总请求数: {stats['total_requests']}")
print(f"输入tokens: {stats['total_input_tokens']}")
print(f"输出tokens: {stats['total_output_tokens']}")
# 按供应商查看统计
for provider, provider_stats in stats['provider_stats'].items():
print(f"{provider}: ¥{provider_stats['cost']:.4f}")
from tradingagents.config.config_manager import token_tracker
# 查看特定会话的成本
session_cost = token_tracker.get_session_cost("my_session")
print(f"会话成本: ¥{session_cost:.4f}")
# 估算成本(用于预算规划)
estimated_cost = token_tracker.estimate_cost(
provider="dashscope",
model_name="qwen-turbo",
estimated_input_tokens=1000,
estimated_output_tokens=500
)
print(f"估算成本: ¥{estimated_cost:.4f}")
系统内置了主要LLM供应商的定价信息,也可以自定义定价:
from tradingagents.config.config_manager import config_manager, PricingConfig
# 添加自定义定价
custom_pricing = PricingConfig(
provider="dashscope",
model_name="qwen-max",
input_price_per_1k=0.02, # 每1000个输入token的价格(人民币)
output_price_per_1k=0.06, # 每1000个输出token的价格(人民币)
currency="CNY"
)
pricing_list = config_manager.load_pricing()
pricing_list.append(custom_pricing)
config_manager.save_pricing(pricing_list)
模型 | 输入价格 (¥/1K tokens) | 输出价格 (¥/1K tokens) |
---|---|---|
qwen-turbo | 0.002 | 0.006 |
qwen-plus-latest | 0.004 | 0.012 |
qwen-max | 0.02 | 0.06 |
模型 | 输入价格 ($/1K tokens) | 输出价格 ($/1K tokens) |
---|---|---|
gpt-3.5-turbo | 0.0015 | 0.002 |
gpt-4 | 0.03 | 0.06 |
gpt-4-turbo | 0.01 | 0.03 |
运行测试脚本验证功能:
# 测试DashScope token统计
python tests/test_dashscope_token_tracking.py
使用MongoDB存储相比JSON文件存储有以下优势:
系统会自动创建以下索引以提高查询性能:
(timestamp, provider, model_name)
session_id
, analysis_type
ENABLE_COST_TRACKING=true