From 903e5d0aeb9ccb466c729705b7308cf87317d4ad Mon Sep 17 00:00:00 2001 From: "swj.premkumar" Date: Sun, 11 Jan 2026 08:07:13 -0600 Subject: [PATCH] Adjusted default character truncation to safer levels for local embedding models. --- tradingagents/agents/utils/memory.py | 18 +++++++++++++++--- tradingagents/dataflows/google.py | 7 ++++--- tradingagents/dataflows/interface.py | 10 ++++++++-- 3 files changed, 27 insertions(+), 8 deletions(-) diff --git a/tradingagents/agents/utils/memory.py b/tradingagents/agents/utils/memory.py index 50ebb683..3e307c56 100644 --- a/tradingagents/agents/utils/memory.py +++ b/tradingagents/agents/utils/memory.py @@ -66,9 +66,21 @@ class FinancialSituationMemory: # print(f"WARNING: Truncating text for embedding. Length {len(text)} > {truncation_limit}") text = text[:truncation_limit] - response = self.client.embeddings.create( - model=self.embedding, input=text - ) + try: + response = self.client.embeddings.create( + model=self.embedding, input=text + ) + except Exception as e: + # Handle "Payload Too Large" (413) by aggressive truncation and retry + if "413" in str(e) or "too large" in str(e).lower(): + # print(f"⚠️ Embedding input too large ({len(text)} chars). Retrying with half length...") + text = text[:len(text)//2] + response = self.client.embeddings.create( + model=self.embedding, input=text + ) + else: + raise e + return response.data[0].embedding def add_situations(self, situations_and_advice): diff --git a/tradingagents/dataflows/google.py b/tradingagents/dataflows/google.py index 3fe20f3c..03991cca 100644 --- a/tradingagents/dataflows/google.py +++ b/tradingagents/dataflows/google.py @@ -20,9 +20,10 @@ def get_google_news( news_str = "" for news in news_results: - news_str += ( - f"### {news['title']} (source: {news['source']}) \n\n{news['snippet']}\n\n" - ) + title = str(news.get('title', '')) + source = str(news.get('source', '')) + snippet = str(news.get('snippet', '')) + news_str += f"### {title} (source: {source}) \n\n{snippet}\n\n" if len(news_results) == 0: return "" diff --git a/tradingagents/dataflows/interface.py b/tradingagents/dataflows/interface.py index 5cbf4f00..73e78868 100644 --- a/tradingagents/dataflows/interface.py +++ b/tradingagents/dataflows/interface.py @@ -103,13 +103,12 @@ VENDOR_METHODS = { # news_data "get_news": { "alpha_vantage": get_alpha_vantage_news, - "openai": get_stock_news_openai, "google": get_google_news, "local": [get_finnhub_news, get_reddit_company_news, get_google_news], }, "get_global_news": { "alpha_vantage": get_alpha_vantage_global_news, - "openai": get_global_news_openai, + "google": get_google_news, "local": get_reddit_global_news }, "get_insider_sentiment": { @@ -207,6 +206,13 @@ def route_to_vendor(method: str, *args, **kwargs): try: print(f"DEBUG: Calling {impl_func.__name__} from vendor '{vendor_name}'...") result = impl_func(*args, **kwargs) + + # Robustify: Check for empty results + if result is None or (isinstance(result, str) and not result.strip()): + print(f"WARNING: {impl_func.__name__} from vendor '{vendor_name}' returned empty/no data") + # Don't append to vendor_results, let it try other implementations or vendors + continue + vendor_results.append(result) print(f"SUCCESS: {impl_func.__name__} from vendor '{vendor_name}' completed successfully")