@@ -56,6 +56,9 @@ class PrometheusConfig(BaseModel):
5656 rules_cache_duration_seconds : Union [int , None ] = 1800 # 30 minutes
5757 additional_labels : Optional [Dict [str , str ]] = None
5858 prometheus_ssl_enabled : bool = True
59+ query_response_size_limit : Optional [int ] = (
60+ 80000 # Limit the max number of characters in a query result to proactively prevent truncation and advise LLM to query less data
61+ )
5962
6063 @field_validator ("prometheus_url" )
6164 def ensure_trailing_slash (cls , v : Optional [str ]) -> Optional [str ]:
@@ -833,8 +836,12 @@ def _invoke(
833836 data_str_preview = json .dumps (result_data )
834837 data_size_chars = len (data_str_preview )
835838
836- # If data is too large (>80K chars), provide summary instead
837- if data_size_chars > 80000 :
839+ # Provide summary if data is too large
840+ if (
841+ self .toolset .config .query_response_size_limit
842+ and data_size_chars
843+ > self .toolset .config .query_response_size_limit
844+ ):
838845 response_data ["data_summary" ] = (
839846 create_data_summary_for_large_result (
840847 result_data ,
@@ -1020,8 +1027,12 @@ def _invoke(
10201027 data_str_preview = json .dumps (result_data )
10211028 data_size_chars = len (data_str_preview )
10221029
1023- # If data is too large (>80K chars), provide summary instead
1024- if data_size_chars > 80000 :
1030+ # Provide summary if data is too large
1031+ if (
1032+ self .toolset .config .query_response_size_limit
1033+ and data_size_chars
1034+ > self .toolset .config .query_response_size_limit
1035+ ):
10251036 response_data ["data_summary" ] = (
10261037 create_data_summary_for_large_result (
10271038 result_data , query , data_size_chars , is_range_query = True
0 commit comments