fix: Add runtime parameter to compress_messages method(#803)

* fix: Add runtime parameter to compress_messages method(#803)

    The compress_messages method was being called by PreModelHookMiddleware
    with both state and runtime parameters, but only accepted state parameter.
    This caused a TypeError when the middleware executed the pre_model_hook.

    Added optional runtime parameter to compress_messages signature to match
    the expected interface while maintaining backward compatibility.

* Update the code with the review comments
This commit is contained in:
Willem Jiang
2026-01-07 20:36:15 +08:00
committed by GitHub
parent d4ab77de5c
commit a376b0cb4e
2 changed files with 30 additions and 1 deletions

View File

@@ -3,6 +3,8 @@ import copy
import logging
from typing import List
from langgraph.runtime import Runtime
from langchain_core.messages import (
AIMessage,
BaseMessage,
@@ -144,12 +146,13 @@ class ContextManager:
"""
return self.count_tokens(messages) > self.token_limit
def compress_messages(self, state: dict) -> List[BaseMessage]:
def compress_messages(self, state: dict, runtime: Runtime | None = None) -> dict:
"""
Compress messages to fit within token limit
Args:
state: state with original messages
runtime: Optional runtime parameter (not used but required for middleware compatibility)
Returns:
Compressed state with compressed messages