From f0636e64278be54fc1ed94befef5b7bc3b498f05 Mon Sep 17 00:00:00 2001 From: Ann Zhang Date: Fri, 27 Mar 2026 14:19:02 -0700 Subject: [PATCH 1/4] Fix JSON serialization of Document results in LangChain VectorSearchRetrieverTool MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Previously, _run() called json.dumps() on List[Document] objects, which are not JSON-serializable, causing a silent fallback to str(results) — a Python repr string rather than valid JSON. Now each Document is converted to {"page_content": ..., "metadata": ...} before serialization. Co-authored-by: Isaac --- .../vector_search_retriever_tool.py | 6 ++++-- .../unit_tests/test_vector_search_retriever_tool.py | 13 ++++++------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/integrations/langchain/src/databricks_langchain/vector_search_retriever_tool.py b/integrations/langchain/src/databricks_langchain/vector_search_retriever_tool.py index de05f9a68..448c872a4 100644 --- a/integrations/langchain/src/databricks_langchain/vector_search_retriever_tool.py +++ b/integrations/langchain/src/databricks_langchain/vector_search_retriever_tool.py @@ -108,8 +108,10 @@ def _run(self, query: str, filters: list[FilterItem] | None = None, **kwargs) -> } ) results = self._vector_store.similarity_search(**kwargs) - # Serialize results using same pattern as LangChain's _stringify() try: - return json.dumps(results, ensure_ascii=False) + return json.dumps( + [{"page_content": doc.page_content, "metadata": doc.metadata} for doc in results], + ensure_ascii=False, + ) except Exception: return str(results) diff --git a/integrations/langchain/tests/unit_tests/test_vector_search_retriever_tool.py b/integrations/langchain/tests/unit_tests/test_vector_search_retriever_tool.py index 7c79ad01e..15bb3a776 100644 --- a/integrations/langchain/tests/unit_tests/test_vector_search_retriever_tool.py +++ b/integrations/langchain/tests/unit_tests/test_vector_search_retriever_tool.py @@ -174,12 +174,13 @@ def test_vector_search_retriever_tool_combinations() -> None: ) assert isinstance(vector_search_tool, BaseTool) result = vector_search_tool.invoke("Databricks Agent Framework") - # _run now returns a string representation of documents assert isinstance(result, str) - # Check that metadata keys and page_content appear in the string - assert "doc_uri" in result - assert "chunk_id" in result - assert "page_content" in result + # Result should be valid JSON + parsed = json.loads(result) + assert isinstance(parsed, list) + assert all("page_content" in doc and "metadata" in doc for doc in parsed) + assert any("doc_uri" in doc["metadata"] for doc in parsed) + assert any("chunk_id" in doc["metadata"] for doc in parsed) def test_vector_search_retriever_tool_empty_results() -> None: @@ -219,9 +220,7 @@ def test_vs_tool_tracing(index_name: str, tool_name: str | None) -> None: assert len(spans) == 1 inputs = json.loads(trace.to_dict()["data"]["spans"][0]["attributes"]["mlflow.spanInputs"]) assert inputs["query"] == "Databricks Agent Framework" - # _run now returns a string representation of documents outputs = json.loads(trace.to_dict()["data"]["spans"][0]["attributes"]["mlflow.spanOutputs"]) - # Check that the expected text appears in the output string assert any(text in outputs for text in INPUT_TEXTS) From 7c31925ab14fd9e2537fcdb711df63cb7bb769b4 Mon Sep 17 00:00:00 2001 From: Ann Zhang Date: Tue, 31 Mar 2026 16:53:58 -0700 Subject: [PATCH 2/4] Trigger CI From f62b20eeca28c490817d5f7ed4b9e37565f2ac08 Mon Sep 17 00:00:00 2001 From: Ann Zhang Date: Tue, 31 Mar 2026 16:57:18 -0700 Subject: [PATCH 3/4] Bump langgraph test dep to >=1.1.0 to match langchain>=1.0.0 requirement Co-authored-by: Isaac --- integrations/langchain/pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/integrations/langchain/pyproject.toml b/integrations/langchain/pyproject.toml index 41ac6cadc..9460c2c63 100644 --- a/integrations/langchain/pyproject.toml +++ b/integrations/langchain/pyproject.toml @@ -38,7 +38,7 @@ dev = [ tests = [ "pytest>=9.0.0", - "langgraph>=0.2.27", + "langgraph>=1.1.0", "pytest-timeout>=2.3.1", "pytest-asyncio>=1.3.0", "anyio>=4.8.0", From 58f27e0b0f65c6a9b4ffd7b8eac3efcbce42afb8 Mon Sep 17 00:00:00 2001 From: Ann Zhang Date: Tue, 31 Mar 2026 17:33:54 -0700 Subject: [PATCH 4/4] Revert "Bump langgraph test dep to >=1.1.0 to match langchain>=1.0.0 requirement" This reverts commit f62b20eeca28c490817d5f7ed4b9e37565f2ac08. --- integrations/langchain/pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/integrations/langchain/pyproject.toml b/integrations/langchain/pyproject.toml index 9460c2c63..41ac6cadc 100644 --- a/integrations/langchain/pyproject.toml +++ b/integrations/langchain/pyproject.toml @@ -38,7 +38,7 @@ dev = [ tests = [ "pytest>=9.0.0", - "langgraph>=1.1.0", + "langgraph>=0.2.27", "pytest-timeout>=2.3.1", "pytest-asyncio>=1.3.0", "anyio>=4.8.0",