From 530dbb9c9bec963d1cffd4348c06857f8044738f Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 18 Dec 2025 21:11:05 +0000 Subject: [PATCH 01/14] chore(deps): update all non-major dependencies --- pyproject.toml | 4 ++-- requirements.txt | 2 +- samples/requirements.txt | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index b72d6d16..c965a83f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -45,14 +45,14 @@ langgraph = [ test = [ "black[jupyter]==25.12.0", "isort==7.0.0", - "langgraph==1.0.4", + "langgraph==1.0.5", "mypy==1.19.1", "pytest-asyncio==0.26.0", "pytest==8.4.2", "pytest-cov==7.0.0", "pytest-depends==1.0.1", "Pillow==12.0.0", - "langchain-tests==1.1.0" + "langchain-tests==1.1.1" ] diff --git a/requirements.txt b/requirements.txt index 7e7f921c..21530f18 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,5 +2,5 @@ google-cloud-alloydb-connector[asyncpg]==1.11.0 google-cloud-storage==3.7.0 numpy==2.3.5; python_version >= "3.11" numpy==2.2.6; python_version == "3.10" -langgraph==1.0.4 +langgraph==1.0.5 langchain-postgres==0.0.16 diff --git a/samples/requirements.txt b/samples/requirements.txt index 55ca38fb..0a09ed24 100644 --- a/samples/requirements.txt +++ b/samples/requirements.txt @@ -1,5 +1,5 @@ -google-cloud-aiplatform[reasoningengine,langchain]==1.97.0 +google-cloud-aiplatform[reasoningengine,langchain]==1.132.0 google-cloud-resource-manager==1.15.0 -langchain-community==0.3.31 +langchain-community==0.4.1 langchain-google-alloydb-pg==0.13.0 langchain-google-vertexai==2.1.2 From 26b081e22da0ecf65014a5cd58d3670d6a6be3c1 Mon Sep 17 00:00:00 2001 From: Averi Kitsch Date: Thu, 18 Dec 2025 15:23:08 -0800 Subject: [PATCH 02/14] Update requirements.txt --- samples/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/requirements.txt b/samples/requirements.txt index 0a09ed24..9ceb6f61 100644 --- a/samples/requirements.txt +++ b/samples/requirements.txt @@ -1,5 +1,5 @@ google-cloud-aiplatform[reasoningengine,langchain]==1.132.0 google-cloud-resource-manager==1.15.0 -langchain-community==0.4.1 +langchain-community==0.3.31 langchain-google-alloydb-pg==0.13.0 langchain-google-vertexai==2.1.2 From 7b1b20d8c8c419bf7f11f6e6c5d181922cf10dc2 Mon Sep 17 00:00:00 2001 From: Averi Kitsch Date: Fri, 19 Dec 2025 09:19:20 -0800 Subject: [PATCH 03/14] update reasoning engine --- .../prebuilt_langchain_agent_template.py | 25 ++++++++++++++++--- .../retriever_agent_with_history_template.py | 9 ++++--- .../retriever_chain_template.py | 8 +++--- 3 files changed, 33 insertions(+), 9 deletions(-) diff --git a/samples/langchain_on_vertexai/prebuilt_langchain_agent_template.py b/samples/langchain_on_vertexai/prebuilt_langchain_agent_template.py index f4a14675..1ad4399d 100644 --- a/samples/langchain_on_vertexai/prebuilt_langchain_agent_template.py +++ b/samples/langchain_on_vertexai/prebuilt_langchain_agent_template.py @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. import os +from typing import Any, Mapping import vertexai # type: ignore from config import ( @@ -73,9 +74,27 @@ def similarity_search(query: str) -> list[Document]: return retriever.invoke(query) +class LangchainAgent(reasoning_engines.Queryable): + def __init__(self, model: str, model_kwargs: dict, tools: list): + self.model = model + self.model_kwargs = model_kwargs + self.tools = tools + + def set_up(self): + self.agent = reasoning_engines.LangchainAgent( + model=self.model, + tools=self.tools, + model_kwargs=self.model_kwargs, + ) + self.agent.set_up() + + def query(self, **kwargs: Any) -> dict[str, Any]: + return self.agent.query(**kwargs) + + # Uncomment to test locally -# app = reasoning_engines.LangchainAgent( +# app = LangchainAgent( # model="gemini-2.0-flash-001", # tools=[similarity_search], # model_kwargs={ @@ -92,7 +111,7 @@ def similarity_search(query: str) -> list[Document]: DISPLAY_NAME = os.getenv("DISPLAY_NAME") or "PrebuiltAgent" remote_app = reasoning_engines.ReasoningEngine.create( - reasoning_engines.LangchainAgent( + LangchainAgent( model="gemini-2.0-flash-001", tools=[similarity_search], # type: ignore[list-item] model_kwargs={ @@ -103,6 +122,6 @@ def similarity_search(query: str) -> list[Document]: display_name="PrebuiltAgent", sys_version="3.11", extra_packages=["config.py"], -) # type: ignore[arg-type] +) print(remote_app.query(input="movies about engineers")) # type: ignore[attr-defined] diff --git a/samples/langchain_on_vertexai/retriever_agent_with_history_template.py b/samples/langchain_on_vertexai/retriever_agent_with_history_template.py index e2eea8d6..83fa2ebc 100644 --- a/samples/langchain_on_vertexai/retriever_agent_with_history_template.py +++ b/samples/langchain_on_vertexai/retriever_agent_with_history_template.py @@ -135,16 +135,19 @@ def set_up(self): history_messages_key="chat_history", ) - def query(self, input: str, session_id: str, **kwargs: Any) -> str: + def query(self, **kwargs: Any) -> str: """Query the application. Args: - input: The user query. - session_id: The user's session id. + **kwargs: Keyword arguments. Expects "input" and "session_id". Returns: The LLM response dictionary. """ + input = kwargs.get("input") + session_id = kwargs.get("session_id") + if not input or not session_id: + return "Please provide an input and a session_id." response = self.agent.invoke( {"input": input}, config={"configurable": {"session_id": session_id}}, diff --git a/samples/langchain_on_vertexai/retriever_chain_template.py b/samples/langchain_on_vertexai/retriever_chain_template.py index 905c41dd..a182a6e6 100644 --- a/samples/langchain_on_vertexai/retriever_chain_template.py +++ b/samples/langchain_on_vertexai/retriever_chain_template.py @@ -109,17 +109,19 @@ def set_up(self): # an LLM to generate a response self.chain = create_retrieval_chain(retriever, combine_docs_chain) - def query(self, input: str, **kwargs: Any) -> str: + def query(self, **kwargs: Any) -> str: """Query the application. Args: - input: The user query. - **kwargs: Additional arguments for Protocol compliance. + **kwargs: Keyword arguments. Expects a key "input" with the user query. Returns: The LLM response dictionary. """ # Define the runtime logic that serves user queries + input = kwargs.get("input") + if not input: + return "Please provide an input." response = self.chain.invoke({"input": input}) return response["answer"] From 452a3d7ac6905b545eccf36db17a81de3425e9b9 Mon Sep 17 00:00:00 2001 From: Averi Kitsch Date: Fri, 19 Dec 2025 10:49:02 -0800 Subject: [PATCH 04/14] Update prebuilt_langchain_agent_template.py --- .../prebuilt_langchain_agent_template.py | 25 +++---------------- 1 file changed, 3 insertions(+), 22 deletions(-) diff --git a/samples/langchain_on_vertexai/prebuilt_langchain_agent_template.py b/samples/langchain_on_vertexai/prebuilt_langchain_agent_template.py index 1ad4399d..f4a14675 100644 --- a/samples/langchain_on_vertexai/prebuilt_langchain_agent_template.py +++ b/samples/langchain_on_vertexai/prebuilt_langchain_agent_template.py @@ -12,7 +12,6 @@ # See the License for the specific language governing permissions and # limitations under the License. import os -from typing import Any, Mapping import vertexai # type: ignore from config import ( @@ -74,27 +73,9 @@ def similarity_search(query: str) -> list[Document]: return retriever.invoke(query) -class LangchainAgent(reasoning_engines.Queryable): - def __init__(self, model: str, model_kwargs: dict, tools: list): - self.model = model - self.model_kwargs = model_kwargs - self.tools = tools - - def set_up(self): - self.agent = reasoning_engines.LangchainAgent( - model=self.model, - tools=self.tools, - model_kwargs=self.model_kwargs, - ) - self.agent.set_up() - - def query(self, **kwargs: Any) -> dict[str, Any]: - return self.agent.query(**kwargs) - - # Uncomment to test locally -# app = LangchainAgent( +# app = reasoning_engines.LangchainAgent( # model="gemini-2.0-flash-001", # tools=[similarity_search], # model_kwargs={ @@ -111,7 +92,7 @@ def query(self, **kwargs: Any) -> dict[str, Any]: DISPLAY_NAME = os.getenv("DISPLAY_NAME") or "PrebuiltAgent" remote_app = reasoning_engines.ReasoningEngine.create( - LangchainAgent( + reasoning_engines.LangchainAgent( model="gemini-2.0-flash-001", tools=[similarity_search], # type: ignore[list-item] model_kwargs={ @@ -122,6 +103,6 @@ def query(self, **kwargs: Any) -> dict[str, Any]: display_name="PrebuiltAgent", sys_version="3.11", extra_packages=["config.py"], -) +) # type: ignore[arg-type] print(remote_app.query(input="movies about engineers")) # type: ignore[attr-defined] From d1a30ef53e4a3c217e4afc995068bc17c8c057c6 Mon Sep 17 00:00:00 2001 From: Averi Kitsch Date: Fri, 19 Dec 2025 11:20:25 -0800 Subject: [PATCH 05/14] update --- .../prebuilt_langchain_agent_template.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/samples/langchain_on_vertexai/prebuilt_langchain_agent_template.py b/samples/langchain_on_vertexai/prebuilt_langchain_agent_template.py index f4a14675..386d9d18 100644 --- a/samples/langchain_on_vertexai/prebuilt_langchain_agent_template.py +++ b/samples/langchain_on_vertexai/prebuilt_langchain_agent_template.py @@ -27,7 +27,6 @@ ) from langchain_core.documents import Document from langchain_google_vertexai import VertexAIEmbeddings -from vertexai.preview import reasoning_engines # type: ignore from langchain_google_alloydb_pg import AlloyDBEngine, AlloyDBVectorStore @@ -75,7 +74,7 @@ def similarity_search(query: str) -> list[Document]: # Uncomment to test locally -# app = reasoning_engines.LangchainAgent( +# app = client.agent_engines.LangchainAgent( # model="gemini-2.0-flash-001", # tools=[similarity_search], # model_kwargs={ @@ -86,13 +85,13 @@ def similarity_search(query: str) -> list[Document]: # print(app.query(input="movies about engineers")) # Initialize VertexAI -vertexai.init(project=PROJECT_ID, location="us-central1", staging_bucket=STAGING_BUCKET) +client = vertexai.Client(project=PROJECT_ID, location="us-central1", staging_bucket=STAGING_BUCKET) # Deploy to VertexAI DISPLAY_NAME = os.getenv("DISPLAY_NAME") or "PrebuiltAgent" -remote_app = reasoning_engines.ReasoningEngine.create( - reasoning_engines.LangchainAgent( +remote_app = client.agent_engines.create( + client.agent_engines.LangchainAgent( model="gemini-2.0-flash-001", tools=[similarity_search], # type: ignore[list-item] model_kwargs={ From 1ce8f48c4c5a9ff650c48909f0e54c93b9235529 Mon Sep 17 00:00:00 2001 From: Averi Kitsch Date: Fri, 19 Dec 2025 11:27:39 -0800 Subject: [PATCH 06/14] Update prebuilt_langchain_agent_template.py --- .../langchain_on_vertexai/prebuilt_langchain_agent_template.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/samples/langchain_on_vertexai/prebuilt_langchain_agent_template.py b/samples/langchain_on_vertexai/prebuilt_langchain_agent_template.py index 386d9d18..4e4813f7 100644 --- a/samples/langchain_on_vertexai/prebuilt_langchain_agent_template.py +++ b/samples/langchain_on_vertexai/prebuilt_langchain_agent_template.py @@ -21,7 +21,6 @@ PASSWORD, PROJECT_ID, REGION, - STAGING_BUCKET, TABLE_NAME, USER, ) @@ -85,7 +84,7 @@ def similarity_search(query: str) -> list[Document]: # print(app.query(input="movies about engineers")) # Initialize VertexAI -client = vertexai.Client(project=PROJECT_ID, location="us-central1", staging_bucket=STAGING_BUCKET) +client = vertexai.Client(project=PROJECT_ID, location="us-central1") # Deploy to VertexAI DISPLAY_NAME = os.getenv("DISPLAY_NAME") or "PrebuiltAgent" From 0ec4b1b00ace03cb81dd144f5f126fb5bb56ab68 Mon Sep 17 00:00:00 2001 From: Averi Kitsch Date: Fri, 19 Dec 2025 11:31:08 -0800 Subject: [PATCH 07/14] Update prebuilt_langchain_agent_template.py --- .../prebuilt_langchain_agent_template.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/samples/langchain_on_vertexai/prebuilt_langchain_agent_template.py b/samples/langchain_on_vertexai/prebuilt_langchain_agent_template.py index 4e4813f7..43cf8d32 100644 --- a/samples/langchain_on_vertexai/prebuilt_langchain_agent_template.py +++ b/samples/langchain_on_vertexai/prebuilt_langchain_agent_template.py @@ -28,6 +28,7 @@ from langchain_google_vertexai import VertexAIEmbeddings from langchain_google_alloydb_pg import AlloyDBEngine, AlloyDBVectorStore +from vertexai import agent_engines # This sample requires a vector store table # Create these tables using `AlloyDBEngine` method `init_vectorstore_table()` @@ -73,7 +74,7 @@ def similarity_search(query: str) -> list[Document]: # Uncomment to test locally -# app = client.agent_engines.LangchainAgent( +# app = agent_engines.LangchainAgent( # model="gemini-2.0-flash-001", # tools=[similarity_search], # model_kwargs={ @@ -90,7 +91,7 @@ def similarity_search(query: str) -> list[Document]: DISPLAY_NAME = os.getenv("DISPLAY_NAME") or "PrebuiltAgent" remote_app = client.agent_engines.create( - client.agent_engines.LangchainAgent( + agent_engines.LangchainAgent( model="gemini-2.0-flash-001", tools=[similarity_search], # type: ignore[list-item] model_kwargs={ From cfaad0ce297d7388ef30da0bedd35943446a53df Mon Sep 17 00:00:00 2001 From: Averi Kitsch Date: Fri, 19 Dec 2025 11:49:13 -0800 Subject: [PATCH 08/14] Update prebuilt_langchain_agent_template.py --- .../prebuilt_langchain_agent_template.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/samples/langchain_on_vertexai/prebuilt_langchain_agent_template.py b/samples/langchain_on_vertexai/prebuilt_langchain_agent_template.py index 43cf8d32..4005bba1 100644 --- a/samples/langchain_on_vertexai/prebuilt_langchain_agent_template.py +++ b/samples/langchain_on_vertexai/prebuilt_langchain_agent_template.py @@ -98,10 +98,12 @@ def similarity_search(query: str) -> list[Document]: "temperature": 0.1, }, ), - requirements="requirements.txt", + config={ + requirements="requirements.txt", + extra_packages=["config.py"], + }, display_name="PrebuiltAgent", - sys_version="3.11", - extra_packages=["config.py"], + sys_version="3.11" ) # type: ignore[arg-type] print(remote_app.query(input="movies about engineers")) # type: ignore[attr-defined] From 955535f9a8283e976f06d363552b5d7b30da8279 Mon Sep 17 00:00:00 2001 From: Averi Kitsch Date: Fri, 19 Dec 2025 11:52:24 -0800 Subject: [PATCH 09/14] fix --- .../prebuilt_langchain_agent_template.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/samples/langchain_on_vertexai/prebuilt_langchain_agent_template.py b/samples/langchain_on_vertexai/prebuilt_langchain_agent_template.py index 4005bba1..b21e04fa 100644 --- a/samples/langchain_on_vertexai/prebuilt_langchain_agent_template.py +++ b/samples/langchain_on_vertexai/prebuilt_langchain_agent_template.py @@ -26,9 +26,9 @@ ) from langchain_core.documents import Document from langchain_google_vertexai import VertexAIEmbeddings +from vertexai import agent_engines from langchain_google_alloydb_pg import AlloyDBEngine, AlloyDBVectorStore -from vertexai import agent_engines # This sample requires a vector store table # Create these tables using `AlloyDBEngine` method `init_vectorstore_table()` @@ -99,11 +99,11 @@ def similarity_search(query: str) -> list[Document]: }, ), config={ - requirements="requirements.txt", - extra_packages=["config.py"], + "requirements": "requirements.txt", + "extra_packages": ["config.py"], }, display_name="PrebuiltAgent", - sys_version="3.11" + sys_version="3.11", ) # type: ignore[arg-type] print(remote_app.query(input="movies about engineers")) # type: ignore[attr-defined] From 2f7a919e2de5b1bf4cf712708e132e646d17389b Mon Sep 17 00:00:00 2001 From: Averi Kitsch Date: Fri, 19 Dec 2025 12:05:34 -0800 Subject: [PATCH 10/14] Update prebuilt_langchain_agent_template.py --- .../prebuilt_langchain_agent_template.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/samples/langchain_on_vertexai/prebuilt_langchain_agent_template.py b/samples/langchain_on_vertexai/prebuilt_langchain_agent_template.py index b21e04fa..ec100719 100644 --- a/samples/langchain_on_vertexai/prebuilt_langchain_agent_template.py +++ b/samples/langchain_on_vertexai/prebuilt_langchain_agent_template.py @@ -101,9 +101,9 @@ def similarity_search(query: str) -> list[Document]: config={ "requirements": "requirements.txt", "extra_packages": ["config.py"], - }, - display_name="PrebuiltAgent", - sys_version="3.11", + "display_name": "PrebuiltAgent", + "sys_version": "3.11" + } ) # type: ignore[arg-type] print(remote_app.query(input="movies about engineers")) # type: ignore[attr-defined] From 34360c0a7b082ee3dbed6da9f3bfed65ac800f98 Mon Sep 17 00:00:00 2001 From: Averi Kitsch Date: Fri, 19 Dec 2025 12:22:45 -0800 Subject: [PATCH 11/14] Update prebuilt_langchain_agent_template.py --- .../langchain_on_vertexai/prebuilt_langchain_agent_template.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/langchain_on_vertexai/prebuilt_langchain_agent_template.py b/samples/langchain_on_vertexai/prebuilt_langchain_agent_template.py index ec100719..7b12c659 100644 --- a/samples/langchain_on_vertexai/prebuilt_langchain_agent_template.py +++ b/samples/langchain_on_vertexai/prebuilt_langchain_agent_template.py @@ -91,7 +91,7 @@ def similarity_search(query: str) -> list[Document]: DISPLAY_NAME = os.getenv("DISPLAY_NAME") or "PrebuiltAgent" remote_app = client.agent_engines.create( - agent_engines.LangchainAgent( + agent=agent_engines.LangchainAgent( model="gemini-2.0-flash-001", tools=[similarity_search], # type: ignore[list-item] model_kwargs={ From ea2e3b27c8c27978f3453bccbff91e71bac5fa23 Mon Sep 17 00:00:00 2001 From: Averi Kitsch Date: Fri, 19 Dec 2025 12:26:17 -0800 Subject: [PATCH 12/14] Update prebuilt_langchain_agent_template.py --- .../langchain_on_vertexai/prebuilt_langchain_agent_template.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/samples/langchain_on_vertexai/prebuilt_langchain_agent_template.py b/samples/langchain_on_vertexai/prebuilt_langchain_agent_template.py index 7b12c659..a4531b42 100644 --- a/samples/langchain_on_vertexai/prebuilt_langchain_agent_template.py +++ b/samples/langchain_on_vertexai/prebuilt_langchain_agent_template.py @@ -101,8 +101,7 @@ def similarity_search(query: str) -> list[Document]: config={ "requirements": "requirements.txt", "extra_packages": ["config.py"], - "display_name": "PrebuiltAgent", - "sys_version": "3.11" + "display_name": "PrebuiltAgent" } ) # type: ignore[arg-type] From 5a5fa72d006dce7c37c2e747429217414923eb02 Mon Sep 17 00:00:00 2001 From: Averi Kitsch Date: Fri, 19 Dec 2025 13:55:34 -0800 Subject: [PATCH 13/14] Update prebuilt_langchain_agent_template.py --- .../langchain_on_vertexai/prebuilt_langchain_agent_template.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/samples/langchain_on_vertexai/prebuilt_langchain_agent_template.py b/samples/langchain_on_vertexai/prebuilt_langchain_agent_template.py index a4531b42..2107f28b 100644 --- a/samples/langchain_on_vertexai/prebuilt_langchain_agent_template.py +++ b/samples/langchain_on_vertexai/prebuilt_langchain_agent_template.py @@ -21,6 +21,7 @@ PASSWORD, PROJECT_ID, REGION, + STAGING_BUCKET, TABLE_NAME, USER, ) @@ -98,6 +99,7 @@ def similarity_search(query: str) -> list[Document]: "temperature": 0.1, }, ), + staging_bucket=STAGING_BUCKET, config={ "requirements": "requirements.txt", "extra_packages": ["config.py"], From 13d9bf4558e76378886cce903d33b4dbc93a2b6e Mon Sep 17 00:00:00 2001 From: Averi Kitsch Date: Fri, 19 Dec 2025 16:05:04 -0800 Subject: [PATCH 14/14] Update prebuilt_langchain_agent_template.py --- .../langchain_on_vertexai/prebuilt_langchain_agent_template.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/langchain_on_vertexai/prebuilt_langchain_agent_template.py b/samples/langchain_on_vertexai/prebuilt_langchain_agent_template.py index 2107f28b..f51d03e2 100644 --- a/samples/langchain_on_vertexai/prebuilt_langchain_agent_template.py +++ b/samples/langchain_on_vertexai/prebuilt_langchain_agent_template.py @@ -86,6 +86,7 @@ def similarity_search(query: str) -> list[Document]: # print(app.query(input="movies about engineers")) # Initialize VertexAI +vertexai.init(project=PROJECT_ID, location="us-central1", staging_bucket=STAGING_BUCKET) client = vertexai.Client(project=PROJECT_ID, location="us-central1") # Deploy to VertexAI @@ -99,7 +100,6 @@ def similarity_search(query: str) -> list[Document]: "temperature": 0.1, }, ), - staging_bucket=STAGING_BUCKET, config={ "requirements": "requirements.txt", "extra_packages": ["config.py"],