From ea4a267bcfb4e9fc2b05290f8cea0d88d5e5e08c Mon Sep 17 00:00:00 2001 From: MarkLo127 Date: Wed, 11 Mar 2026 18:59:17 +0800 Subject: [PATCH] --- tradingagents/graph/trading_graph.py | 32 ++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/tradingagents/graph/trading_graph.py b/tradingagents/graph/trading_graph.py index 0dd4b3fa..866c15de 100644 --- a/tradingagents/graph/trading_graph.py +++ b/tradingagents/graph/trading_graph.py @@ -93,16 +93,30 @@ class TradingAgentsXGraph: deep_api_key = self.config.get("deep_think_api_key", os.getenv("OPENAI_API_KEY")) quick_api_key = self.config.get("quick_think_api_key", os.getenv("OPENAI_API_KEY")) - # Helper to initialize LLM based on URL/Provider + # Helper to initialize LLM based on model name/provider def _create_llm(model: str, base_url: str, api_key: str): - # Use ChatOpenAI for all providers including Anthropic's OpenAI-compatible endpoint - # Anthropic's /v1 endpoint is OpenAI-compatible, so we use ChatOpenAI - return ChatOpenAI( - model=model, - base_url=base_url, - openai_api_key=api_key, - max_tokens= 16384 # Prevent report truncation - ) + # Anthropic models require ChatAnthropic (different auth header: x-api-key) + if model.startswith("claude-"): + return ChatAnthropic( + model=model, + anthropic_api_key=api_key, + max_tokens=16384, + ) + # Google Gemini models use ChatGoogleGenerativeAI + elif model.startswith("gemini-"): + return ChatGoogleGenerativeAI( + model=model, + google_api_key=api_key, + max_output_tokens=16384, + ) + # All other providers (OpenAI, Grok, DeepSeek, Qwen, custom) use OpenAI-compatible API + else: + return ChatOpenAI( + model=model, + base_url=base_url, + openai_api_key=api_key, + max_tokens=16384, + ) # Initialize LLMs independently print(f"DEBUG: Initializing Deep Thinking LLM: Model={self.config['deep_think_llm']}, BaseURL={deep_base_url}, Key=**********")