From 98330aa3021ff90257143dc8992e83ff6f30b72a Mon Sep 17 00:00:00 2001 From: Charlie Tonneslan Date: Sun, 22 Mar 2026 15:18:44 -0400 Subject: [PATCH] Skip reasoning_effort entirely since all agents use function tools Per issue #403 analysis: the real problem is that reasoning_effort with function tools requires the /v1/responses endpoint, but LangChain's ChatOpenAI only supports /v1/chat/completions. This affects all models (not just gpt-5.x vs o-series), so the safest fix is to skip reasoning_effort and log an info message explaining why. Once LangChain adds /v1/responses support, this can be re-enabled. --- tradingagents/graph/trading_graph.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/tradingagents/graph/trading_graph.py b/tradingagents/graph/trading_graph.py index bd0c578b..42a650fe 100644 --- a/tradingagents/graph/trading_graph.py +++ b/tradingagents/graph/trading_graph.py @@ -158,10 +158,20 @@ class TradingAgentsGraph: elif provider == "openai": reasoning_effort = self.config.get("openai_reasoning_effort") if reasoning_effort: - # reasoning_effort is only supported by o-series models - # (o1, o3, o3-mini, o4-mini, etc.), not by gpt-* models - if model_name.startswith("o"): - kwargs["reasoning_effort"] = reasoning_effort + # reasoning_effort + function tools is not supported on the + # /v1/chat/completions endpoint for some models (e.g. gpt-5.x). + # LangChain's ChatOpenAI only uses chat/completions, so we + # skip reasoning_effort for agents that use tools to avoid + # 400 errors. This is a known LangChain limitation. + # See: https://github.com/TauricResearch/TradingAgents/issues/403 + import logging + logging.getLogger(__name__).info( + "Skipping reasoning_effort='%s' for model '%s' because " + "TradingAgents agents use function tools, which are " + "incompatible with reasoning_effort on the chat/completions " + "endpoint. See issue #403.", + reasoning_effort, model_name, + ) return kwargs