diff --git a/libs/community/langchain_community/tools/yahoo_finance_news.py b/libs/community/langchain_community/tools/yahoo_finance_news.py index 7a4f7d7f7660a..e8b8f648e0914 100644 --- a/libs/community/langchain_community/tools/yahoo_finance_news.py +++ b/libs/community/langchain_community/tools/yahoo_finance_news.py @@ -36,7 +36,16 @@ def _run( query: str, run_manager: Optional[CallbackManagerForToolRun] = None, ) -> str: - """Use the Yahoo Finance News tool.""" + """ + Use the Yahoo Finance News tool. + + Args: + query: Company ticker symbol (e.g., 'AAPL' for Apple). + run_manager: Optional callback manager. + + Returns: + str: Formatted news results or error message. + """ try: import yfinance except ImportError: @@ -53,7 +62,11 @@ def _run( links = [] try: - links = [n["link"] for n in company.news if n["type"] == "STORY"] + links = [ + n["content"]["canonicalUrl"]["url"] + for n in company.news + if n["content"]["contentType"] == "STORY" + ] except (HTTPError, ReadTimeout, ConnectionError): if not links: return f"No news found for company that searched with {query} ticker." @@ -69,8 +82,9 @@ def _run( @staticmethod def _format_results(docs: Iterable[Document], query: str) -> str: doc_strings = [ - "\n".join([doc.metadata["title"], doc.metadata["description"]]) + "\n".join([doc.metadata["title"], doc.metadata.get("description", "")]) for doc in docs - if query in doc.metadata["description"] or query in doc.metadata["title"] + if query in doc.metadata.get("description", "") + or query in doc.metadata["title"] ] return "\n\n".join(doc_strings) diff --git a/libs/community/tests/integration_tests/tools/test_yahoo_finance_news.py b/libs/community/tests/integration_tests/tools/test_yahoo_finance_news.py index 608f1c355fbfd..164b7ce889bc8 100644 --- a/libs/community/tests/integration_tests/tools/test_yahoo_finance_news.py +++ b/libs/community/tests/integration_tests/tools/test_yahoo_finance_news.py @@ -9,7 +9,7 @@ def test_success() -> None: """Test that the tool runs successfully.""" tool = YahooFinanceNewsTool() - query = "Microsoft" + query = "AAPL" result = tool.run(query) assert result is not None assert f"Company ticker {query} not found." not in result