TradingAgents/main.py

140 lines
4.7 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# TradingAgents 国内AI大模型版本
# 使用国内免费大模型进行股票分析
import os
import sys
# 尝试导入dotenv
from dotenv import load_dotenv
load_dotenv() # 加载.env文件中的环境变量
from tradingagents.graph.trading_graph import TradingAgentsGraph
from tradingagents.default_config import DEFAULT_CONFIG
def check_environment():
"""检查环境变量和依赖"""
print("🔍 检查环境配置...")
# 检查是否有API密钥
api_keys = {
"通义千问": os.getenv("DASHSCOPE_API_KEY"),
"文心一言": os.getenv("BAIDU_API_KEY") and os.getenv("BAIDU_SECRET_KEY"),
"智谱AI": os.getenv("ZHIPU_API_KEY"),
"月之暗面Kimi": os.getenv("MOONSHOT_API_KEY")
}
available_models = [name for name, has_key in api_keys.items() if has_key]
if not available_models:
print("❌ 错误未找到任何AI模型的API密钥")
print("\n请设置以下环境变量之一:")
print(" 通义千问: export DASHSCOPE_API_KEY='your_key'")
print(" 文心一言: export BAIDU_API_KEY='your_key' && export BAIDU_SECRET_KEY='your_secret'")
print(" 智谱AI: export ZHIPU_API_KEY='your_key'")
print(" 月之暗面Kimi: export MOONSHOT_API_KEY='your_key'")
return False
print(f"✅ 找到可用的AI模型: {', '.join(available_models)}")
return True
def create_config():
"""创建优化的配置"""
config = DEFAULT_CONFIG.copy()
# 根据可用的API密钥选择模型
if os.getenv("DASHSCOPE_API_KEY"):
# 使用通义千问(推荐)
config["llm_provider"] = "qwen"
config["deep_think_llm"] = "qwen-plus"
config["quick_think_llm"] = "qwen-turbo"
config["backend_url"] = "https://dashscope.aliyuncs.com/compatible-mode/v1"
print("🤖 使用通义千问模型")
elif os.getenv("BAIDU_API_KEY") and os.getenv("BAIDU_SECRET_KEY"):
# 使用文心一言
config["llm_provider"] = "ernie"
config["deep_think_llm"] = "ernie-4.0-8k"
config["quick_think_llm"] = "ernie-3.5-8k"
config["backend_url"] = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat"
print("🤖 使用文心一言模型")
elif os.getenv("ZHIPU_API_KEY"):
# 使用智谱AI
config["llm_provider"] = "glm"
config["deep_think_llm"] = "glm-4"
config["quick_think_llm"] = "glm-4"
config["backend_url"] = "https://open.bigmodel.cn/api/paas/v4"
print("🤖 使用智谱AI模型")
elif os.getenv("MOONSHOT_API_KEY"):
# 使用月之暗面Kimi
config["llm_provider"] = "kimi"
config["deep_think_llm"] = "moonshot-v1-32k"
config["quick_think_llm"] = "moonshot-v1-8k"
config["backend_url"] = "https://api.moonshot.cn/v1"
print("🤖 使用月之暗面Kimi模型")
# 优化配置参数
config["max_debate_rounds"] = 1 # 减少API调用次数
config["online_tools"] = False # 使用离线数据减少API调用
config["max_recur_limit"] = 50 # 限制递归次数
return config
def main():
"""主函数"""
print("🚀 TradingAgents 国内AI大模型版本")
print("=" * 50)
# 检查环境
if not check_environment():
sys.exit(1)
# 创建配置
config = create_config()
try:
# 初始化交易代理图
print("\n🔧 初始化交易代理系统...")
ta = TradingAgentsGraph(debug=True, config=config)
print("✅ 系统初始化完成")
# 运行交易分析
print("\n📊 开始股票分析...")
print("分析目标: NVDA (英伟达)")
print("分析日期: 2024-05-10")
print("-" * 30)
# 执行分析
_, decision = ta.propagate("NVDA", "2024-05-10")
# 输出结果
print("\n" + "=" * 50)
print("📈 分析结果:")
print("=" * 50)
print(decision)
print("=" * 50)
print("\n✅ 分析完成!")
except Exception as e:
print(f"\n❌ 分析过程中出现错误: {str(e)}")
print(f"错误类型: {type(e).__name__}")
# 打印详细的错误信息
import traceback
print("\n🔍 详细错误信息:")
traceback.print_exc()
print("\n💡 可能的解决方案:")
print("1. 检查API密钥是否正确")
print("2. 检查网络连接")
print("3. 检查API额度是否用完")
print("4. 检查依赖包是否完整安装")
print("5. 查看详细错误信息进行排查")
sys.exit(1)
if __name__ == "__main__":
main()